summaryrefslogtreecommitdiff
path: root/tests/i18n
diff options
context:
space:
mode:
authorLorenzo Peña <lorinkoz@gmail.com>2024-07-23 12:06:29 +0200
committerSarah Boyce <42296566+sarahboyce@users.noreply.github.com>2024-07-25 09:38:46 +0200
commit0e94f292cda632153f2b3d9a9037eb0141ae9c2e (patch)
treeb4441d84b721f8154afa9ebd9b4db22e0fc89f13 /tests/i18n
parent2c024c9ac096d06d9e78d1ae02b52f73a45eadf8 (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.py11
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")