Fixed #33346 -- Fixed SimpleTestCase.assertFormsetError() crash on a formset named "form".
Thanks OutOfFocus4 for the report.
Regression in 456466d932
.
This commit is contained in:
parent
8a4e506760
commit
cb383753c0
|
@ -572,7 +572,7 @@ class SimpleTestCase(unittest.TestCase):
|
|||
# Search all contexts for the error.
|
||||
found_formset = False
|
||||
for i, context in enumerate(contexts):
|
||||
if formset not in context:
|
||||
if formset not in context or not hasattr(context[formset], 'forms'):
|
||||
continue
|
||||
found_formset = True
|
||||
for err in errors:
|
||||
|
|
|
@ -9,4 +9,6 @@ Django 4.0.1 fixes several bugs in 4.0.
|
|||
Bugfixes
|
||||
========
|
||||
|
||||
* ...
|
||||
* Fixed a regression in Django 4.0 that caused a crash of
|
||||
:meth:`~django.test.SimpleTestCase.assertFormsetError` on a formset named
|
||||
``form`` (:ticket:`33346`).
|
||||
|
|
|
@ -1512,6 +1512,16 @@ class AssertFormsetErrorTests(SimpleTestCase):
|
|||
])
|
||||
self.assertFormsetError(response, 'formset', None, None, 'error')
|
||||
|
||||
def test_formset_named_form(self):
|
||||
formset = TestFormset.invalid()
|
||||
# The mocked context emulates the template-based rendering of the
|
||||
# formset.
|
||||
response = mock.Mock(context=[
|
||||
{'form': formset},
|
||||
{'form': formset.management_form},
|
||||
])
|
||||
self.assertFormsetError(response, 'form', 0, 'field', 'invalid value')
|
||||
|
||||
|
||||
class FirstUrls:
|
||||
urlpatterns = [path('first/', empty_response, name='first')]
|
||||
|
|
Loading…
Reference in New Issue