diff --git a/tests/validators.py b/tests/validators.py index 3efd15d62..e8a48b211 100644 --- a/tests/validators.py +++ b/tests/validators.py @@ -98,6 +98,7 @@ def test_length(self): self.assertEqual(length(min=6)(self.form, field), None) self.assertRaises(ValidationError, length(max=5), self.form, field) self.assertEqual(length(max=6)(self.form, field), None) + self.assertEqual(length(min=6,max=6)(self.form, field), None) self.assertRaises(AssertionError, length) self.assertRaises(AssertionError, length, min=5, max=2) @@ -108,6 +109,7 @@ def test_length(self): self.assertTrue('at least 8' in grab(min=8)) self.assertTrue('longer than 5' in grab(max=5)) self.assertTrue('between 2 and 5' in grab(min=2, max=5)) + self.assertTrue('exactly 5' in grab(min=5, max=5)) def test_required(self): self.assertEqual(required()(self.form, DummyField('foobar')), None) diff --git a/wtforms/validators.py b/wtforms/validators.py index 12d678a44..280e8f14b 100644 --- a/wtforms/validators.py +++ b/wtforms/validators.py @@ -100,6 +100,9 @@ def __call__(self, form, field): elif self.min == -1: message = field.ngettext('Field cannot be longer than %(max)d character.', 'Field cannot be longer than %(max)d characters.', self.max) + elif self.min == self.max: + message = field.ngettext('Field must be exactly %(max)d character long.', + 'Field must be exactly %(max)d characters long.', self.max) else: message = field.gettext('Field must be between %(min)d and %(max)d characters long.')