From 75427ad59ecbedb6b80adb83dcb425c7b0f36466 Mon Sep 17 00:00:00 2001 From: Yugong Ge Date: Tue, 24 Feb 2026 16:01:07 +0800 Subject: [PATCH] Add tests for i18n message key consistency --- tests/unit/test_language_consistency.py | 40 +++++++++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 tests/unit/test_language_consistency.py diff --git a/tests/unit/test_language_consistency.py b/tests/unit/test_language_consistency.py new file mode 100644 index 0000000..b198b76 --- /dev/null +++ b/tests/unit/test_language_consistency.py @@ -0,0 +1,40 @@ +from __future__ import annotations + +import importlib +import sys +import types + + +def _import_language_module(): + """Import glitter.language with a lightweight rich stub when needed.""" + + if "rich.text" not in sys.modules: + rich_module = types.ModuleType("rich") + rich_text_module = types.ModuleType("rich.text") + + class _FakeText: + def __init__(self, value: str) -> None: + self.plain = value + + def stylize(self, style: str) -> None: # noqa: ARG002 + return None + + rich_text_module.Text = _FakeText + sys.modules["rich"] = rich_module + sys.modules["rich.text"] = rich_text_module + + return importlib.import_module("glitter.language") + + +def test_message_keys_are_consistent_between_languages() -> None: + language = _import_language_module() + en_keys = set(language.MESSAGES["en"].keys()) + zh_keys = set(language.MESSAGES["zh"].keys()) + assert en_keys == zh_keys + + +def test_message_tones_only_reference_existing_message_keys() -> None: + language = _import_language_module() + message_keys = set(language.MESSAGES["en"].keys()) + tone_keys = set(language.MESSAGE_TONES.keys()) + assert tone_keys <= message_keys