summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorScott Fitsimones <iscottonline@gmail.com>2019-04-05 21:40:46 -0700
committerMariusz Felisiak <felisiak.mariusz@gmail.com>2019-04-19 08:21:29 +0200
commit95811c3de9334c313522982c3d125a8c2ff7ab72 (patch)
treed40279328801156f5555d298766c2a342ceeff2f /tests
parentbb54a2daeea5dde2fca0b7feddd94e26ea69b619 (diff)
[2.2.x] Fixed #30328 -- Fixed crash of IntegerField.validators when limit_value in a custom validator is callable.
Backport of a14c0fda15db7e0eb982ac7b68d47b45fc95b4cb from master
Diffstat (limited to 'tests')
-rw-r--r--tests/model_fields/test_integerfield.py44
1 files changed, 24 insertions, 20 deletions
diff --git a/tests/model_fields/test_integerfield.py b/tests/model_fields/test_integerfield.py
index 5c7ba47fbb..626b67b00b 100644
--- a/tests/model_fields/test_integerfield.py
+++ b/tests/model_fields/test_integerfield.py
@@ -98,27 +98,31 @@ class IntegerFieldTests(TestCase):
"""
min_backend_value, max_backend_value = self.backend_range
- if min_backend_value is not None:
- min_custom_value = min_backend_value + 1
- ranged_value_field = self.model._meta.get_field('value').__class__(
- validators=[validators.MinValueValidator(min_custom_value)]
- )
- field_range_message = validators.MinValueValidator.message % {
- 'limit_value': min_custom_value,
- }
- with self.assertRaisesMessage(ValidationError, "[%r]" % field_range_message):
- ranged_value_field.run_validators(min_backend_value - 1)
+ for callable_limit in (True, False):
+ with self.subTest(callable_limit=callable_limit):
+ if min_backend_value is not None:
+ min_custom_value = min_backend_value + 1
+ limit_value = (lambda: min_custom_value) if callable_limit else min_custom_value
+ ranged_value_field = self.model._meta.get_field('value').__class__(
+ validators=[validators.MinValueValidator(limit_value)]
+ )
+ field_range_message = validators.MinValueValidator.message % {
+ 'limit_value': min_custom_value,
+ }
+ with self.assertRaisesMessage(ValidationError, '[%r]' % field_range_message):
+ ranged_value_field.run_validators(min_backend_value - 1)
- if max_backend_value is not None:
- max_custom_value = max_backend_value - 1
- ranged_value_field = self.model._meta.get_field('value').__class__(
- validators=[validators.MaxValueValidator(max_custom_value)]
- )
- field_range_message = validators.MaxValueValidator.message % {
- 'limit_value': max_custom_value,
- }
- with self.assertRaisesMessage(ValidationError, "[%r]" % field_range_message):
- ranged_value_field.run_validators(max_backend_value + 1)
+ if max_backend_value is not None:
+ max_custom_value = max_backend_value - 1
+ limit_value = (lambda: max_custom_value) if callable_limit else max_custom_value
+ ranged_value_field = self.model._meta.get_field('value').__class__(
+ validators=[validators.MaxValueValidator(limit_value)]
+ )
+ field_range_message = validators.MaxValueValidator.message % {
+ 'limit_value': max_custom_value,
+ }
+ with self.assertRaisesMessage(ValidationError, '[%r]' % field_range_message):
+ ranged_value_field.run_validators(max_backend_value + 1)
def test_types(self):
instance = self.model(value=0)