diff options
| author | Nick Pope <nick.pope@flightdataservices.com> | 2018-09-06 12:49:25 +0100 |
|---|---|---|
| committer | Carlton Gibson <carlton.gibson@noumenal.es> | 2018-09-06 13:49:25 +0200 |
| commit | 570402ffd7efd529eb597d86525b80a6fbfca0e7 (patch) | |
| tree | 6c0c75d664f7715290682c5d82923f07aac4805c /tests/check_framework | |
| parent | ccf870ebf5a9f9b44711a08549833f97ef3f7a41 (diff) | |
Refs #29713 -- Improved error message from translation system check.
Diffstat (limited to 'tests/check_framework')
| -rw-r--r-- | tests/check_framework/test_translation.py | 68 |
1 files changed, 35 insertions, 33 deletions
diff --git a/tests/check_framework/test_translation.py b/tests/check_framework/test_translation.py index 9ff698c29f..8b8757c54e 100644 --- a/tests/check_framework/test_translation.py +++ b/tests/check_framework/test_translation.py @@ -1,39 +1,41 @@ -from django.core.checks.translation import check_setting_language_code +from django.core.checks.translation import E001, check_setting_language_code from django.test import SimpleTestCase, override_settings class TranslationCheckTests(SimpleTestCase): - @override_settings(LANGUAGE_CODE="eu") - def test_valid_language_code_format_ll_only(self): - result = check_setting_language_code(None) - self.assertEqual(len(result), 0) + def test_valid_language_code(self): + tags = ( + 'en', # language + 'mas', # language + 'sgn-ase', # language+extlang + 'fr-CA', # language+region + 'es-419', # language+region + 'zh-Hans', # language+script + 'ca-ES-valencia', # language+region+variant + # FIXME: The following should be invalid: + 'sr@latin', # language+script + ) + for tag in tags: + with self.subTest(tag), override_settings(LANGUAGE_CODE=tag): + self.assertEqual(check_setting_language_code(None), []) - @override_settings(LANGUAGE_CODE="eü") - def test_invalid_language_code_format_ll_only(self): - result = check_setting_language_code(None) - self.assertEqual(len(result), 1) - error = result[0] - self.assertEqual(error.id, 'translation.E001') - self.assertEqual(error.msg, ( - "LANGUAGE_CODE in settings.py is eü. It should be in the form ll or ll-cc where ll is the language and cc " - "is the country. Examples include: it, de-at, es, pt-br. The full set of language codes specifications is " - "outlined by https://en.wikipedia.org/wiki/IETF_language_tag#Syntax_of_language_tags" - )) - - @override_settings(LANGUAGE_CODE="en-US") - def test_valid_language_code_format_ll_cc(self): - result = check_setting_language_code(None) - self.assertEqual(len(result), 0) - - @override_settings(LANGUAGE_CODE="en_US") - def test_invalid_language_code_format_ll_cc(self): - result = check_setting_language_code(None) - self.assertEqual(len(result), 1) - error = result[0] - self.assertEqual(error.id, 'translation.E001') - self.assertEqual(error.msg, ( - "LANGUAGE_CODE in settings.py is en_US. It should be in the form ll or ll-cc where ll is the language and " - "cc is the country. Examples include: it, de-at, es, pt-br. The full set of language codes specifications " - "is outlined by https://en.wikipedia.org/wiki/IETF_language_tag#Syntax_of_language_tags" - )) + def test_invalid_language_code(self): + tags = ( + 'eü', # non-latin characters. + 'en_US', # locale format. + 'en--us', # empty subtag. + '-en', # leading separator. + 'en-', # trailing separator. + 'en-US.UTF-8', # language tag w/ locale encoding. + 'en_US.UTF-8', # locale format - languate w/ region and encoding. + 'ca_ES@valencia', # locale format - language w/ region and variant. + # FIXME: The following should be invalid: + # 'sr@latin', # locale instead of language tag. + ) + for tag in tags: + with self.subTest(tag), override_settings(LANGUAGE_CODE=tag): + result = check_setting_language_code(None) + self.assertEqual(result, [E001]) + self.assertEqual(result[0].id, 'translation.E001') + self.assertEqual(result[0].msg, 'You have provided an invalid value for the LANGUAGE_CODE setting.') |
