Opened 59 minutes ago
Last modified 40 minutes ago
#37463 assigned Bug
legend_tag() can double-render a required_css_class (attrs mutation)
| Reported by: | Jacob Walls | Owned by: | Jacob Walls |
|---|---|---|---|
| Component: | Forms | Version: | 6.1 |
| Severity: | Release blocker | Keywords: | boundfield, label, legend |
| Cc: | Varun Kasyap Pentamaraju | Triage Stage: | Unreviewed |
| Has patch: | yes | Needs documentation: | no |
| Needs tests: | no | Patch needs improvement: | no |
| Easy pickings: | yes | UI/UX: | no |
Description
We have a minor regression with legend_tag() from 0eec2a163a4b2ea4e82c53ae1d7b71bf43ac911d. We just need to not mutate any attrs that are passed so we don't get double-rendering in some cases:
def test_legend_has_required_css_class_multiple_render(self):
class SomeForm(Form):
required_css_class = "required"
field = CharField(max_length=10)
f = SomeForm({"field": "test"})
attrs = {"class": "foo"}
self.assertHTMLEqual(
f["field"].legend_tag(attrs=attrs),
'<legend class="foo required">Field:</legend>',
)
self.assertHTMLEqual(
f["field"].legend_tag(attrs=attrs),
'<legend class="foo required">Field:</legend>',
)
FAIL: test_legend_has_required_css_class_multiple_render (forms_tests.tests.test_forms.FormsTestCase.test_legend_has_required_css_class_multiple_render) ---------------------------------------------------------------------- Traceback (most recent call last): File "/Users/jwalls/django/tests/forms_tests/tests/test_forms.py", line 3989, in test_legend_has_required_css_class_multiple_render self.assertHTMLEqual( ~~~~~~~~~~~~~~~~~~~~^ f["field"].legend_tag(attrs=attrs), ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ '<legend class="foo required">Field:</legend>', ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ) ^ AssertionError: <legend class="foo required required"> Field: </legend> != <legend class="foo required"> Field: </legend> - <legend class="foo required required"> ? --------- + <legend class="foo required"> Field: </legend>
Note:
See TracTickets
for help on using tickets.
Easy picking, so only self-assigned due to the release blocker nature, given it's a few days out.
PR