Permalink
Browse files

Merge pull request #2637 from davidszotten/validator_comparisons

[1.7.x] Fixed #22588 -- Fix RegexValidator __eq__
  • Loading branch information...
andrewgodwin committed May 9, 2014
2 parents 7194d40 + 724a7bf commit d2e96b5792367af5aa0140f7e2673d654bb266df
Showing with 38 additions and 1 deletion.
  1. +11 −1 django/core/validators.py
  2. +27 −0 tests/validators/tests.py
View
@@ -51,7 +51,17 @@ def __call__(self, value):
raise ValidationError(self.message, code=self.code)
def __eq__(self, other):
- return isinstance(other, RegexValidator) and (self.regex == other.regex) and (self.message == other.message) and (self.code == other.code)
+ return (
+ isinstance(other, RegexValidator) and
+ self.regex.pattern == other.regex.pattern and
+ self.regex.flags == other.regex.flags and
+ (self.message == other.message) and
+ (self.code == other.code) and
+ (self.inverse_match == other.inverse_match)
+ )
+
+ def __ne__(self, other):
+ return not (self == other)
@deconstructible
View
@@ -296,6 +296,33 @@ def test_regex_equality(self):
RegexValidator(r'^(?:[a-z0-9\.\-]*)://'),
)
+ self.assertNotEqual(
+ RegexValidator('', flags=re.IGNORECASE),
+ RegexValidator(''),
+ )
+
+ self.assertNotEqual(
+ RegexValidator(''),
+ RegexValidator('', inverse_match=True),
+ )
+
+ def test_regex_equality_nocache(self):
+ pattern = r'^(?:[a-z0-9\.\-]*)://'
+ left = RegexValidator(pattern)
+ re.purge()
+ right = RegexValidator(pattern)
+
+ self.assertEqual(
+ left,
+ right,
+ )
+
+ def test_regex_equality_blank(self):
+ self.assertEqual(
+ RegexValidator(),
+ RegexValidator(),
+ )
+
def test_email_equality(self):
self.assertEqual(
EmailValidator(),

0 comments on commit d2e96b5

Please sign in to comment.