@@ -26,17 +26,23 @@ def find_format_keys(format_string: str) -> set[str]:
26
26
def test_format_key_validity (translation_filename : str ):
27
27
default_translation = load_translation ("en.json" )
28
28
translation = load_translation (translation_filename )
29
+ invalid_keys : list [tuple [str , list [str ]]] = []
30
+ missing_keys : list [tuple [str , list [str ]]] = []
29
31
for key in default_translation :
30
32
if key not in translation :
31
33
continue
32
34
default_keys = find_format_keys (default_translation [key ])
33
35
translation_keys = find_format_keys (translation [key ])
34
- assert default_keys .issuperset (
35
- translation_keys
36
- ), f"Translation { translation_filename } for key { key } is using an invalid format key ({ translation_keys .difference (default_keys )} )" # noqa: E501
37
- assert translation_keys .issuperset (
38
- default_keys
39
- ), f"Translation { translation_filename } for key { key } is missing format keys ({ default_keys .difference (translation_keys )} )" # noqa: E501
36
+ if not default_keys .issuperset (translation_keys ):
37
+ invalid_keys .append ((key , list (translation_keys .difference (default_keys ))))
38
+ if not translation_keys .issuperset (default_keys ):
39
+ missing_keys .append ((key , list (default_keys .difference (translation_keys ))))
40
+ assert (
41
+ len (invalid_keys ) == 0
42
+ ), f"Translation { translation_filename } has invalid format keys in some translations: { invalid_keys } " # noqa: E501
43
+ assert (
44
+ len (missing_keys ) == 0
45
+ ), f"Translation { translation_filename } is missing format keys in some translations: { missing_keys } " # noqa: E501
40
46
41
47
42
48
@pytest .mark .parametrize (["translation_filename" ], get_translation_filenames ())
0 commit comments