diff --git a/tools/chatgui-android/language-tests/README.md b/tools/chatgui-android/language-tests/README.md new file mode 100644 index 00000000..e321fbf2 --- /dev/null +++ b/tools/chatgui-android/language-tests/README.md @@ -0,0 +1,23 @@ +# Проверка языка приложения + +```sh +cd tools/chatgui-android +./gradlew :language-tests:test +``` + +Модуль компилирует настоящий `data/AppLanguage.kt` с отдельными host-моделями +Android/AppCompat. JDK-парсер читает настоящий `res/xml/locales_config.xml`; +список языков не дублируется в fixtures. Путь XML объявлен входом Gradle test. +Запрошенные языки и effective ресурсы меняются в тесте независимо. + +22 теста проверяют каталог/BCP47, закрытие XML parser при отказе, выбор и сброс +языка, ошибки чтения/записи AppCompat, включая отказ после публикации запроса, +локализованные строки и форматирование. Проверки `applied()` считают все четыре +владельца уведомлений, повторяют тот же locale после отказа, изолируют ошибки +и проверяют запрет mutators из фонового потока. + +Host-модели не запускают службы, аудио, ядро и Android Looper; они не проверяют +ART, реальную Activity recreation или реализацию хранилища AppCompat. +APK с настоящими Android/AndroidX API проверяется обычной NDK/Gradle-сборкой. +`:app:testDebugUnitTest` зависит от этого набора только как от задачи; +host-классы не включаются в classpath приложения или APK. diff --git a/tools/chatgui-android/language-tests/src/test/kotlin/com/utun/chat/data/AppLanguageRefreshTest.kt b/tools/chatgui-android/language-tests/src/test/kotlin/com/utun/chat/data/AppLanguageRefreshTest.kt index 12bcf45f..22070f28 100644 --- a/tools/chatgui-android/language-tests/src/test/kotlin/com/utun/chat/data/AppLanguageRefreshTest.kt +++ b/tools/chatgui-android/language-tests/src/test/kotlin/com/utun/chat/data/AppLanguageRefreshTest.kt @@ -23,6 +23,7 @@ class AppLanguageRefreshTest { context.resources.configuration.locales = LocaleListCompat.forLanguageTags("en-x-test-${++sequence}") ContextCompat.failContext = false AppCompatDelegate.failRead = false; AppCompatDelegate.failWrite = false + AppCompatDelegate.failWriteAfter = false AppCompatDelegate.requested = LocaleListCompat.forLanguageTags("ru") AppCompatDelegate.selections.clear() HostLanguageNotifications.attempts.clear(); HostLanguageNotifications.failures.clear()