mirror of
https://github.com/django/django.git
synced 2025-11-07 07:15:35 +00:00
[5.0.x] 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 in9e9792228a. Backport of0e94f292cdfrom main.
This commit is contained in:
committed by
Sarah Boyce
parent
41d8ef18ac
commit
e18601273a
@@ -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):
|
||||
@@ -2012,6 +2012,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