Move translation of ValueError to ValidationError into to_python where it belongs

This commit is contained in:
Per von Zweigbergk 2023-09-09 12:13:58 +02:00
parent 0da4940fe4
commit 1e6a800959
3 changed files with 9 additions and 11 deletions

View File

@ -30,7 +30,10 @@ class ExpandableNameField(forms.CharField):
if not value:
return ''
if re.search(ALPHANUMERIC_EXPANSION_PATTERN, value):
return list(expand_alphanumeric_pattern(value))
try:
return list(expand_alphanumeric_pattern(value))
except ValueError as e:
raise forms.ValidationError(*e.args)
return [value]

View File

@ -96,12 +96,7 @@ def expand_alphanumeric_pattern(pattern):
if not re.search(ALPHANUMERIC_EXPANSION_PATTERN, pattern):
raise ValueError(f"String {repr(pattern)} contains no valid alphanumeric patterns")
try:
yield from expand_alphanumeric_pattern_impl(pattern)
except ValueError as e:
# Unit tests expect forms.ValidationError to be thrown if patterns were "valid" at a first glance,
# but then turned out to be invalid when looking closer. So we preserve this behaviour here.
raise forms.ValidationError(*e.args)
yield from expand_alphanumeric_pattern_impl(pattern)
def expand_ipaddress_pattern(string, family):

View File

@ -269,19 +269,19 @@ class ExpandAlphanumeric(TestCase):
sorted(expand_alphanumeric_pattern('r[8--9]a'))
def test_invalid_range_alphanumeric(self):
with self.assertRaises(forms.ValidationError):
with self.assertRaises(ValueError):
sorted(expand_alphanumeric_pattern('r[9-a]a'))
with self.assertRaises(forms.ValidationError):
with self.assertRaises(ValueError):
sorted(expand_alphanumeric_pattern('r[a-9]a'))
def test_invalid_range_bounds(self):
with self.assertRaises(forms.ValidationError):
with self.assertRaises(ValueError):
sorted(expand_alphanumeric_pattern('r[9-8]a'))
sorted(expand_alphanumeric_pattern('r[b-a]a'))
def test_invalid_range_len(self):
with self.assertRaises(forms.ValidationError):
with self.assertRaises(ValueError):
sorted(expand_alphanumeric_pattern('r[a-bb]a'))
def test_invalid_set(self):