diff options
| author | Yehonatan Daniv <maggotfish@gmail.com> | 2014-05-01 12:55:52 +0300 |
|---|---|---|
| committer | Tim Graham <timograham@gmail.com> | 2014-05-01 09:28:11 -0400 |
| commit | e2e4cdba1178ebcfd95c19eb063abd55b4afbcbb (patch) | |
| tree | 1140208cc39c5153d328ef801dc24a0763f2250e /tests/validation | |
| parent | 45c2d1f5d95dfbd6fcb306057e4c7338fb37a1bf (diff) | |
| download | django-e2e4cdba1178ebcfd95c19eb063abd55b4afbcbb.tar.gz | |
Fixed #22539 -- Copied exclude argument in Model.full_clean() to prevent side effects.
Diffstat (limited to 'tests/validation')
| -rw-r--r-- | tests/validation/__init__.py | 4 | ||||
| -rw-r--r-- | tests/validation/tests.py | 7 |
2 files changed, 9 insertions, 2 deletions
diff --git a/tests/validation/__init__.py b/tests/validation/__init__.py index ba35963744..01575c1b10 100644 --- a/tests/validation/__init__.py +++ b/tests/validation/__init__.py @@ -3,9 +3,9 @@ from django.test import TestCase class ValidationTestCase(TestCase): - def assertFailsValidation(self, clean, failed_fields): + def assertFailsValidation(self, clean, failed_fields, **kwargs): with self.assertRaises(ValidationError) as cm: - clean() + clean(**kwargs) self.assertEqual(sorted(failed_fields), sorted(cm.exception.message_dict)) def assertFieldFailsValidationWithMessage(self, clean, field_name, message): diff --git a/tests/validation/tests.py b/tests/validation/tests.py index 7f81cafccf..6122444e3d 100644 --- a/tests/validation/tests.py +++ b/tests/validation/tests.py @@ -59,6 +59,13 @@ class BaseModelValidationTests(ValidationTestCase): mtv = ModelToValidate(number=10, name='Some Name', slug='##invalid##') self.assertFailsValidation(mtv.full_clean, ['slug']) + def test_full_clean_does_not_mutate_exclude(self): + mtv = ModelToValidate(f_with_custom_validator=42) + exclude = ['number'] + self.assertFailsValidation(mtv.full_clean, ['name'], exclude=exclude) + self.assertEqual(len(exclude), 1) + self.assertEqual(exclude[0], 'number') + class ArticleForm(forms.ModelForm): class Meta: |
