Document language host tests and their runtime boundaries

This commit is contained in:
evgeny committed 2026-10-28 14:43:27 +01:00
1 parent 3dfedc8822
commit 7b8e0a95bb
2 files changed
+24

No files matched your search

@@ -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.
@@ -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()