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>

Change History (1)

comment:1 by Jacob Walls, 40 minutes ago

Has patch: set

Easy picking, so only self-assigned due to the release blocker nature, given it's a few days out.

​PR

Note: See TracTickets for help on using tickets.
Back to Top