mirror of
https://github.com/django/django.git
synced 2025-10-31 09:41:08 +00:00
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 9e9792228a.
This commit is contained in:
committed by
Sarah Boyce
parent
2c024c9ac0
commit
0e94f292cd
@@ -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")
|
||||
|
||||
Reference in New Issue
Block a user