From 7b8e0a95bbc4628eeb1e6c0262a140f2e6e22b8a Mon Sep 17 00:00:00 2001 From: evgeny Date: Wed, 28 Oct 2026 13:34:32 +0100 Subject: [PATCH] Document language host tests and their runtime boundaries --- .../chatgui-android/language-tests/README.md | 23 +++++++++++++++++++ .../utun/chat/data/AppLanguageRefreshTest.kt | 1 + 2 files changed, 24 insertions(+) create mode 100644 tools/chatgui-android/language-tests/README.md 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()