prep 0.2.6
This commit is contained in:
89
tests/unit/test_i18n.py
Normal file
89
tests/unit/test_i18n.py
Normal file
@@ -0,0 +1,89 @@
|
||||
from __future__ import annotations
|
||||
|
||||
from pathlib import Path
|
||||
import json
|
||||
import sys
|
||||
import tempfile
|
||||
import unittest
|
||||
|
||||
|
||||
SRC_ROOT = Path(__file__).resolve().parents[2] / "src"
|
||||
|
||||
if str(SRC_ROOT) not in sys.path:
|
||||
sys.path.insert(0, str(SRC_ROOT))
|
||||
|
||||
|
||||
from ffx.i18n import ( # noqa: E402
|
||||
detect_system_language,
|
||||
read_configured_language,
|
||||
resolve_application_language,
|
||||
set_current_language,
|
||||
t,
|
||||
)
|
||||
from ffx.iso_language import IsoLanguage # noqa: E402
|
||||
|
||||
|
||||
class I18nTests(unittest.TestCase):
|
||||
def tearDown(self):
|
||||
set_current_language("de")
|
||||
|
||||
def test_cli_language_takes_precedence_over_config_and_system(self):
|
||||
self.assertEqual(
|
||||
"es",
|
||||
resolve_application_language(
|
||||
cli_language="es",
|
||||
config_language="fr",
|
||||
system_language="ja",
|
||||
),
|
||||
)
|
||||
|
||||
def test_config_language_takes_precedence_over_system(self):
|
||||
self.assertEqual(
|
||||
"fr",
|
||||
resolve_application_language(
|
||||
config_language="fr",
|
||||
system_language="ja",
|
||||
),
|
||||
)
|
||||
|
||||
def test_system_language_is_used_when_no_cli_or_config_is_present(self):
|
||||
self.assertEqual("ja", resolve_application_language(system_language="ja"))
|
||||
|
||||
def test_german_is_default_when_no_supported_language_is_available(self):
|
||||
self.assertEqual(
|
||||
"de",
|
||||
resolve_application_language(
|
||||
env={
|
||||
"LANG": "C.UTF-8",
|
||||
"LC_ALL": "C.UTF-8",
|
||||
"LC_MESSAGES": "C.UTF-8",
|
||||
}
|
||||
),
|
||||
)
|
||||
|
||||
def test_system_language_detection_normalizes_norwegian_bokmal(self):
|
||||
self.assertEqual(
|
||||
"nb",
|
||||
detect_system_language({"LANG": "nb_NO.UTF-8"}),
|
||||
)
|
||||
|
||||
def test_read_configured_language_normalizes_language_code(self):
|
||||
with tempfile.TemporaryDirectory() as tempdir:
|
||||
config_path = Path(tempdir) / "ffx.json"
|
||||
config_path.write_text(
|
||||
json.dumps({"language": "pt_BR.UTF-8"}),
|
||||
encoding="utf-8",
|
||||
)
|
||||
self.assertEqual("pt", read_configured_language(config_path))
|
||||
|
||||
def test_phrase_translation_uses_catalog_for_selected_language(self):
|
||||
set_current_language("fr")
|
||||
self.assertEqual("Ajouter", t("Add"))
|
||||
|
||||
def test_iso_language_labels_use_catalog_for_selected_language(self):
|
||||
set_current_language("de")
|
||||
self.assertEqual("Deutsch", IsoLanguage.GERMAN.label())
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
unittest.main()
|
||||
Reference in New Issue
Block a user