diff options
| author | Lorenzo Peña <lorinkoz@gmail.com> | 2024-07-23 12:06:29 +0200 |
|---|---|---|
| committer | Sarah Boyce <42296566+sarahboyce@users.noreply.github.com> | 2024-07-25 09:38:46 +0200 |
| commit | 0e94f292cda632153f2b3d9a9037eb0141ae9c2e (patch) | |
| tree | b4441d84b721f8154afa9ebd9b4db22e0fc89f13 /tests/i18n | |
| parent | 2c024c9ac096d06d9e78d1ae02b52f73a45eadf8 (diff) | |
Fixed #35627 -- Raised a LookupError rather than an unhandled ValueError in get_supported_language_variant().
LocaleMiddleware didn't handle the ValueError raised by
get_supported_language_variant() when language codes were
over 500 characters.
Regression in 9e9792228a6bb5d6402a5d645bc3be4cf364aefb.
Diffstat (limited to 'tests/i18n')
| -rw-r--r-- | tests/i18n/tests.py | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/tests/i18n/tests.py b/tests/i18n/tests.py index 1bd1dadf93..8f8a33e5b0 100644 --- a/tests/i18n/tests.py +++ b/tests/i18n/tests.py @@ -1673,14 +1673,13 @@ class MiscTests(SimpleTestCase): g("xyz") with self.assertRaises(LookupError): g("xy-zz") - msg = "'lang_code' exceeds the maximum accepted length" with self.assertRaises(LookupError): g("x" * LANGUAGE_CODE_MAX_LENGTH) - with self.assertRaisesMessage(ValueError, msg): + with self.assertRaises(LookupError): g("x" * (LANGUAGE_CODE_MAX_LENGTH + 1)) # 167 * 3 = 501 which is LANGUAGE_CODE_MAX_LENGTH + 1. self.assertEqual(g("en-" * 167), "en") - with self.assertRaisesMessage(ValueError, msg): + with self.assertRaises(LookupError): g("en-" * 167, strict=True) self.assertEqual(g("en-" * 30000), "en") # catastrophic test @@ -1734,6 +1733,7 @@ class MiscTests(SimpleTestCase): ("/i-mingo/", "i-mingo"), ("/kl-tunumiit/", "kl-tunumiit"), ("/nan-hani-tw/", "nan-hani-tw"), + (f"/{'a' * 501}/", None), ] for path, language in tests: with self.subTest(path=path): @@ -2009,6 +2009,11 @@ class CountrySpecificLanguageTests(SimpleTestCase): lang = get_language_from_request(request) self.assertEqual("bg", lang) + def test_get_language_from_request_code_too_long(self): + request = self.rf.get("/", headers={"accept-language": "a" * 501}) + lang = get_language_from_request(request) + self.assertEqual("en-us", lang) + def test_get_language_from_request_null(self): lang = trans_null.get_language_from_request(None) self.assertEqual(lang, "en") |
