diff options
| author | Jon Dufresne <jon.dufresne@gmail.com> | 2018-01-20 23:09:10 -0800 |
|---|---|---|
| committer | Tim Graham <timograham@gmail.com> | 2018-01-21 02:09:10 -0500 |
| commit | ff05de760cc4ef4c7f188e163c722ec3bc1f0cbf (patch) | |
| tree | ba133d0ecea7521935c98cf1c058df4e6a9ff233 /tests/forms_tests | |
| parent | 4b0f39d9fb2033a9597e30ac13af162440b82ebc (diff) | |
Fixed #29038 -- Removed closing slash from HTML void tags.
Diffstat (limited to 'tests/forms_tests')
32 files changed, 817 insertions, 817 deletions
diff --git a/tests/forms_tests/field_tests/test_charfield.py b/tests/forms_tests/field_tests/test_charfield.py index ad91070571..cbacf4d0d7 100644 --- a/tests/forms_tests/field_tests/test_charfield.py +++ b/tests/forms_tests/field_tests/test_charfield.py @@ -145,7 +145,7 @@ class CharFieldTest(FormFieldAssertionsMixin, SimpleTestCase): def test_charfield_disabled(self): f = CharField(disabled=True) - self.assertWidgetRendersTo(f, '<input type="text" name="f" id="id_f" disabled required />') + self.assertWidgetRendersTo(f, '<input type="text" name="f" id="id_f" disabled required>') def test_null_characters_prohibited(self): f = CharField() diff --git a/tests/forms_tests/field_tests/test_datefield.py b/tests/forms_tests/field_tests/test_datefield.py index a8002d463c..bcc7db193a 100644 --- a/tests/forms_tests/field_tests/test_datefield.py +++ b/tests/forms_tests/field_tests/test_datefield.py @@ -22,7 +22,7 @@ class DateFieldTest(SimpleTestCase): # accept the input from the "as_hidden" rendering as well. self.assertHTMLEqual( a['mydate'].as_hidden(), - '<input type="hidden" name="mydate" value="2008-4-1" id="id_mydate" />', + '<input type="hidden" name="mydate" value="2008-4-1" id="id_mydate">', ) b = GetDate({'mydate': '2008-4-1'}) diff --git a/tests/forms_tests/field_tests/test_decimalfield.py b/tests/forms_tests/field_tests/test_decimalfield.py index 4e1828d53d..44ebebcf75 100644 --- a/tests/forms_tests/field_tests/test_decimalfield.py +++ b/tests/forms_tests/field_tests/test_decimalfield.py @@ -11,7 +11,7 @@ class DecimalFieldTest(FormFieldAssertionsMixin, SimpleTestCase): def test_decimalfield_1(self): f = DecimalField(max_digits=4, decimal_places=2) - self.assertWidgetRendersTo(f, '<input id="id_f" step="0.01" type="number" name="f" required />') + self.assertWidgetRendersTo(f, '<input id="id_f" step="0.01" type="number" name="f" required>') with self.assertRaisesMessage(ValidationError, "'This field is required.'"): f.clean('') with self.assertRaisesMessage(ValidationError, "'This field is required.'"): @@ -78,7 +78,7 @@ class DecimalFieldTest(FormFieldAssertionsMixin, SimpleTestCase): ) self.assertWidgetRendersTo( f, - '<input step="0.01" name="f" min="0.5" max="1.5" type="number" id="id_f" required />', + '<input step="0.01" name="f" min="0.5" max="1.5" type="number" id="id_f" required>', ) with self.assertRaisesMessage(ValidationError, "'Ensure this value is less than or equal to 1.5.'"): f.clean('1.6') @@ -136,7 +136,7 @@ class DecimalFieldTest(FormFieldAssertionsMixin, SimpleTestCase): f = DecimalField(max_digits=20) self.assertEqual(f.widget_attrs(NumberInput()), {'step': 'any'}) f = DecimalField(max_digits=6, widget=NumberInput(attrs={'step': '0.01'})) - self.assertWidgetRendersTo(f, '<input step="0.01" name="f" type="number" id="id_f" required />') + self.assertWidgetRendersTo(f, '<input step="0.01" name="f" type="number" id="id_f" required>') def test_decimalfield_localized(self): """ @@ -144,7 +144,7 @@ class DecimalFieldTest(FormFieldAssertionsMixin, SimpleTestCase): number input specific attributes. """ f = DecimalField(localize=True) - self.assertWidgetRendersTo(f, '<input id="id_f" name="f" type="text" required />') + self.assertWidgetRendersTo(f, '<input id="id_f" name="f" type="text" required>') def test_decimalfield_changed(self): f = DecimalField(max_digits=2, decimal_places=2) diff --git a/tests/forms_tests/field_tests/test_emailfield.py b/tests/forms_tests/field_tests/test_emailfield.py index 15481689b0..826524ae62 100644 --- a/tests/forms_tests/field_tests/test_emailfield.py +++ b/tests/forms_tests/field_tests/test_emailfield.py @@ -8,7 +8,7 @@ class EmailFieldTest(FormFieldAssertionsMixin, SimpleTestCase): def test_emailfield_1(self): f = EmailField() - self.assertWidgetRendersTo(f, '<input type="email" name="f" id="id_f" required />') + self.assertWidgetRendersTo(f, '<input type="email" name="f" id="id_f" required>') with self.assertRaisesMessage(ValidationError, "'This field is required.'"): f.clean('') with self.assertRaisesMessage(ValidationError, "'This field is required.'"): @@ -41,7 +41,7 @@ class EmailFieldTest(FormFieldAssertionsMixin, SimpleTestCase): f = EmailField(min_length=10, max_length=15) self.assertWidgetRendersTo( f, - '<input id="id_f" type="email" name="f" maxlength="15" minlength="10" required />', + '<input id="id_f" type="email" name="f" maxlength="15" minlength="10" required>', ) with self.assertRaisesMessage(ValidationError, "'Ensure this value has at least 10 characters (it has 9).'"): f.clean('a@foo.com') diff --git a/tests/forms_tests/field_tests/test_floatfield.py b/tests/forms_tests/field_tests/test_floatfield.py index b36942afa4..531396868a 100644 --- a/tests/forms_tests/field_tests/test_floatfield.py +++ b/tests/forms_tests/field_tests/test_floatfield.py @@ -10,7 +10,7 @@ class FloatFieldTest(FormFieldAssertionsMixin, SimpleTestCase): def test_floatfield_1(self): f = FloatField() - self.assertWidgetRendersTo(f, '<input step="any" type="number" name="f" id="id_f" required />') + self.assertWidgetRendersTo(f, '<input step="any" type="number" name="f" id="id_f" required>') with self.assertRaisesMessage(ValidationError, "'This field is required.'"): f.clean('') with self.assertRaisesMessage(ValidationError, "'This field is required.'"): @@ -49,7 +49,7 @@ class FloatFieldTest(FormFieldAssertionsMixin, SimpleTestCase): f = FloatField(max_value=1.5, min_value=0.5) self.assertWidgetRendersTo( f, - '<input step="any" name="f" min="0.5" max="1.5" type="number" id="id_f" required />', + '<input step="any" name="f" min="0.5" max="1.5" type="number" id="id_f" required>', ) with self.assertRaisesMessage(ValidationError, "'Ensure this value is less than or equal to 1.5.'"): f.clean('1.6') @@ -64,7 +64,7 @@ class FloatFieldTest(FormFieldAssertionsMixin, SimpleTestCase): f = FloatField(widget=NumberInput(attrs={'step': 0.01, 'max': 1.0, 'min': 0.0})) self.assertWidgetRendersTo( f, - '<input step="0.01" name="f" min="0.0" max="1.0" type="number" id="id_f" required />', + '<input step="0.01" name="f" min="0.0" max="1.0" type="number" id="id_f" required>', ) def test_floatfield_localized(self): @@ -73,7 +73,7 @@ class FloatFieldTest(FormFieldAssertionsMixin, SimpleTestCase): number input specific attributes. """ f = FloatField(localize=True) - self.assertWidgetRendersTo(f, '<input id="id_f" name="f" type="text" required />') + self.assertWidgetRendersTo(f, '<input id="id_f" name="f" type="text" required>') def test_floatfield_changed(self): f = FloatField() diff --git a/tests/forms_tests/field_tests/test_integerfield.py b/tests/forms_tests/field_tests/test_integerfield.py index f89885027b..a0cde40910 100644 --- a/tests/forms_tests/field_tests/test_integerfield.py +++ b/tests/forms_tests/field_tests/test_integerfield.py @@ -8,7 +8,7 @@ class IntegerFieldTest(FormFieldAssertionsMixin, SimpleTestCase): def test_integerfield_1(self): f = IntegerField() - self.assertWidgetRendersTo(f, '<input type="number" name="f" id="id_f" required />') + self.assertWidgetRendersTo(f, '<input type="number" name="f" id="id_f" required>') with self.assertRaisesMessage(ValidationError, "'This field is required.'"): f.clean('') with self.assertRaisesMessage(ValidationError, "'This field is required.'"): @@ -50,7 +50,7 @@ class IntegerFieldTest(FormFieldAssertionsMixin, SimpleTestCase): def test_integerfield_3(self): f = IntegerField(max_value=10) - self.assertWidgetRendersTo(f, '<input max="10" type="number" name="f" id="id_f" required />') + self.assertWidgetRendersTo(f, '<input max="10" type="number" name="f" id="id_f" required>') with self.assertRaisesMessage(ValidationError, "'This field is required.'"): f.clean(None) self.assertEqual(1, f.clean(1)) @@ -65,7 +65,7 @@ class IntegerFieldTest(FormFieldAssertionsMixin, SimpleTestCase): def test_integerfield_4(self): f = IntegerField(min_value=10) - self.assertWidgetRendersTo(f, '<input id="id_f" type="number" name="f" min="10" required />') + self.assertWidgetRendersTo(f, '<input id="id_f" type="number" name="f" min="10" required>') with self.assertRaisesMessage(ValidationError, "'This field is required.'"): f.clean(None) with self.assertRaisesMessage(ValidationError, "'Ensure this value is greater than or equal to 10.'"): @@ -79,7 +79,7 @@ class IntegerFieldTest(FormFieldAssertionsMixin, SimpleTestCase): def test_integerfield_5(self): f = IntegerField(min_value=10, max_value=20) - self.assertWidgetRendersTo(f, '<input id="id_f" max="20" type="number" name="f" min="10" required />') + self.assertWidgetRendersTo(f, '<input id="id_f" max="20" type="number" name="f" min="10" required>') with self.assertRaisesMessage(ValidationError, "'This field is required.'"): f.clean(None) with self.assertRaisesMessage(ValidationError, "'Ensure this value is greater than or equal to 10.'"): @@ -100,7 +100,7 @@ class IntegerFieldTest(FormFieldAssertionsMixin, SimpleTestCase): number input specific attributes. """ f1 = IntegerField(localize=True) - self.assertWidgetRendersTo(f1, '<input id="id_f" name="f" type="text" required />') + self.assertWidgetRendersTo(f1, '<input id="id_f" name="f" type="text" required>') def test_integerfield_float(self): f = IntegerField() diff --git a/tests/forms_tests/field_tests/test_multivaluefield.py b/tests/forms_tests/field_tests/test_multivaluefield.py index edb32957e3..fb99451f6c 100644 --- a/tests/forms_tests/field_tests/test_multivaluefield.py +++ b/tests/forms_tests/field_tests/test_multivaluefield.py @@ -128,15 +128,15 @@ class MultiValueFieldTest(SimpleTestCase): form.as_table(), """ <tr><th><label for="id_field1_0">Field1:</label></th> - <td><input type="text" name="field1_0" id="id_field1_0" required /> + <td><input type="text" name="field1_0" id="id_field1_0" required> <select multiple name="field1_1" id="id_field1_1" required> <option value="J">John</option> <option value="P">Paul</option> <option value="G">George</option> <option value="R">Ringo</option> </select> - <input type="text" name="field1_2_0" id="id_field1_2_0" required /> - <input type="text" name="field1_2_1" id="id_field1_2_1" required /></td></tr> + <input type="text" name="field1_2_0" id="id_field1_2_0" required> + <input type="text" name="field1_2_1" id="id_field1_2_1" required></td></tr> """, ) @@ -151,15 +151,15 @@ class MultiValueFieldTest(SimpleTestCase): form.as_table(), """ <tr><th><label for="id_field1_0">Field1:</label></th> - <td><input type="text" name="field1_0" value="some text" id="id_field1_0" required /> + <td><input type="text" name="field1_0" value="some text" id="id_field1_0" required> <select multiple name="field1_1" id="id_field1_1" required> <option value="J" selected>John</option> <option value="P" selected>Paul</option> <option value="G">George</option> <option value="R">Ringo</option> </select> - <input type="text" name="field1_2_0" value="2007-04-25" id="id_field1_2_0" required /> - <input type="text" name="field1_2_1" value="06:24:00" id="id_field1_2_1" required /></td></tr> + <input type="text" name="field1_2_0" value="2007-04-25" id="id_field1_2_0" required> + <input type="text" name="field1_2_1" value="06:24:00" id="id_field1_2_1" required></td></tr> """, ) diff --git a/tests/forms_tests/field_tests/test_nullbooleanfield.py b/tests/forms_tests/field_tests/test_nullbooleanfield.py index ff57394f07..55812612c9 100644 --- a/tests/forms_tests/field_tests/test_nullbooleanfield.py +++ b/tests/forms_tests/field_tests/test_nullbooleanfield.py @@ -27,8 +27,8 @@ class NullBooleanFieldTest(FormFieldAssertionsMixin, SimpleTestCase): hidden_nullbool2 = NullBooleanField(widget=HiddenInput, initial=False) f = HiddenNullBooleanForm() self.assertHTMLEqual( - '<input type="hidden" name="hidden_nullbool1" value="True" id="id_hidden_nullbool1" />' - '<input type="hidden" name="hidden_nullbool2" value="False" id="id_hidden_nullbool2" />', + '<input type="hidden" name="hidden_nullbool1" value="True" id="id_hidden_nullbool1">' + '<input type="hidden" name="hidden_nullbool2" value="False" id="id_hidden_nullbool2">', str(f) ) diff --git a/tests/forms_tests/field_tests/test_urlfield.py b/tests/forms_tests/field_tests/test_urlfield.py index 2ecf189112..52f1080cdc 100644 --- a/tests/forms_tests/field_tests/test_urlfield.py +++ b/tests/forms_tests/field_tests/test_urlfield.py @@ -8,7 +8,7 @@ class URLFieldTest(FormFieldAssertionsMixin, SimpleTestCase): def test_urlfield_1(self): f = URLField() - self.assertWidgetRendersTo(f, '<input type="url" name="f" id="id_f" required />') + self.assertWidgetRendersTo(f, '<input type="url" name="f" id="id_f" required>') with self.assertRaisesMessage(ValidationError, "'This field is required.'"): f.clean('') with self.assertRaisesMessage(ValidationError, "'This field is required.'"): @@ -88,7 +88,7 @@ class URLFieldTest(FormFieldAssertionsMixin, SimpleTestCase): def test_urlfield_5(self): f = URLField(min_length=15, max_length=20) - self.assertWidgetRendersTo(f, '<input id="id_f" type="url" name="f" maxlength="20" minlength="15" required />') + self.assertWidgetRendersTo(f, '<input id="id_f" type="url" name="f" maxlength="20" minlength="15" required>') with self.assertRaisesMessage(ValidationError, "'Ensure this value has at least 15 characters (it has 12).'"): f.clean('http://f.com') self.assertEqual('http://example.com', f.clean('http://example.com')) diff --git a/tests/forms_tests/tests/test_forms.py b/tests/forms_tests/tests/test_forms.py index 4ec21f869e..1f883e1a28 100644 --- a/tests/forms_tests/tests/test_forms.py +++ b/tests/forms_tests/tests/test_forms.py @@ -59,15 +59,15 @@ class FormsTestCase(SimpleTestCase): self.assertEqual(p.cleaned_data["birthday"], datetime.date(1940, 10, 9)) self.assertHTMLEqual( str(p['first_name']), - '<input type="text" name="first_name" value="John" id="id_first_name" required />' + '<input type="text" name="first_name" value="John" id="id_first_name" required>' ) self.assertHTMLEqual( str(p['last_name']), - '<input type="text" name="last_name" value="Lennon" id="id_last_name" required />' + '<input type="text" name="last_name" value="Lennon" id="id_last_name" required>' ) self.assertHTMLEqual( str(p['birthday']), - '<input type="text" name="birthday" value="1940-10-9" id="id_birthday" required />' + '<input type="text" name="birthday" value="1940-10-9" id="id_birthday" required>' ) msg = "Key 'nonexistentfield' not found in 'Person'. Choices are: birthday, first_name, last_name." @@ -81,9 +81,9 @@ class FormsTestCase(SimpleTestCase): self.assertHTMLEqual( '\n'.join(form_output), - """<input type="text" name="first_name" value="John" id="id_first_name" required /> -<input type="text" name="last_name" value="Lennon" id="id_last_name" required /> -<input type="text" name="birthday" value="1940-10-9" id="id_birthday" required />""" + """<input type="text" name="first_name" value="John" id="id_first_name" required> +<input type="text" name="last_name" value="Lennon" id="id_last_name" required> +<input type="text" name="birthday" value="1940-10-9" id="id_birthday" required>""" ) form_output = [] @@ -99,11 +99,11 @@ class FormsTestCase(SimpleTestCase): self.assertHTMLEqual( str(p), """<tr><th><label for="id_first_name">First name:</label></th><td> -<input type="text" name="first_name" value="John" id="id_first_name" required /></td></tr> +<input type="text" name="first_name" value="John" id="id_first_name" required></td></tr> <tr><th><label for="id_last_name">Last name:</label></th><td> -<input type="text" name="last_name" value="Lennon" id="id_last_name" required /></td></tr> +<input type="text" name="last_name" value="Lennon" id="id_last_name" required></td></tr> <tr><th><label for="id_birthday">Birthday:</label></th><td> -<input type="text" name="birthday" value="1940-10-9" id="id_birthday" required /></td></tr>""" +<input type="text" name="birthday" value="1940-10-9" id="id_birthday" required></td></tr>""" ) def test_empty_dict(self): @@ -119,49 +119,49 @@ class FormsTestCase(SimpleTestCase): str(p), """<tr><th><label for="id_first_name">First name:</label></th><td> <ul class="errorlist"><li>This field is required.</li></ul> -<input type="text" name="first_name" id="id_first_name" required /></td></tr> +<input type="text" name="first_name" id="id_first_name" required></td></tr> <tr><th><label for="id_last_name">Last name:</label></th> <td><ul class="errorlist"><li>This field is required.</li></ul> -<input type="text" name="last_name" id="id_last_name" required /></td></tr> +<input type="text" name="last_name" id="id_last_name" required></td></tr> <tr><th><label for="id_birthday">Birthday:</label></th><td> <ul class="errorlist"><li>This field is required.</li></ul> -<input type="text" name="birthday" id="id_birthday" required /></td></tr>""" +<input type="text" name="birthday" id="id_birthday" required></td></tr>""" ) self.assertHTMLEqual( p.as_table(), """<tr><th><label for="id_first_name">First name:</label></th><td> <ul class="errorlist"><li>This field is required.</li></ul> -<input type="text" name="first_name" id="id_first_name" required /></td></tr> +<input type="text" name="first_name" id="id_first_name" required></td></tr> <tr><th><label for="id_last_name">Last name:</label></th> <td><ul class="errorlist"><li>This field is required.</li></ul> -<input type="text" name="last_name" id="id_last_name" required /></td></tr> +<input type="text" name="last_name" id="id_last_name" required></td></tr> <tr><th><label for="id_birthday">Birthday:</label></th> <td><ul class="errorlist"><li>This field is required.</li></ul> -<input type="text" name="birthday" id="id_birthday" required /></td></tr>""" +<input type="text" name="birthday" id="id_birthday" required></td></tr>""" ) self.assertHTMLEqual( p.as_ul(), """<li><ul class="errorlist"><li>This field is required.</li></ul> <label for="id_first_name">First name:</label> -<input type="text" name="first_name" id="id_first_name" required /></li> +<input type="text" name="first_name" id="id_first_name" required></li> <li><ul class="errorlist"><li>This field is required.</li></ul> <label for="id_last_name">Last name:</label> -<input type="text" name="last_name" id="id_last_name" required /></li> +<input type="text" name="last_name" id="id_last_name" required></li> <li><ul class="errorlist"><li>This field is required.</li></ul> <label for="id_birthday">Birthday:</label> -<input type="text" name="birthday" id="id_birthday" required /></li>""" +<input type="text" name="birthday" id="id_birthday" required></li>""" ) self.assertHTMLEqual( p.as_p(), """<ul class="errorlist"><li>This field is required.</li></ul> <p><label for="id_first_name">First name:</label> -<input type="text" name="first_name" id="id_first_name" required /></p> +<input type="text" name="first_name" id="id_first_name" required></p> <ul class="errorlist"><li>This field is required.</li></ul> <p><label for="id_last_name">Last name:</label> -<input type="text" name="last_name" id="id_last_name" required /></p> +<input type="text" name="last_name" id="id_last_name" required></p> <ul class="errorlist"><li>This field is required.</li></ul> <p><label for="id_birthday">Birthday:</label> -<input type="text" name="birthday" id="id_birthday" required /></p>""" +<input type="text" name="birthday" id="id_birthday" required></p>""" ) def test_empty_querydict_args(self): @@ -185,38 +185,38 @@ class FormsTestCase(SimpleTestCase): self.assertHTMLEqual( str(p), """<tr><th><label for="id_first_name">First name:</label></th><td> -<input type="text" name="first_name" id="id_first_name" required /></td></tr> +<input type="text" name="first_name" id="id_first_name" required></td></tr> <tr><th><label for="id_last_name">Last name:</label></th><td> -<input type="text" name="last_name" id="id_last_name" required /></td></tr> +<input type="text" name="last_name" id="id_last_name" required></td></tr> <tr><th><label for="id_birthday">Birthday:</label></th><td> -<input type="text" name="birthday" id="id_birthday" required /></td></tr>""" +<input type="text" name="birthday" id="id_birthday" required></td></tr>""" ) self.assertHTMLEqual( p.as_table(), """<tr><th><label for="id_first_name">First name:</label></th><td> -<input type="text" name="first_name" id="id_first_name" required /></td></tr> +<input type="text" name="first_name" id="id_first_name" required></td></tr> <tr><th><label for="id_last_name">Last name:</label></th><td> -<input type="text" name="last_name" id="id_last_name" required /></td></tr> +<input type="text" name="last_name" id="id_last_name" required></td></tr> <tr><th><label for="id_birthday">Birthday:</label></th><td> -<input type="text" name="birthday" id="id_birthday" required /></td></tr>""" +<input type="text" name="birthday" id="id_birthday" required></td></tr>""" ) self.assertHTMLEqual( p.as_ul(), """<li><label for="id_first_name">First name:</label> -<input type="text" name="first_name" id="id_first_name" required /></li> +<input type="text" name="first_name" id="id_first_name" required></li> <li><label for="id_last_name">Last name:</label> -<input type="text" name="last_name" id="id_last_name" required /></li> +<input type="text" name="last_name" id="id_last_name" required></li> <li><label for="id_birthday">Birthday:</label> -<input type="text" name="birthday" id="id_birthday" required /></li>""" +<input type="text" name="birthday" id="id_birthday" required></li>""" ) self.assertHTMLEqual( p.as_p(), """<p><label for="id_first_name">First name:</label> -<input type="text" name="first_name" id="id_first_name" required /></p> +<input type="text" name="first_name" id="id_first_name" required></p> <p><label for="id_last_name">Last name:</label> -<input type="text" name="last_name" id="id_last_name" required /></p> +<input type="text" name="last_name" id="id_last_name" required></p> <p><label for="id_birthday">Birthday:</label> -<input type="text" name="birthday" id="id_birthday" required /></p>""" +<input type="text" name="birthday" id="id_birthday" required></p>""" ) def test_unicode_values(self): @@ -229,33 +229,33 @@ class FormsTestCase(SimpleTestCase): self.assertHTMLEqual( p.as_table(), '<tr><th><label for="id_first_name">First name:</label></th><td>' - '<input type="text" name="first_name" value="John" id="id_first_name" required /></td></tr>\n' + '<input type="text" name="first_name" value="John" id="id_first_name" required></td></tr>\n' '<tr><th><label for="id_last_name">Last name:</label>' '</th><td><input type="text" name="last_name" ' 'value="\u0160\u0110\u0106\u017d\u0107\u017e\u0161\u0111"' - 'id="id_last_name" required /></td></tr>\n' + 'id="id_last_name" required></td></tr>\n' '<tr><th><label for="id_birthday">Birthday:</label></th><td>' - '<input type="text" name="birthday" value="1940-10-9" id="id_birthday" required /></td></tr>' + '<input type="text" name="birthday" value="1940-10-9" id="id_birthday" required></td></tr>' ) self.assertHTMLEqual( p.as_ul(), '<li><label for="id_first_name">First name:</label> ' - '<input type="text" name="first_name" value="John" id="id_first_name" required /></li>\n' + '<input type="text" name="first_name" value="John" id="id_first_name" required></li>\n' '<li><label for="id_last_name">Last name:</label> ' '<input type="text" name="last_name" ' - 'value="\u0160\u0110\u0106\u017d\u0107\u017e\u0161\u0111" id="id_last_name" required /></li>\n' + 'value="\u0160\u0110\u0106\u017d\u0107\u017e\u0161\u0111" id="id_last_name" required></li>\n' '<li><label for="id_birthday">Birthday:</label> ' - '<input type="text" name="birthday" value="1940-10-9" id="id_birthday" required /></li>' + '<input type="text" name="birthday" value="1940-10-9" id="id_birthday" required></li>' ) self.assertHTMLEqual( p.as_p(), '<p><label for="id_first_name">First name:</label> ' - '<input type="text" name="first_name" value="John" id="id_first_name" required /></p>\n' + '<input type="text" name="first_name" value="John" id="id_first_name" required></p>\n' '<p><label for="id_last_name">Last name:</label> ' '<input type="text" name="last_name" ' - 'value="\u0160\u0110\u0106\u017d\u0107\u017e\u0161\u0111" id="id_last_name" required /></p>\n' + 'value="\u0160\u0110\u0106\u017d\u0107\u017e\u0161\u0111" id="id_last_name" required></p>\n' '<p><label for="id_birthday">Birthday:</label> ' - '<input type="text" name="birthday" value="1940-10-9" id="id_birthday" required /></p>' + '<input type="text" name="birthday" value="1940-10-9" id="id_birthday" required></p>' ) p = Person({'last_name': 'Lennon'}) @@ -277,10 +277,10 @@ class FormsTestCase(SimpleTestCase): p = Person() self.assertHTMLEqual( str(p['first_name']), - '<input type="text" name="first_name" id="id_first_name" required />', + '<input type="text" name="first_name" id="id_first_name" required>', ) - self.assertHTMLEqual(str(p['last_name']), '<input type="text" name="last_name" id="id_last_name" required />') - self.assertHTMLEqual(str(p['birthday']), '<input type="text" name="birthday" id="id_birthday" required />') + self.assertHTMLEqual(str(p['last_name']), '<input type="text" name="last_name" id="id_last_name" required>') + self.assertHTMLEqual(str(p['birthday']), '<input type="text" name="birthday" id="id_birthday" required>') def test_cleaned_data_only_fields(self): # cleaned_data will always *only* contain a key for fields defined in the @@ -340,29 +340,29 @@ class FormsTestCase(SimpleTestCase): self.assertHTMLEqual( p.as_table(), """<tr><th><label for="first_name_id">First name:</label></th><td> -<input type="text" name="first_name" id="first_name_id" required /></td></tr> +<input type="text" name="first_name" id="first_name_id" required></td></tr> <tr><th><label for="last_name_id">Last name:</label></th><td> -<input type="text" name="last_name" id="last_name_id" required /></td></tr> +<input type="text" name="last_name" id="last_name_id" required></td></tr> <tr><th><label for="birthday_id">Birthday:</label></th><td> -<input type="text" name="birthday" id="birthday_id" required /></td></tr>""" +<input type="text" name="birthday" id="birthday_id" required></td></tr>""" ) self.assertHTMLEqual( p.as_ul(), """<li><label for="first_name_id">First name:</label> -<input type="text" name="first_name" id="first_name_id" required /></li> +<input type="text" name="first_name" id="first_name_id" required></li> <li><label for="last_name_id">Last name:</label> -<input type="text" name="last_name" id="last_name_id" required /></li> +<input type="text" name="last_name" id="last_name_id" required></li> <li><label for="birthday_id">Birthday:</label> -<input type="text" name="birthday" id="birthday_id" required /></li>""" +<input type="text" name="birthday" id="birthday_id" required></li>""" ) self.assertHTMLEqual( p.as_p(), """<p><label for="first_name_id">First name:</label> -<input type="text" name="first_name" id="first_name_id" required /></p> +<input type="text" name="first_name" id="first_name_id" required></p> <p><label for="last_name_id">Last name:</label> -<input type="text" name="last_name" id="last_name_id" required /></p> +<input type="text" name="last_name" id="last_name_id" required></p> <p><label for="birthday_id">Birthday:</label> -<input type="text" name="birthday" id="birthday_id" required /></p>""" +<input type="text" name="birthday" id="birthday_id" required></p>""" ) def test_auto_id_true(self): @@ -372,11 +372,11 @@ class FormsTestCase(SimpleTestCase): self.assertHTMLEqual( p.as_ul(), """<li><label for="first_name">First name:</label> -<input type="text" name="first_name" id="first_name" required /></li> +<input type="text" name="first_name" id="first_name" required></li> <li><label for="last_name">Last name:</label> -<input type="text" name="last_name" id="last_name" required /></li> +<input type="text" name="last_name" id="last_name" required></li> <li><label for="birthday">Birthday:</label> -<input type="text" name="birthday" id="birthday" required /></li>""" +<input type="text" name="birthday" id="birthday" required></li>""" ) def test_auto_id_false(self): @@ -385,9 +385,9 @@ class FormsTestCase(SimpleTestCase): p = Person(auto_id=False) self.assertHTMLEqual( p.as_ul(), - """<li>First name: <input type="text" name="first_name" required /></li> -<li>Last name: <input type="text" name="last_name" required /></li> -<li>Birthday: <input type="text" name="birthday" required /></li>""" + """<li>First name: <input type="text" name="first_name" required></li> +<li>Last name: <input type="text" name="last_name" required></li> +<li>Birthday: <input type="text" name="birthday" required></li>""" ) def test_id_on_field(self): @@ -397,9 +397,9 @@ class FormsTestCase(SimpleTestCase): self.assertHTMLEqual( p.as_ul(), """<li><label for="first_name_id">First name:</label> -<input type="text" id="first_name_id" name="first_name" required /></li> -<li>Last name: <input type="text" name="last_name" required /></li> -<li>Birthday: <input type="text" name="birthday" required /></li>""" +<input type="text" id="first_name_id" name="first_name" required></li> +<li>Last name: <input type="text" name="last_name" required></li> +<li>Birthday: <input type="text" name="birthday" required></li>""" ) def test_auto_id_on_form_and_field(self): @@ -409,11 +409,11 @@ class FormsTestCase(SimpleTestCase): self.assertHTMLEqual( p.as_ul(), """<li><label for="first_name_id">First name:</label> -<input type="text" id="first_name_id" name="first_name" required /></li> +<input type="text" id="first_name_id" name="first_name" required></li> <li><label for="last_name">Last name:</label> -<input type="text" name="last_name" id="last_name" required /></li> +<input type="text" name="last_name" id="last_name" required></li> <li><label for="birthday">Birthday:</label> -<input type="text" name="birthday" id="birthday" required /></li>""" +<input type="text" name="birthday" id="birthday" required></li>""" ) def test_various_boolean_values(self): @@ -422,33 +422,33 @@ class FormsTestCase(SimpleTestCase): get_spam = BooleanField() f = SignupForm(auto_id=False) - self.assertHTMLEqual(str(f['email']), '<input type="email" name="email" required />') - self.assertHTMLEqual(str(f['get_spam']), '<input type="checkbox" name="get_spam" required />') + self.assertHTMLEqual(str(f['email']), '<input type="email" name="email" required>') + self.assertHTMLEqual(str(f['get_spam']), '<input type="checkbox" name="get_spam" required>') f = SignupForm({'email': 'test@example.com', 'get_spam': True}, auto_id=False) - self.assertHTMLEqual(str(f['email']), '<input type="email" name="email" value="test@example.com" required />') + self.assertHTMLEqual(str(f['email']), '<input type="email" name="email" value="test@example.com" required>') self.assertHTMLEqual( str(f['get_spam']), - '<input checked type="checkbox" name="get_spam" required />', + '<input checked type="checkbox" name="get_spam" required>', ) # 'True' or 'true' should be rendered without a value attribute f = SignupForm({'email': 'test@example.com', 'get_spam': 'True'}, auto_id=False) self.assertHTMLEqual( str(f['get_spam']), - '<input checked type="checkbox" name="get_spam" required />', + '<input checked type="checkbox" name="get_spam" required>', ) f = SignupForm({'email': 'test@example.com', 'get_spam': 'true'}, auto_id=False) self.assertHTMLEqual( - str(f['get_spam']), '<input checked type="checkbox" name="get_spam" required />') + str(f['get_spam']), '<input checked type="checkbox" name="get_spam" required>') # A value of 'False' or 'false' should be rendered unchecked f = SignupForm({'email': 'test@example.com', 'get_spam': 'False'}, auto_id=False) - self.assertHTMLEqual(str(f['get_spam']), '<input type="checkbox" name="get_spam" required />') + self.assertHTMLEqual(str(f['get_spam']), '<input type="checkbox" name="get_spam" required>') f = SignupForm({'email': 'test@example.com', 'get_spam': 'false'}, auto_id=False) - self.assertHTMLEqual(str(f['get_spam']), '<input type="checkbox" name="get_spam" required />') + self.assertHTMLEqual(str(f['get_spam']), '<input type="checkbox" name="get_spam" required>') # A value of '0' should be interpreted as a True value (#16820) f = SignupForm({'email': 'test@example.com', 'get_spam': '0'}) @@ -462,7 +462,7 @@ class FormsTestCase(SimpleTestCase): message = CharField(widget=Textarea) f = ContactForm(auto_id=False) - self.assertHTMLEqual(str(f['subject']), '<input type="text" name="subject" required />') + self.assertHTMLEqual(str(f['subject']), '<input type="text" name="subject" required>') self.assertHTMLEqual(str(f['message']), '<textarea name="message" rows="10" cols="40" required></textarea>') # as_textarea(), as_text() and as_hidden() are shortcuts for changing the output @@ -471,8 +471,8 @@ class FormsTestCase(SimpleTestCase): f['subject'].as_textarea(), '<textarea name="subject" rows="10" cols="40" required></textarea>', ) - self.assertHTMLEqual(f['message'].as_text(), '<input type="text" name="message" required />') - self.assertHTMLEqual(f['message'].as_hidden(), '<input type="hidden" name="message" />') + self.assertHTMLEqual(f['message'].as_text(), '<input type="text" name="message" required>') + self.assertHTMLEqual(f['message'].as_hidden(), '<input type="hidden" name="message">') # The 'widget' parameter to a Field can also be an instance: class ContactForm(Form): @@ -484,7 +484,7 @@ class FormsTestCase(SimpleTestCase): # Instance-level attrs are *not* carried over to as_textarea(), as_text() and # as_hidden(): - self.assertHTMLEqual(f['message'].as_text(), '<input type="text" name="message" required />') + self.assertHTMLEqual(f['message'].as_text(), '<input type="text" name="message" required>') f = ContactForm({'subject': 'Hello', 'message': 'I love you.'}, auto_id=False) self.assertHTMLEqual( f['subject'].as_textarea(), @@ -492,9 +492,9 @@ class FormsTestCase(SimpleTestCase): ) self.assertHTMLEqual( f['message'].as_text(), - '<input type="text" name="message" value="I love you." required />', + '<input type="text" name="message" value="I love you." required>', ) - self.assertHTMLEqual(f['message'].as_hidden(), '<input type="hidden" name="message" value="I love you." />') + self.assertHTMLEqual(f['message'].as_hidden(), '<input type="hidden" name="message" value="I love you.">') def test_forms_with_choices(self): # For a form with a <select>, use ChoiceField: @@ -585,18 +585,18 @@ class FormsTestCase(SimpleTestCase): f = FrameworkForm(auto_id=False) self.assertHTMLEqual(str(f['language']), """<ul> -<li><label><input type="radio" name="language" value="P" required /> Python</label></li> -<li><label><input type="radio" name="language" value="J" required /> Java</label></li> +<li><label><input type="radio" name="language" value="P" required> Python</label></li> +<li><label><input type="radio" name="language" value="J" required> Java</label></li> </ul>""") - self.assertHTMLEqual(f.as_table(), """<tr><th>Name:</th><td><input type="text" name="name" required /></td></tr> + self.assertHTMLEqual(f.as_table(), """<tr><th>Name:</th><td><input type="text" name="name" required></td></tr> <tr><th>Language:</th><td><ul> -<li><label><input type="radio" name="language" value="P" required /> Python</label></li> -<li><label><input type="radio" name="language" value="J" required /> Java</label></li> +<li><label><input type="radio" name="language" value="P" required> Python</label></li> +<li><label><input type="radio" name="language" value="J" required> Java</label></li> </ul></td></tr>""") - self.assertHTMLEqual(f.as_ul(), """<li>Name: <input type="text" name="name" required /></li> + self.assertHTMLEqual(f.as_ul(), """<li>Name: <input type="text" name="name" required></li> <li>Language: <ul> -<li><label><input type="radio" name="language" value="P" required /> Python</label></li> -<li><label><input type="radio" name="language" value="J" required /> Java</label></li> +<li><label><input type="radio" name="language" value="P" required> Python</label></li> +<li><label><input type="radio" name="language" value="J" required> Java</label></li> </ul></li>""") # Regarding auto_id and <label>, RadioSelect is a special case. Each radio button @@ -606,9 +606,9 @@ class FormsTestCase(SimpleTestCase): self.assertHTMLEqual( str(f['language']), """<ul id="id_language"> -<li><label for="id_language_0"><input type="radio" id="id_language_0" value="P" name="language" required /> +<li><label for="id_language_0"><input type="radio" id="id_language_0" value="P" name="language" required> Python</label></li> -<li><label for="id_language_1"><input type="radio" id="id_language_1" value="J" name="language" required /> +<li><label for="id_language_1"><input type="radio" id="id_language_1" value="J" name="language" required> Java</label></li> </ul>""" ) @@ -618,31 +618,31 @@ Java</label></li> # ID of the *first* radio button. self.assertHTMLEqual( f.as_table(), - """<tr><th><label for="id_name">Name:</label></th><td><input type="text" name="name" id="id_name" required /></td></tr> + """<tr><th><label for="id_name">Name:</label></th><td><input type="text" name="name" id="id_name" required></td></tr> <tr><th><label for="id_language_0">Language:</label></th><td><ul id="id_language"> -<li><label for="id_language_0"><input type="radio" id="id_language_0" value="P" name="language" required /> +<li><label for="id_language_0"><input type="radio" id="id_language_0" value="P" name="language" required> Python</label></li> -<li><label for="id_language_1"><input type="radio" id="id_language_1" value="J" name="language" required /> +<li><label for="id_language_1"><input type="radio" id="id_language_1" value="J" name="language" required> Java</label></li> </ul></td></tr>""" ) self.assertHTMLEqual( f.as_ul(), - """<li><label for="id_name">Name:</label> <input type="text" name="name" id="id_name" required /></li> + """<li><label for="id_name">Name:</label> <input type="text" name="name" id="id_name" required></li> <li><label for="id_language_0">Language:</label> <ul id="id_language"> -<li><label for="id_language_0"><input type="radio" id="id_language_0" value="P" name="language" required /> +<li><label for="id_language_0"><input type="radio" id="id_language_0" value="P" name="language" required> Python</label></li> -<li><label for="id_language_1"><input type="radio" id="id_language_1" value="J" name="language" required /> +<li><label for="id_language_1"><input type="radio" id="id_language_1" value="J" name="language" required> Java</label></li> </ul></li>""" ) self.assertHTMLEqual( f.as_p(), - """<p><label for="id_name">Name:</label> <input type="text" name="name" id="id_name" required /></p> + """<p><label for="id_name">Name:</label> <input type="text" name="name" id="id_name" required></p> <p><label for="id_language_0">Language:</label> <ul id="id_language"> -<li><label for="id_language_0"><input type="radio" id="id_language_0" value="P" name="language" required /> +<li><label for="id_language_0"><input type="radio" id="id_language_0" value="P" name="language" required> Python</label></li> -<li><label for="id_language_1"><input type="radio" id="id_language_1" value="J" name="language" required /> +<li><label for="id_language_1"><input type="radio" id="id_language_1" value="J" name="language" required> Java</label></li> </ul></p>""" ) @@ -652,9 +652,9 @@ Java</label></li> self.assertHTMLEqual( t.render(Context({'form': f})), """<div class="myradio"><label for="id_language_0"> -<input id="id_language_0" name="language" type="radio" value="P" required /> Python</label></div> +<input id="id_language_0" name="language" type="radio" value="P" required> Python</label></div> <div class="myradio"><label for="id_language_1"> -<input id="id_language_1" name="language" type="radio" value="J" required /> Java</label></div>""" +<input id="id_language_1" name="language" type="radio" value="J" required> Java</label></div>""" ) def test_form_with_iterable_boundfield(self): @@ -667,17 +667,17 @@ Java</label></li> f = BeatleForm(auto_id=False) self.assertHTMLEqual( '\n'.join(str(bf) for bf in f['name']), - """<label><input type="radio" name="name" value="john" required /> John</label> -<label><input type="radio" name="name" value="paul" required /> Paul</label> -<label><input type="radio" name="name" value="george" required /> George</label> -<label><input type="radio" name="name" value="ringo" required /> Ringo</label>""" + """<label><input type="radio" name="name" value="john" required> John</label> +<label><input type="radio" name="name" value="paul" required> Paul</label> +<label><input type="radio" name="name" value="george" required> George</label> +<label><input type="radio" name="name" value="ringo" required> Ringo</label>""" ) self.assertHTMLEqual( '\n'.join('<div>%s</div>' % bf for bf in f['name']), - """<div><label><input type="radio" name="name" value="john" required /> John</label></div> -<div><label><input type="radio" name="name" value="paul" required /> Paul</label></div> -<div><label><input type="radio" name="name" value="george" required /> George</label></div> -<div><label><input type="radio" name="name" value="ringo" required /> Ringo</label></div>""" + """<div><label><input type="radio" name="name" value="john" required> John</label></div> +<div><label><input type="radio" name="name" value="paul" required> Paul</label></div> +<div><label><input type="radio" name="name" value="george" required> George</label></div> +<div><label><input type="radio" name="name" value="ringo" required> Ringo</label></div>""" ) def test_form_with_iterable_boundfield_id(self): @@ -693,24 +693,24 @@ Java</label></li> self.assertEqual(fields[0].choice_label, 'John') self.assertHTMLEqual( fields[0].tag(), - '<input type="radio" name="name" value="john" id="id_name_0" required />' + '<input type="radio" name="name" value="john" id="id_name_0" required>' ) self.assertHTMLEqual( str(fields[0]), '<label for="id_name_0"><input type="radio" name="name" ' - 'value="john" id="id_name_0" required /> John</label>' + 'value="john" id="id_name_0" required> John</label>' ) self.assertEqual(fields[1].id_for_label, 'id_name_1') self.assertEqual(fields[1].choice_label, 'Paul') self.assertHTMLEqual( fields[1].tag(), - '<input type="radio" name="name" value="paul" id="id_name_1" required />' + '<input type="radio" name="name" value="paul" id="id_name_1" required>' ) self.assertHTMLEqual( str(fields[1]), '<label for="id_name_1"><input type="radio" name="name" ' - 'value="paul" id="id_name_1" required /> Paul</label>' + 'value="paul" id="id_name_1" required> Paul</label>' ) def test_iterable_boundfield_select(self): @@ -730,7 +730,7 @@ Java</label></li> name = CharField() f = BeatleForm(auto_id=False) - self.assertHTMLEqual('\n'.join(str(bf) for bf in f['name']), '<input type="text" name="name" required />') + self.assertHTMLEqual('\n'.join(str(bf) for bf in f['name']), '<input type="text" name="name" required>') def test_boundfield_slice(self): class BeatleForm(Form): @@ -773,7 +773,7 @@ Java</label></li> <option value="P">Paul McCartney</option> </select>""") f = SongForm({'name': 'Yesterday', 'composers': ['P']}, auto_id=False) - self.assertHTMLEqual(str(f['name']), '<input type="text" name="name" value="Yesterday" required />') + self.assertHTMLEqual(str(f['name']), '<input type="text" name="name" value="Yesterday" required>') self.assertHTMLEqual(str(f['composers']), """<select multiple name="composers" required> <option value="J">John Lennon</option> <option value="P" selected>Paul McCartney</option> @@ -827,10 +827,10 @@ Java</label></li> # have multiple values, its as_hidden() renders multiple <input type="hidden"> # tags. f = SongForm({'name': 'Yesterday', 'composers': ['P']}, auto_id=False) - self.assertHTMLEqual(f['composers'].as_hidden(), '<input type="hidden" name="composers" value="P" />') + self.assertHTMLEqual(f['composers'].as_hidden(), '<input type="hidden" name="composers" value="P">') f = SongForm({'name': 'From Me To You', 'composers': ['P', 'J']}, auto_id=False) - self.assertHTMLEqual(f['composers'].as_hidden(), """<input type="hidden" name="composers" value="P" /> -<input type="hidden" name="composers" value="J" />""") + self.assertHTMLEqual(f['composers'].as_hidden(), """<input type="hidden" name="composers" value="P"> +<input type="hidden" name="composers" value="J">""") # DateTimeField rendered as_hidden() is special too class MessageForm(Form): @@ -840,13 +840,13 @@ Java</label></li> self.assertTrue(f.is_valid()) self.assertHTMLEqual( str(f['when']), - '<input type="text" name="when_0" value="1992-01-01" id="id_when_0" required />' - '<input type="text" name="when_1" value="01:01" id="id_when_1" required />' + '<input type="text" name="when_0" value="1992-01-01" id="id_when_0" required>' + '<input type="text" name="when_1" value="01:01" id="id_when_1" required>' ) self.assertHTMLEqual( f['when'].as_hidden(), - '<input type="hidden" name="when_0" value="1992-01-01" id="id_when_0" />' - '<input type="hidden" name="when_1" value="01:01" id="id_when_1" />' + '<input type="hidden" name="when_0" value="1992-01-01" id="id_when_0">' + '<input type="hidden" name="when_1" value="01:01" id="id_when_1">' ) def test_multiple_choice_checkbox(self): @@ -860,25 +860,25 @@ Java</label></li> f = SongForm(auto_id=False) self.assertHTMLEqual(str(f['composers']), """<ul> -<li><label><input type="checkbox" name="composers" value="J" /> John Lennon</label></li> -<li><label><input type="checkbox" name="composers" value="P" /> Paul McCartney</label></li> +<li><label><input type="checkbox" name="composers" value="J"> John Lennon</label></li> +<li><label><input type="checkbox" name="composers" value="P"> Paul McCartney</label></li> </ul>""") f = SongForm({'composers': ['J']}, auto_id=False) self.assertHTMLEqual(str(f['composers']), """<ul> -<li><label><input checked type="checkbox" name="composers" value="J" /> John Lennon</label></li> -<li><label><input type="checkbox" name="composers" value="P" /> Paul McCartney</label></li> +<li><label><input checked type="checkbox" name="composers" value="J"> John Lennon</label></li> +<li><label><input type="checkbox" name="composers" value="P"> Paul McCartney</label></li> </ul>""") f = SongForm({'composers': ['J', 'P']}, auto_id=False) self.assertHTMLEqual(str(f['composers']), """<ul> -<li><label><input checked type="checkbox" name="composers" value="J" /> John Lennon</label></li> -<li><label><input checked type="checkbox" name="composers" value="P" /> Paul McCartney</label></li> +<li><label><input checked type="checkbox" name="composers" value="J"> John Lennon</label></li> +<li><label><input checked type="checkbox" name="composers" value="P"> Paul McCartney</label></li> </ul>""") # Test iterating on individual checkboxes in a template t = Template('{% for checkbox in form.composers %}<div class="mycheckbox">{{ checkbox }}</div>{% endfor %}') self.assertHTMLEqual(t.render(Context({'form': f})), """<div class="mycheckbox"><label> -<input checked name="composers" type="checkbox" value="J" /> John Lennon</label></div> +<input checked name="composers" type="checkbox" value="J"> John Lennon</label></div> <div class="mycheckbox"><label> -<input checked name="composers" type="checkbox" value="P" /> Paul McCartney</label></div>""") +<input checked name="composers" type="checkbox" value="P"> Paul McCartney</label></div>""") def test_checkbox_auto_id(self): # Regarding auto_id, CheckboxSelectMultiple is a special case. Each checkbox @@ -896,9 +896,9 @@ Java</label></li> str(f['composers']), """<ul id="composers_id"> <li><label for="composers_id_0"> -<input type="checkbox" name="composers" value="J" id="composers_id_0" /> John Lennon</label></li> +<input type="checkbox" name="composers" value="J" id="composers_id_0"> John Lennon</label></li> <li><label for="composers_id_1"> -<input type="checkbox" name="composers" value="P" id="composers_id_1" /> Paul McCartney</label></li> +<input type="checkbox" name="composers" value="P" id="composers_id_1"> Paul McCartney</label></li> </ul>""" ) @@ -949,9 +949,9 @@ Java</label></li> f = SongFormHidden(MultiValueDict({'name': ['Yesterday'], 'composers': ['J', 'P']}), auto_id=False) self.assertHTMLEqual( f.as_ul(), - """<li>Name: <input type="text" name="name" value="Yesterday" required /> -<input type="hidden" name="composers" value="J" /> -<input type="hidden" name="composers" value="P" /></li>""" + """<li>Name: <input type="text" name="name" value="Yesterday" required> +<input type="hidden" name="composers" value="J"> +<input type="hidden" name="composers" value="P"></li>""" ) # When using CheckboxSelectMultiple, the framework expects a list of input and @@ -996,10 +996,10 @@ Java</label></li> f.as_table(), """<tr><th><em>Special</em> Field:</th><td> <ul class="errorlist"><li>Something's wrong with 'Nothing to escape'</li></ul> -<input type="text" name="special_name" value="Nothing to escape" required /></td></tr> +<input type="text" name="special_name" value="Nothing to escape" required></td></tr> <tr><th><em>Special</em> Field:</th><td> <ul class="errorlist"><li>'<b>Nothing to escape</b>' is a safe string</li></ul> -<input type="text" name="special_safe_name" value="Nothing to escape" required /></td></tr>""" +<input type="text" name="special_safe_name" value="Nothing to escape" required></td></tr>""" ) f = EscapingForm({ 'special_name': "Should escape < & > and <script>alert('xss')</script>", @@ -1011,10 +1011,10 @@ Java</label></li> <ul class="errorlist"><li>Something's wrong with 'Should escape < & > and <script>alert('xss')</script>'</li></ul> <input type="text" name="special_name" -value="Should escape < & > and <script>alert('xss')</script>" required /></td></tr> +value="Should escape < & > and <script>alert('xss')</script>" required></td></tr> <tr><th><em>Special</em> Field:</th><td> <ul class="errorlist"><li>'<b><i>Do not escape</i></b>' is a safe string</li></ul> -<input type="text" name="special_safe_name" value="<i>Do not escape</i>" required /></td></tr>""" +<input type="text" name="special_safe_name" value="<i>Do not escape</i>" required></td></tr>""" ) def test_validating_multiple_fields(self): @@ -1101,11 +1101,11 @@ value="Should escape < & > and <script>alert('xss')</ f.as_table(), """<tr><th>Username:</th><td> <ul class="errorlist"><li>This field is required.</li></ul> -<input type="text" name="username" maxlength="10" required /></td></tr> +<input type="text" name="username" maxlength="10" required></td></tr> <tr><th>Password1:</th><td><ul class="errorlist"><li>This field is required.</li></ul> -<input type="password" name="password1" required /></td></tr> +<input type="password" name="password1" required></td></tr> <tr><th>Password2:</th><td><ul class="errorlist"><li>This field is required.</li></ul> -<input type="password" name="password2" required /></td></tr>""" +<input type="password" name="password2" required></td></tr>""" ) self.assertEqual(f.errors['username'], ['This field is required.']) self.assertEqual(f.errors['password1'], ['This field is required.']) @@ -1117,17 +1117,17 @@ value="Should escape < & > and <script>alert('xss')</ f.as_table(), """<tr><td colspan="2"> <ul class="errorlist nonfield"><li>Please make sure your passwords match.</li></ul></td></tr> -<tr><th>Username:</th><td><input type="text" name="username" value="adrian" maxlength="10" required /></td></tr> -<tr><th>Password1:</th><td><input type="password" name="password1" required /></td></tr> -<tr><th>Password2:</th><td><input type="password" name="password2" required /></td></tr>""" +<tr><th>Username:</th><td><input type="text" name="username" value="adrian" maxlength="10" required></td></tr> +<tr><th>Password1:</th><td><input type="password" name="password1" required></td></tr> +<tr><th>Password2:</th><td><input type="password" name="password2" required></td></tr>""" ) self.assertHTMLEqual( f.as_ul(), """<li><ul class="errorlist nonfield"> <li>Please make sure your passwords match.</li></ul></li> -<li>Username: <input type="text" name="username" value="adrian" maxlength="10" required /></li> -<li>Password1: <input type="password" name="password1" required /></li> -<li>Password2: <input type="password" name="password2" required /></li>""" +<li>Username: <input type="text" name="username" value="adrian" maxlength="10" required></li> +<li>Password1: <input type="password" name="password1" required></li> +<li>Password2: <input type="password" name="password2" required></li>""" ) f = UserRegistration({'username': 'adrian', 'password1': 'foo', 'password2': 'foo'}, auto_id=False) @@ -1251,9 +1251,9 @@ value="Should escape < & > and <script>alert('xss')</ p = Person(auto_id=False) self.assertHTMLEqual( p.as_table(), - """<tr><th>First name:</th><td><input type="text" name="first_name" required /></td></tr> -<tr><th>Last name:</th><td><input type="text" name="last_name" required /></td></tr> -<tr><th>Birthday:</th><td><input type="text" name="birthday" required /></td></tr>""" + """<tr><th>First name:</th><td><input type="text" name="first_name" required></td></tr> +<tr><th>Last name:</th><td><input type="text" name="last_name" required></td></tr> +<tr><th>Birthday:</th><td><input type="text" name="birthday" required></td></tr>""" ) # Instances of a dynamic Form do not persist fields from one Form instance to @@ -1269,15 +1269,15 @@ value="Should escape < & > and <script>alert('xss')</ my_form = MyForm(field_list=field_list) self.assertHTMLEqual( my_form.as_table(), - """<tr><th>Field1:</th><td><input type="text" name="field1" required /></td></tr> -<tr><th>Field2:</th><td><input type="text" name="field2" required /></td></tr>""" + """<tr><th>Field1:</th><td><input type="text" name="field1" required></td></tr> +<tr><th>Field2:</th><td><input type="text" name="field2" required></td></tr>""" ) field_list = [('field3', CharField()), ('field4', CharField())] my_form = MyForm(field_list=field_list) self.assertHTMLEqual( my_form.as_table(), - """<tr><th>Field3:</th><td><input type="text" name="field3" required /></td></tr> -<tr><th>Field4:</th><td><input type="text" name="field4" required /></td></tr>""" + """<tr><th>Field3:</th><td><input type="text" name="field3" required></td></tr> +<tr><th>Field4:</th><td><input type="text" name="field4" required></td></tr>""" ) class MyForm(Form): @@ -1294,19 +1294,19 @@ value="Should escape < & > and <script>alert('xss')</ my_form = MyForm(field_list=field_list) self.assertHTMLEqual( my_form.as_table(), - """<tr><th>Default field 1:</th><td><input type="text" name="default_field_1" required /></td></tr> -<tr><th>Default field 2:</th><td><input type="text" name="default_field_2" required /></td></tr> -<tr><th>Field1:</th><td><input type="text" name="field1" required /></td></tr> -<tr><th>Field2:</th><td><input type="text" name="field2" required /></td></tr>""" + """<tr><th>Default field 1:</th><td><input type="text" name="default_field_1" required></td></tr> +<tr><th>Default field 2:</th><td><input type="text" name="default_field_2" required></td></tr> +<tr><th>Field1:</th><td><input type="text" name="field1" required></td></tr> +<tr><th>Field2:</th><td><input type="text" name="field2" required></td></tr>""" ) field_list = [('field3', CharField()), ('field4', CharField())] my_form = MyForm(field_list=field_list) self.assertHTMLEqual( my_form.as_table(), - """<tr><th>Default field 1:</th><td><input type="text" name="default_field_1" required /></td></tr> -<tr><th>Default field 2:</th><td><input type="text" name="default_field_2" required /></td></tr> -<tr><th>Field3:</th><td><input type="text" name="field3" required /></td></tr> -<tr><th>Field4:</th><td><input type="text" name="field4" required /></td></tr>""" + """<tr><th>Default field 1:</th><td><input type="text" name="default_field_1" required></td></tr> +<tr><th>Default field 2:</th><td><input type="text" name="default_field_2" required></td></tr> +<tr><th>Field3:</th><td><input type="text" name="field3" required></td></tr> +<tr><th>Field4:</th><td><input type="text" name="field4" required></td></tr>""" ) # Similarly, changes to field attributes do not persist from one Form instance @@ -1404,21 +1404,21 @@ value="Should escape < & > and <script>alert('xss')</ p = Person(auto_id=False) self.assertHTMLEqual( p.as_table(), - """<tr><th>First name:</th><td><input type="text" name="first_name" required /></td></tr> -<tr><th>Last name:</th><td><input type="text" name="last_name" required /></td></tr> + """<tr><th>First name:</th><td><input type="text" name="first_name" required></td></tr> +<tr><th>Last name:</th><td><input type="text" name="last_name" required></td></tr> <tr><th>Birthday:</th> -<td><input type="text" name="birthday" required /><input type="hidden" name="hidden_text" /></td></tr>""" +<td><input type="text" name="birthday" required><input type="hidden" name="hidden_text"></td></tr>""" ) self.assertHTMLEqual( p.as_ul(), - """<li>First name: <input type="text" name="first_name" required /></li> -<li>Last name: <input type="text" name="last_name" required /></li> -<li>Birthday: <input type="text" name="birthday" required /><input type="hidden" name="hidden_text" /></li>""" + """<li>First name: <input type="text" name="first_name" required></li> +<li>Last name: <input type="text" name="last_name" required></li> +<li>Birthday: <input type="text" name="birthday" required><input type="hidden" name="hidden_text"></li>""" ) self.assertHTMLEqual( - p.as_p(), """<p>First name: <input type="text" name="first_name" required /></p> -<p>Last name: <input type="text" name="last_name" required /></p> -<p>Birthday: <input type="text" name="birthday" required /><input type="hidden" name="hidden_text" /></p>""" + p.as_p(), """<p>First name: <input type="text" name="first_name" required></p> +<p>Last name: <input type="text" name="last_name" required></p> +<p>Birthday: <input type="text" name="birthday" required><input type="hidden" name="hidden_text"></p>""" ) # With auto_id set, a HiddenInput still gets an ID, but it doesn't get a label. @@ -1426,32 +1426,32 @@ value="Should escape < & > and <script>alert('xss')</ self.assertHTMLEqual( p.as_table(), """<tr><th><label for="id_first_name">First name:</label></th><td> -<input type="text" name="first_name" id="id_first_name" required /></td></tr> +<input type="text" name="first_name" id="id_first_name" required></td></tr> <tr><th><label for="id_last_name">Last name:</label></th><td> -<input type="text" name="last_name" id="id_last_name" required /></td></tr> +<input type="text" name="last_name" id="id_last_name" required></td></tr> <tr><th><label for="id_birthday">Birthday:</label></th><td> -<input type="text" name="birthday" id="id_birthday" required /> -<input type="hidden" name="hidden_text" id="id_hidden_text" /></td></tr>""" +<input type="text" name="birthday" id="id_birthday" required> +<input type="hidden" name="hidden_text" id="id_hidden_text"></td></tr>""" ) self.assertHTMLEqual( p.as_ul(), """<li><label for="id_first_name">First name:</label> -<input type="text" name="first_name" id="id_first_name" required /></li> +<input type="text" name="first_name" id="id_first_name" required></li> <li><label for="id_last_name">Last name:</label> -<input type="text" name="last_name" id="id_last_name" required /></li> +<input type="text" name="last_name" id="id_last_name" required></li> <li><label for="id_birthday">Birthday:</label> -<input type="text" name="birthday" id="id_birthday" required /> -<input type="hidden" name="hidden_text" id="id_hidden_text" /></li>""" +<input type="text" name="birthday" id="id_birthday" required> +<input type="hidden" name="hidden_text" id="id_hidden_text"></li>""" ) self.assertHTMLEqual( p.as_p(), """<p><label for="id_first_name">First name:</label> -<input type="text" name="first_name" id="id_first_name" required /></p> +<input type="text" name="first_name" id="id_first_name" required></p> <p><label for="id_last_name">Last name:</label> -<input type="text" name="last_name" id="id_last_name" required /></p> +<input type="text" name="last_name" id="id_last_name" required></p> <p><label for="id_birthday">Birthday:</label> -<input type="text" name="birthday" id="id_birthday" required /> -<input type="hidden" name="hidden_text" id="id_hidden_text" /></p>""" +<input type="text" name="birthday" id="id_birthday" required> +<input type="hidden" name="hidden_text" id="id_hidden_text"></p>""" ) # If a field with a HiddenInput has errors, the as_table() and as_ul() output @@ -1463,26 +1463,26 @@ value="Should escape < & > and <script>alert('xss')</ p.as_table(), """<tr><td colspan="2"> <ul class="errorlist nonfield"><li>(Hidden field hidden_text) This field is required.</li></ul></td></tr> -<tr><th>First name:</th><td><input type="text" name="first_name" value="John" required /></td></tr> -<tr><th>Last name:</th><td><input type="text" name="last_name" value="Lennon" required /></td></tr> -<tr><th>Birthday:</th><td><input type="text" name="birthday" value="1940-10-9" required /> -<input type="hidden" name="hidden_text" /></td></tr>""" +<tr><th>First name:</th><td><input type="text" name="first_name" value="John" required></td></tr> +<tr><th>Last name:</th><td><input type="text" name="last_name" value="Lennon" required></td></tr> +<tr><th>Birthday:</th><td><input type="text" name="birthday" value="1940-10-9" required> +<input type="hidden" name="hidden_text"></td></tr>""" ) self.assertHTMLEqual( p.as_ul(), """<li><ul class="errorlist nonfield"><li>(Hidden field hidden_text) This field is required.</li></ul></li> -<li>First name: <input type="text" name="first_name" value="John" required /></li> -<li>Last name: <input type="text" name="last_name" value="Lennon" required /></li> -<li>Birthday: <input type="text" name="birthday" value="1940-10-9" required /> -<input type="hidden" name="hidden_text" /></li>""" +<li>First name: <input type="text" name="first_name" value="John" required></li> +<li>Last name: <input type="text" name="last_name" value="Lennon" required></li> +<li>Birthday: <input type="text" name="birthday" value="1940-10-9" required> +<input type="hidden" name="hidden_text"></li>""" ) self.assertHTMLEqual( p.as_p(), """<ul class="errorlist nonfield"><li>(Hidden field hidden_text) This field is required.</li></ul> -<p>First name: <input type="text" name="first_name" value="John" required /></p> -<p>Last name: <input type="text" name="last_name" value="Lennon" required /></p> -<p>Birthday: <input type="text" name="birthday" value="1940-10-9" required /> -<input type="hidden" name="hidden_text" /></p>""" +<p>First name: <input type="text" name="first_name" value="John" required></p> +<p>Last name: <input type="text" name="last_name" value="Lennon" required></p> +<p>Birthday: <input type="text" name="birthday" value="1940-10-9" required> +<input type="hidden" name="hidden_text"></p>""" ) # A corner case: It's possible for a form to have only HiddenInputs. @@ -1491,9 +1491,9 @@ value="Should escape < & > and <script>alert('xss')</ bar = CharField(widget=HiddenInput) p = TestForm(auto_id=False) - self.assertHTMLEqual(p.as_table(), '<input type="hidden" name="foo" /><input type="hidden" name="bar" />') - self.assertHTMLEqual(p.as_ul(), '<input type="hidden" name="foo" /><input type="hidden" name="bar" />') - self.assertHTMLEqual(p.as_p(), '<input type="hidden" name="foo" /><input type="hidden" name="bar" />') + self.assertHTMLEqual(p.as_table(), '<input type="hidden" name="foo"><input type="hidden" name="bar">') + self.assertHTMLEqual(p.as_ul(), '<input type="hidden" name="foo"><input type="hidden" name="bar">') + self.assertHTMLEqual(p.as_p(), '<input type="hidden" name="foo"><input type="hidden" name="bar">') def test_field_order(self): # A Form's fields are displayed in the same order in which they were defined. @@ -1514,20 +1514,20 @@ value="Should escape < & > and <script>alert('xss')</ field14 = CharField() p = TestForm(auto_id=False) - self.assertHTMLEqual(p.as_table(), """<tr><th>Field1:</th><td><input type="text" name="field1" required /></td></tr> -<tr><th>Field2:</th><td><input type="text" name="field2" required /></td></tr> -<tr><th>Field3:</th><td><input type="text" name="field3" required /></td></tr> -<tr><th>Field4:</th><td><input type="text" name="field4" required /></td></tr> -<tr><th>Field5:</th><td><input type="text" name="field5" required /></td></tr> -<tr><th>Field6:</th><td><input type="text" name="field6" required /></td></tr> -<tr><th>Field7:</th><td><input type="text" name="field7" required /></td></tr> -<tr><th>Field8:</th><td><input type="text" name="field8" required /></td></tr> -<tr><th>Field9:</th><td><input type="text" name="field9" required /></td></tr> -<tr><th>Field10:</th><td><input type="text" name="field10" required /></td></tr> -<tr><th>Field11:</th><td><input type="text" name="field11" required /></td></tr> -<tr><th>Field12:</th><td><input type="text" name="field12" required /></td></tr> -<tr><th>Field13:</th><td><input type="text" name="field13" required /></td></tr> -<tr><th>Field14:</th><td><input type="text" name="field14" required /></td></tr>""") + self.assertHTMLEqual(p.as_table(), """<tr><th>Field1:</th><td><input type="text" name="field1" required></td></tr> +<tr><th>Field2:</th><td><input type="text" name="field2" required></td></tr> +<tr><th>Field3:</th><td><input type="text" name="field3" required></td></tr> +<tr><th>Field4:</th><td><input type="text" name="field4" required></td></tr> +<tr><th>Field5:</th><td><input type="text" name="field5" required></td></tr> +<tr><th>Field6:</th><td><input type="text" name="field6" required></td></tr> +<tr><th>Field7:</th><td><input type="text" name="field7" required></td></tr> +<tr><th>Field8:</th><td><input type="text" name="field8" required></td></tr> +<tr><th>Field9:</th><td><input type="text" name="field9" required></td></tr> +<tr><th>Field10:</th><td><input type="text" name="field10" required></td></tr> +<tr><th>Field11:</th><td><input type="text" name="field11" required></td></tr> +<tr><th>Field12:</th><td><input type="text" name="field12" required></td></tr> +<tr><th>Field13:</th><td><input type="text" name="field13" required></td></tr> +<tr><th>Field14:</th><td><input type="text" name="field14" required></td></tr>""") def test_explicit_field_order(self): class TestFormParent(Form): @@ -1586,10 +1586,10 @@ value="Should escape < & > and <script>alert('xss')</ p = UserRegistration(auto_id=False) self.assertHTMLEqual( p.as_ul(), - """<li>Username: <input type="text" name="username" maxlength="10" required /></li> -<li>Password: <input type="password" name="password" maxlength="10" required /></li> -<li>Realname: <input type="text" name="realname" maxlength="10" required /></li> -<li>Address: <input type="text" name="address" required /></li>""" + """<li>Username: <input type="text" name="username" maxlength="10" required></li> +<li>Password: <input type="password" name="password" maxlength="10" required></li> +<li>Realname: <input type="text" name="realname" maxlength="10" required></li> +<li>Address: <input type="text" name="address" required></li>""" ) # If you specify a custom "attrs" that includes the "maxlength" attribute, @@ -1602,8 +1602,8 @@ value="Should escape < & > and <script>alert('xss')</ p = UserRegistration(auto_id=False) self.assertHTMLEqual( p.as_ul(), - """<li>Username: <input type="text" name="username" maxlength="10" required /></li> -<li>Password: <input type="password" name="password" maxlength="10" required /></li>""" + """<li>Username: <input type="text" name="username" maxlength="10" required></li> +<li>Password: <input type="password" name="password" maxlength="10" required></li>""" ) def test_specifying_labels(self): @@ -1618,9 +1618,9 @@ value="Should escape < & > and <script>alert('xss')</ p = UserRegistration(auto_id=False) self.assertHTMLEqual( p.as_ul(), - """<li>Your username: <input type="text" name="username" maxlength="10" required /></li> -<li>Password1: <input type="password" name="password1" required /></li> -<li>Contraseña (de nuevo): <input type="password" name="password2" required /></li>""" + """<li>Your username: <input type="text" name="username" maxlength="10" required></li> +<li>Password1: <input type="password" name="password1" required></li> +<li>Contraseña (de nuevo): <input type="password" name="password2" required></li>""" ) # Labels for as_* methods will only end in a colon if they don't end in other @@ -1634,19 +1634,19 @@ value="Should escape < & > and <script>alert('xss')</ self.assertHTMLEqual( Questions(auto_id=False).as_p(), - """<p>The first question: <input type="text" name="q1" required /></p> -<p>What is your name? <input type="text" name="q2" required /></p> -<p>The answer to life is: <input type="text" name="q3" required /></p> -<p>Answer this question! <input type="text" name="q4" required /></p> -<p>The last question. Period. <input type="text" name="q5" required /></p>""" + """<p>The first question: <input type="text" name="q1" required></p> +<p>What is your name? <input type="text" name="q2" required></p> +<p>The answer to life is: <input type="text" name="q3" required></p> +<p>Answer this question! <input type="text" name="q4" required></p> +<p>The last question. Period. <input type="text" name="q5" required></p>""" ) self.assertHTMLEqual( Questions().as_p(), - """<p><label for="id_q1">The first question:</label> <input type="text" name="q1" id="id_q1" required /></p> -<p><label for="id_q2">What is your name?</label> <input type="text" name="q2" id="id_q2" required /></p> -<p><label for="id_q3">The answer to life is:</label> <input type="text" name="q3" id="id_q3" required /></p> -<p><label for="id_q4">Answer this question!</label> <input type="text" name="q4" id="id_q4" required /></p> -<p><label for="id_q5">The last question. Period.</label> <input type="text" name="q5" id="id_q5" required /></p>""" + """<p><label for="id_q1">The first question:</label> <input type="text" name="q1" id="id_q1" required></p> +<p><label for="id_q2">What is your name?</label> <input type="text" name="q2" id="id_q2" required></p> +<p><label for="id_q3">The answer to life is:</label> <input type="text" name="q3" id="id_q3" required></p> +<p><label for="id_q4">Answer this question!</label> <input type="text" name="q4" id="id_q4" required></p> +<p><label for="id_q5">The last question. Period.</label> <input type="text" name="q5" id="id_q5" required></p>""" ) # If a label is set to the empty string for a field, that field won't get a label. @@ -1655,14 +1655,14 @@ value="Should escape < & > and <script>alert('xss')</ password = CharField(widget=PasswordInput) p = UserRegistration(auto_id=False) - self.assertHTMLEqual(p.as_ul(), """<li> <input type="text" name="username" maxlength="10" required /></li> -<li>Password: <input type="password" name="password" required /></li>""") + self.assertHTMLEqual(p.as_ul(), """<li> <input type="text" name="username" maxlength="10" required></li> +<li>Password: <input type="password" name="password" required></li>""") p = UserRegistration(auto_id='id_%s') self.assertHTMLEqual( p.as_ul(), - """<li> <input id="id_username" type="text" name="username" maxlength="10" required /></li> + """<li> <input id="id_username" type="text" name="username" maxlength="10" required></li> <li><label for="id_password">Password:</label> -<input type="password" name="password" id="id_password" required /></li>""" +<input type="password" name="password" id="id_password" required></li>""" ) # If label is None, Django will auto-create the label from the field name. This @@ -1674,16 +1674,16 @@ value="Should escape < & > and <script>alert('xss')</ p = UserRegistration(auto_id=False) self.assertHTMLEqual( p.as_ul(), - """<li>Username: <input type="text" name="username" maxlength="10" required /></li> -<li>Password: <input type="password" name="password" required /></li>""" + """<li>Username: <input type="text" name="username" maxlength="10" required></li> +<li>Password: <input type="password" name="password" required></li>""" ) p = UserRegistration(auto_id='id_%s') self.assertHTMLEqual( p.as_ul(), """<li><label for="id_username">Username:</label> -<input id="id_username" type="text" name="username" maxlength="10" required /></li> +<input id="id_username" type="text" name="username" maxlength="10" required></li> <li><label for="id_password">Password:</label> -<input type="password" name="password" id="id_password" required /></li>""" +<input type="password" name="password" id="id_password" required></li>""" ) def test_label_suffix(self): @@ -1698,26 +1698,26 @@ value="Should escape < & > and <script>alert('xss')</ answer = CharField(label='Secret answer', label_suffix=' =') f = FavoriteForm(auto_id=False) - self.assertHTMLEqual(f.as_ul(), """<li>Favorite color? <input type="text" name="color" required /></li> -<li>Favorite animal: <input type="text" name="animal" required /></li> -<li>Secret answer = <input type="text" name="answer" required /></li>""") + self.assertHTMLEqual(f.as_ul(), """<li>Favorite color? <input type="text" name="color" required></li> +<li>Favorite animal: <input type="text" name="animal" required></li> +<li>Secret answer = <input type="text" name="answer" required></li>""") f = FavoriteForm(auto_id=False, label_suffix='?') - self.assertHTMLEqual(f.as_ul(), """<li>Favorite color? <input type="text" name="color" required /></li> -<li>Favorite animal? <input type="text" name="animal" required /></li> -<li>Secret answer = <input type="text" name="answer" required /></li>""") + self.assertHTMLEqual(f.as_ul(), """<li>Favorite color? <input type="text" name="color" required></li> +<li>Favorite animal? <input type="text" name="animal" required></li> +<li>Secret answer = <input type="text" name="answer" required></li>""") f = FavoriteForm(auto_id=False, label_suffix='') - self.assertHTMLEqual(f.as_ul(), """<li>Favorite color? <input type="text" name="color" required /></li> -<li>Favorite animal <input type="text" name="animal" required /></li> -<li>Secret answer = <input type="text" name="answer" required /></li>""") + self.assertHTMLEqual(f.as_ul(), """<li>Favorite color? <input type="text" name="color" required></li> +<li>Favorite animal <input type="text" name="animal" required></li> +<li>Secret answer = <input type="text" name="answer" required></li>""") f = FavoriteForm(auto_id=False, label_suffix='\u2192') self.assertHTMLEqual( f.as_ul(), - '<li>Favorite color? <input type="text" name="color" required /></li>\n' - '<li>Favorite animal\u2192 <input type="text" name="animal" required /></li>\n' - '<li>Secret answer = <input type="text" name="answer" required /></li>' + '<li>Favorite color? <input type="text" name="color" required></li>\n' + '<li>Favorite animal\u2192 <input type="text" name="animal" required></li>\n' + '<li>Secret answer = <input type="text" name="answer" required></li>' ) def test_initial_data(self): @@ -1734,8 +1734,8 @@ value="Should escape < & > and <script>alert('xss')</ p = UserRegistration(auto_id=False) self.assertHTMLEqual( p.as_ul(), - """<li>Username: <input type="text" name="username" value="django" maxlength="10" required /></li> -<li>Password: <input type="password" name="password" required /></li>""" + """<li>Username: <input type="text" name="username" value="django" maxlength="10" required></li> +<li>Password: <input type="password" name="password" required></li>""" ) # Here, we're submitting data, so the initial value will *not* be displayed. @@ -1743,24 +1743,24 @@ value="Should escape < & > and <script>alert('xss')</ self.assertHTMLEqual( p.as_ul(), """<li><ul class="errorlist"><li>This field is required.</li></ul> -Username: <input type="text" name="username" maxlength="10" required /></li> +Username: <input type="text" name="username" maxlength="10" required></li> <li><ul class="errorlist"><li>This field is required.</li></ul> -Password: <input type="password" name="password" required /></li>""" +Password: <input type="password" name="password" required></li>""" ) p = UserRegistration({'username': ''}, auto_id=False) self.assertHTMLEqual( p.as_ul(), """<li><ul class="errorlist"><li>This field is required.</li></ul> -Username: <input type="text" name="username" maxlength="10" required /></li> +Username: <input type="text" name="username" maxlength="10" required></li> <li><ul class="errorlist"><li>This field is required.</li></ul> -Password: <input type="password" name="password" required /></li>""" +Password: <input type="password" name="password" required></li>""" ) p = UserRegistration({'username': 'foo'}, auto_id=False) self.assertHTMLEqual( p.as_ul(), - """<li>Username: <input type="text" name="username" value="foo" maxlength="10" required /></li> + """<li>Username: <input type="text" name="username" value="foo" maxlength="10" required></li> <li><ul class="errorlist"><li>This field is required.</li></ul> -Password: <input type="password" name="password" required /></li>""" +Password: <input type="password" name="password" required></li>""" ) # An 'initial' value is *not* used as a fallback if data is not provided. In this @@ -1784,14 +1784,14 @@ Password: <input type="password" name="password" required /></li>""" p = UserRegistration(initial={'username': 'django'}, auto_id=False) self.assertHTMLEqual( p.as_ul(), - """<li>Username: <input type="text" name="username" value="django" maxlength="10" required /></li> -<li>Password: <input type="password" name="password" required /></li>""" + """<li>Username: <input type="text" name="username" value="django" maxlength="10" required></li> +<li>Password: <input type="password" name="password" required></li>""" ) p = UserRegistration(initial={'username': 'stephane'}, auto_id=False) self.assertHTMLEqual( p.as_ul(), - """<li>Username: <input type="text" name="username" value="stephane" maxlength="10" required /></li> -<li>Password: <input type="password" name="password" required /></li>""" + """<li>Username: <input type="text" name="username" value="stephane" maxlength="10" required></li> +<li>Password: <input type="password" name="password" required></li>""" ) # The 'initial' parameter is meaningless if you pass data. @@ -1799,23 +1799,23 @@ Password: <input type="password" name="password" required /></li>""" self.assertHTMLEqual( p.as_ul(), """<li><ul class="errorlist"><li>This field is required.</li></ul> -Username: <input type="text" name="username" maxlength="10" required /></li> +Username: <input type="text" name="username" maxlength="10" required></li> <li><ul class="errorlist"><li>This field is required.</li></ul> -Password: <input type="password" name="password" required /></li>""" +Password: <input type="password" name="password" required></li>""" ) p = UserRegistration({'username': ''}, initial={'username': 'django'}, auto_id=False) self.assertHTMLEqual( p.as_ul(), """<li><ul class="errorlist"><li>This field is required.</li></ul> -Username: <input type="text" name="username" maxlength="10" required /></li> +Username: <input type="text" name="username" maxlength="10" required></li> <li><ul class="errorlist"><li>This field is required.</li></ul> -Password: <input type="password" name="password" required /></li>""" +Password: <input type="password" name="password" required></li>""" ) p = UserRegistration({'username': 'foo'}, initial={'username': 'django'}, auto_id=False) self.assertHTMLEqual( - p.as_ul(), """<li>Username: <input type="text" name="username" value="foo" maxlength="10" required /></li> + p.as_ul(), """<li>Username: <input type="text" name="username" value="foo" maxlength="10" required></li> <li><ul class="errorlist"><li>This field is required.</li></ul> -Password: <input type="password" name="password" required /></li>""" +Password: <input type="password" name="password" required></li>""" ) # A dynamic 'initial' value is *not* used as a fallback if data is not provided. @@ -1834,8 +1834,8 @@ Password: <input type="password" name="password" required /></li>""" p = UserRegistration(initial={'username': 'babik'}, auto_id=False) self.assertHTMLEqual( p.as_ul(), - """<li>Username: <input type="text" name="username" value="babik" maxlength="10" required /></li> -<li>Password: <input type="password" name="password" required /></li>""" + """<li>Username: <input type="text" name="username" value="babik" maxlength="10" required></li> +<li>Password: <input type="password" name="password" required></li>""" ) def test_callable_initial_data(self): @@ -1863,8 +1863,8 @@ Password: <input type="password" name="password" required /></li>""" p = UserRegistration(initial={'username': initial_django, 'options': initial_options}, auto_id=False) self.assertHTMLEqual( p.as_ul(), - """<li>Username: <input type="text" name="username" value="django" maxlength="10" required /></li> -<li>Password: <input type="password" name="password" required /></li> + """<li>Username: <input type="text" name="username" value="django" maxlength="10" required></li> +<li>Password: <input type="password" name="password" required></li> <li>Options: <select multiple name="options" required> <option value="f" selected>foo</option> <option value="b" selected>bar</option> @@ -1877,9 +1877,9 @@ Password: <input type="password" name="password" required /></li>""" self.assertHTMLEqual( p.as_ul(), """<li><ul class="errorlist"><li>This field is required.</li></ul> -Username: <input type="text" name="username" maxlength="10" required /></li> +Username: <input type="text" name="username" maxlength="10" required></li> <li><ul class="errorlist"><li>This field is required.</li></ul> -Password: <input type="password" name="password" required /></li> +Password: <input type="password" name="password" required></li> <li><ul class="errorlist"><li>This field is required.</li></ul> Options: <select multiple name="options" required> <option value="f">foo</option> @@ -1891,9 +1891,9 @@ Options: <select multiple name="options" required> self.assertHTMLEqual( p.as_ul(), """<li><ul class="errorlist"><li>This field is required.</li></ul> - Username: <input type="text" name="username" maxlength="10" required /></li> + Username: <input type="text" name="username" maxlength="10" required></li> <li><ul class="errorlist"><li>This field is required.</li></ul> -Password: <input type="password" name="password" required /></li> +Password: <input type="password" name="password" required></li> <li><ul class="errorlist"><li>This field is required.</li></ul> Options: <select multiple name="options" required> <option value="f">foo</option> @@ -1906,9 +1906,9 @@ Options: <select multiple name="options" required> ) self.assertHTMLEqual( p.as_ul(), - """<li>Username: <input type="text" name="username" value="foo" maxlength="10" required /></li> + """<li>Username: <input type="text" name="username" value="foo" maxlength="10" required></li> <li><ul class="errorlist"><li>This field is required.</li></ul> -Password: <input type="password" name="password" required /></li> +Password: <input type="password" name="password" required></li> <li>Options: <select multiple name="options" required> <option value="f" selected>foo</option> <option value="b" selected>bar</option> @@ -1936,8 +1936,8 @@ Password: <input type="password" name="password" required /></li> p = UserRegistration(auto_id=False) self.assertHTMLEqual( p.as_ul(), - """<li>Username: <input type="text" name="username" value="django" maxlength="10" required /></li> -<li>Password: <input type="password" name="password" required /></li> + """<li>Username: <input type="text" name="username" value="django" maxlength="10" required></li> +<li>Password: <input type="password" name="password" required></li> <li>Options: <select multiple name="options" required> <option value="f">foo</option> <option value="b" selected>bar</option> @@ -1947,8 +1947,8 @@ Password: <input type="password" name="password" required /></li> p = UserRegistration(initial={'username': initial_stephane, 'options': initial_options}, auto_id=False) self.assertHTMLEqual( p.as_ul(), - """<li>Username: <input type="text" name="username" value="stephane" maxlength="10" required /></li> -<li>Password: <input type="password" name="password" required /></li> + """<li>Username: <input type="text" name="username" value="stephane" maxlength="10" required></li> +<li>Password: <input type="password" name="password" required></li> <li>Options: <select multiple name="options" required> <option value="f" selected>foo</option> <option value="b" selected>bar</option> @@ -2112,23 +2112,23 @@ Password: <input type="password" name="password" required /></li> p = UserRegistration(auto_id=False) self.assertHTMLEqual( p.as_ul(), - """<li>Username: <input type="text" name="username" maxlength="10" required /> + """<li>Username: <input type="text" name="username" maxlength="10" required> <span class="helptext">e.g., user@example.com</span></li> -<li>Password: <input type="password" name="password" required /> +<li>Password: <input type="password" name="password" required> <span class="helptext">Wählen Sie mit Bedacht.</span></li>""" ) self.assertHTMLEqual( p.as_p(), - """<p>Username: <input type="text" name="username" maxlength="10" required /> + """<p>Username: <input type="text" name="username" maxlength="10" required> <span class="helptext">e.g., user@example.com</span></p> -<p>Password: <input type="password" name="password" required /> +<p>Password: <input type="password" name="password" required> <span class="helptext">Wählen Sie mit Bedacht.</span></p>""" ) self.assertHTMLEqual( p.as_table(), - """<tr><th>Username:</th><td><input type="text" name="username" maxlength="10" required /><br /> + """<tr><th>Username:</th><td><input type="text" name="username" maxlength="10" required><br> <span class="helptext">e.g., user@example.com</span></td></tr> -<tr><th>Password:</th><td><input type="password" name="password" required /><br /> +<tr><th>Password:</th><td><input type="password" name="password" required><br> <span class="helptext">Wählen Sie mit Bedacht.</span></td></tr>""" ) @@ -2136,10 +2136,10 @@ Password: <input type="password" name="password" required /></li> p = UserRegistration({'username': 'foo'}, auto_id=False) self.assertHTMLEqual( p.as_ul(), - """<li>Username: <input type="text" name="username" value="foo" maxlength="10" required /> + """<li>Username: <input type="text" name="username" value="foo" maxlength="10" required> <span class="helptext">e.g., user@example.com</span></li> <li><ul class="errorlist"><li>This field is required.</li></ul> -Password: <input type="password" name="password" required /> +Password: <input type="password" name="password" required> <span class="helptext">Wählen Sie mit Bedacht.</span></li>""" ) @@ -2153,10 +2153,10 @@ Password: <input type="password" name="password" required /> p = UserRegistration(auto_id=False) self.assertHTMLEqual( p.as_ul(), - """<li>Username: <input type="text" name="username" maxlength="10" required /> + """<li>Username: <input type="text" name="username" maxlength="10" required> <span class="helptext">e.g., user@example.com</span></li> -<li>Password: <input type="password" name="password" required /> -<input type="hidden" name="next" value="/" /></li>""" +<li>Password: <input type="password" name="password" required> +<input type="hidden" name="next" value="/"></li>""" ) def test_subclassing_forms(self): @@ -2174,17 +2174,17 @@ Password: <input type="password" name="password" required /> p = Person(auto_id=False) self.assertHTMLEqual( p.as_ul(), - """<li>First name: <input type="text" name="first_name" required /></li> -<li>Last name: <input type="text" name="last_name" required /></li> -<li>Birthday: <input type="text" name="birthday" required /></li>""" + """<li>First name: <input type="text" name="first_name" required></li> +<li>Last name: <input type="text" name="last_name" required></li> +<li>Birthday: <input type="text" name="birthday" required></li>""" ) m = Musician(auto_id=False) self.assertHTMLEqual( m.as_ul(), - """<li>First name: <input type="text" name="first_name" required /></li> -<li>Last name: <input type="text" name="last_name" required /></li> -<li>Birthday: <input type="text" name="birthday" required /></li> -<li>Instrument: <input type="text" name="instrument" required /></li>""" + """<li>First name: <input type="text" name="first_name" required></li> +<li>Last name: <input type="text" name="last_name" required></li> +<li>Birthday: <input type="text" name="birthday" required></li> +<li>Instrument: <input type="text" name="instrument" required></li>""" ) # Yes, you can subclass multiple forms. The fields are added in the order in @@ -2201,11 +2201,11 @@ Password: <input type="password" name="password" required /> haircut_type = CharField() b = Beatle(auto_id=False) - self.assertHTMLEqual(b.as_ul(), """<li>Instrument: <input type="text" name="instrument" required /></li> -<li>First name: <input type="text" name="first_name" required /></li> -<li>Last name: <input type="text" name="last_name" required /></li> -<li>Birthday: <input type="text" name="birthday" required /></li> -<li>Haircut type: <input type="text" name="haircut_type" required /></li>""") + self.assertHTMLEqual(b.as_ul(), """<li>Instrument: <input type="text" name="instrument" required></li> +<li>First name: <input type="text" name="first_name" required></li> +<li>Last name: <input type="text" name="last_name" required></li> +<li>Birthday: <input type="text" name="birthday" required></li> +<li>Haircut type: <input type="text" name="haircut_type" required></li>""") def test_forms_with_prefixes(self): # Sometimes it's necessary to have multiple forms display on the same HTML page, @@ -2229,23 +2229,23 @@ Password: <input type="password" name="password" required /> self.assertHTMLEqual( p.as_ul(), """<li><label for="id_person1-first_name">First name:</label> -<input type="text" name="person1-first_name" value="John" id="id_person1-first_name" required /></li> +<input type="text" name="person1-first_name" value="John" id="id_person1-first_name" required></li> <li><label for="id_person1-last_name">Last name:</label> -<input type="text" name="person1-last_name" value="Lennon" id="id_person1-last_name" required /></li> +<input type="text" name="person1-last_name" value="Lennon" id="id_person1-last_name" required></li> <li><label for="id_person1-birthday">Birthday:</label> -<input type="text" name="person1-birthday" value="1940-10-9" id="id_person1-birthday" required /></li>""" +<input type="text" name="person1-birthday" value="1940-10-9" id="id_person1-birthday" required></li>""" ) self.assertHTMLEqual( str(p['first_name']), - '<input type="text" name="person1-first_name" value="John" id="id_person1-first_name" required />' + '<input type="text" name="person1-first_name" value="John" id="id_person1-first_name" required>' ) self.assertHTMLEqual( str(p['last_name']), - '<input type="text" name="person1-last_name" value="Lennon" id="id_person1-last_name" required />' + '<input type="text" name="person1-last_name" value="Lennon" id="id_person1-last_name" required>' ) self.assertHTMLEqual( str(p['birthday']), - '<input type="text" name="person1-birthday" value="1940-10-9" id="id_person1-birthday" required />' + '<input type="text" name="person1-birthday" value="1940-10-9" id="id_person1-birthday" required>' ) self.assertEqual(p.errors, {}) self.assertTrue(p.is_valid()) @@ -2318,11 +2318,11 @@ Password: <input type="password" name="password" required /> self.assertHTMLEqual( p.as_ul(), """<li><label for="id_foo-prefix-first_name">First name:</label> -<input type="text" name="foo-prefix-first_name" id="id_foo-prefix-first_name" required /></li> +<input type="text" name="foo-prefix-first_name" id="id_foo-prefix-first_name" required></li> <li><label for="id_foo-prefix-last_name">Last name:</label> -<input type="text" name="foo-prefix-last_name" id="id_foo-prefix-last_name" required /></li> +<input type="text" name="foo-prefix-last_name" id="id_foo-prefix-last_name" required></li> <li><label for="id_foo-prefix-birthday">Birthday:</label> -<input type="text" name="foo-prefix-birthday" id="id_foo-prefix-birthday" required /></li>""" +<input type="text" name="foo-prefix-birthday" id="id_foo-prefix-birthday" required></li>""" ) data = { 'foo-prefix-first_name': 'John', @@ -2400,7 +2400,7 @@ Password: <input type="password" name="password" required /> f = FileForm(auto_id=False) self.assertHTMLEqual( f.as_table(), - '<tr><th>File1:</th><td><input type="file" name="file1" required /></td></tr>', + '<tr><th>File1:</th><td><input type="file" name="file1" required></td></tr>', ) f = FileForm(data={}, files={}, auto_id=False) @@ -2408,7 +2408,7 @@ Password: <input type="password" name="password" required /> f.as_table(), '<tr><th>File1:</th><td>' '<ul class="errorlist"><li>This field is required.</li></ul>' - '<input type="file" name="file1" required /></td></tr>' + '<input type="file" name="file1" required></td></tr>' ) f = FileForm(data={}, files={'file1': SimpleUploadedFile('name', b'')}, auto_id=False) @@ -2416,7 +2416,7 @@ Password: <input type="password" name="password" required /> f.as_table(), '<tr><th>File1:</th><td>' '<ul class="errorlist"><li>The submitted file is empty.</li></ul>' - '<input type="file" name="file1" required /></td></tr>' + '<input type="file" name="file1" required></td></tr>' ) f = FileForm(data={}, files={'file1': 'something that is not a file'}, auto_id=False) @@ -2425,13 +2425,13 @@ Password: <input type="password" name="password" required /> '<tr><th>File1:</th><td>' '<ul class="errorlist"><li>No file was submitted. Check the ' 'encoding type on the form.</li></ul>' - '<input type="file" name="file1" required /></td></tr>' + '<input type="file" name="file1" required></td></tr>' ) f = FileForm(data={}, files={'file1': SimpleUploadedFile('name', b'some content')}, auto_id=False) self.assertHTMLEqual( f.as_table(), - '<tr><th>File1:</th><td><input type="file" name="file1" required /></td></tr>', + '<tr><th>File1:</th><td><input type="file" name="file1" required></td></tr>', ) self.assertTrue(f.is_valid()) @@ -2439,7 +2439,7 @@ Password: <input type="password" name="password" required /> f = FileForm(data={}, files={'file1': file1}, auto_id=False) self.assertHTMLEqual( f.as_table(), - '<tr><th>File1:</th><td><input type="file" name="file1" required /></td></tr>', + '<tr><th>File1:</th><td><input type="file" name="file1" required></td></tr>', ) # A required file field with initial data should not contain the @@ -2448,7 +2448,7 @@ Password: <input type="password" name="password" required /> f = FileForm(initial={'file1': 'resume.txt'}, auto_id=False) self.assertHTMLEqual( f.as_table(), - '<tr><th>File1:</th><td><input type="file" name="file1" /></td></tr>', + '<tr><th>File1:</th><td><input type="file" name="file1"></td></tr>', ) def test_filefield_initial_callable(self): @@ -2483,18 +2483,18 @@ Password: <input type="password" name="password" required /> t = Template( '<form action="" method="post">\n' - '<table>\n{{ form }}\n</table>\n<input type="submit" required />\n</form>' + '<table>\n{{ form }}\n</table>\n<input type="submit" required>\n</form>' ) return t.render(Context({'form': form})) # Case 1: GET (an empty form, with no errors).) self.assertHTMLEqual(my_function('GET', {}), """<form action="" method="post"> <table> -<tr><th>Username:</th><td><input type="text" name="username" maxlength="10" required /></td></tr> -<tr><th>Password1:</th><td><input type="password" name="password1" required /></td></tr> -<tr><th>Password2:</th><td><input type="password" name="password2" required /></td></tr> +<tr><th>Username:</th><td><input type="text" name="username" maxlength="10" required></td></tr> +<tr><th>Password1:</th><td><input type="password" name="password1" required></td></tr> +<tr><th>Password2:</th><td><input type="password" name="password2" required></td></tr> </table> -<input type="submit" required /> +<input type="submit" required> </form>""") # Case 2: POST with erroneous data (a redisplayed form, with errors).) self.assertHTMLEqual( @@ -2504,11 +2504,11 @@ Password: <input type="password" name="password" required /> <tr><td colspan="2"><ul class="errorlist nonfield"><li>Please make sure your passwords match.</li></ul></td></tr> <tr><th>Username:</th><td><ul class="errorlist"> <li>Ensure this value has at most 10 characters (it has 23).</li></ul> -<input type="text" name="username" value="this-is-a-long-username" maxlength="10" required /></td></tr> -<tr><th>Password1:</th><td><input type="password" name="password1" required /></td></tr> -<tr><th>Password2:</th><td><input type="password" name="password2" required /></td></tr> +<input type="text" name="username" value="this-is-a-long-username" maxlength="10" required></td></tr> +<tr><th>Password1:</th><td><input type="password" name="password1" required></td></tr> +<tr><th>Password2:</th><td><input type="password" name="password2" required></td></tr> </table> -<input type="submit" required /> +<input type="submit" required> </form>""" ) # Case 3: POST with valid data (the success message).) @@ -2539,23 +2539,23 @@ Password: <input type="password" name="password" required /> {{ form.username.errors.as_ul }}<p><label>Your username: {{ form.username }}</label></p> {{ form.password1.errors.as_ul }}<p><label>Password: {{ form.password1 }}</label></p> {{ form.password2.errors.as_ul }}<p><label>Password (again): {{ form.password2 }}</label></p> -<input type="submit" required /> +<input type="submit" required> </form>''') self.assertHTMLEqual(t.render(Context({'form': UserRegistration(auto_id=False)})), """<form action=""> -<p><label>Your username: <input type="text" name="username" maxlength="10" required /></label></p> -<p><label>Password: <input type="password" name="password1" required /></label></p> -<p><label>Password (again): <input type="password" name="password2" required /></label></p> -<input type="submit" required /> +<p><label>Your username: <input type="text" name="username" maxlength="10" required></label></p> +<p><label>Password: <input type="password" name="password1" required></label></p> +<p><label>Password (again): <input type="password" name="password2" required></label></p> +<input type="submit" required> </form>""") self.assertHTMLEqual( t.render(Context({'form': UserRegistration({'username': 'django'}, auto_id=False)})), """<form action=""> -<p><label>Your username: <input type="text" name="username" value="django" maxlength="10" required /></label></p> +<p><label>Your username: <input type="text" name="username" value="django" maxlength="10" required></label></p> <ul class="errorlist"><li>This field is required.</li></ul><p> -<label>Password: <input type="password" name="password1" required /></label></p> +<label>Password: <input type="password" name="password1" required></label></p> <ul class="errorlist"><li>This field is required.</li></ul> -<p><label>Password (again): <input type="password" name="password2" required /></label></p> -<input type="submit" required /> +<p><label>Password (again): <input type="password" name="password2" required></label></p> +<input type="submit" required> </form>""" ) @@ -2567,13 +2567,13 @@ Password: <input type="password" name="password" required /> <p><label>{{ form.username.label }}: {{ form.username }}</label></p> <p><label>{{ form.password1.label }}: {{ form.password1 }}</label></p> <p><label>{{ form.password2.label }}: {{ form.password2 }}</label></p> -<input type="submit" required /> +<input type="submit" required> </form>''') self.assertHTMLEqual(t.render(Context({'form': UserRegistration(auto_id=False)})), """<form action=""> -<p><label>Username: <input type="text" name="username" maxlength="10" required /></label></p> -<p><label>Password1: <input type="password" name="password1" required /></label></p> -<p><label>Password2: <input type="password" name="password2" required /></label></p> -<input type="submit" required /> +<p><label>Username: <input type="text" name="username" maxlength="10" required></label></p> +<p><label>Password1: <input type="password" name="password1" required></label></p> +<p><label>Password2: <input type="password" name="password2" required></label></p> +<input type="submit" required> </form>""") # User form.[field].label_tag to output a field's label with a <label> tag @@ -2584,40 +2584,40 @@ Password: <input type="password" name="password" required /> <p>{{ form.username.label_tag }} {{ form.username }}</p> <p>{{ form.password1.label_tag }} {{ form.password1 }}</p> <p>{{ form.password2.label_tag }} {{ form.password2 }}</p> -<input type="submit" required /> +<input type="submit" required> </form>''') self.assertHTMLEqual(t.render(Context({'form': UserRegistration(auto_id=False)})), """<form action=""> -<p>Username: <input type="text" name="username" maxlength="10" required /></p> -<p>Password1: <input type="password" name="password1" required /></p> -<p>Password2: <input type="password" name="password2" required /></p> -<input type="submit" required /> +<p>Username: <input type="text" name="username" maxlength="10" required></p> +<p>Password1: <input type="password" name="password1" required></p> +<p>Password2: <input type="password" name="password2" required></p> +<input type="submit" required> </form>""") self.assertHTMLEqual(t.render(Context({'form': UserRegistration(auto_id='id_%s')})), """<form action=""> <p><label for="id_username">Username:</label> -<input id="id_username" type="text" name="username" maxlength="10" required /></p> +<input id="id_username" type="text" name="username" maxlength="10" required></p> <p><label for="id_password1">Password1:</label> -<input type="password" name="password1" id="id_password1" required /></p> +<input type="password" name="password1" id="id_password1" required></p> <p><label for="id_password2">Password2:</label> -<input type="password" name="password2" id="id_password2" required /></p> -<input type="submit" required /> +<input type="password" name="password2" id="id_password2" required></p> +<input type="submit" required> </form>""") # User form.[field].help_text to output a field's help text. If the given field # does not have help text, nothing will be output. t = Template('''<form action=""> -<p>{{ form.username.label_tag }} {{ form.username }}<br />{{ form.username.help_text }}</p> +<p>{{ form.username.label_tag }} {{ form.username }}<br>{{ form.username.help_text }}</p> <p>{{ form.password1.label_tag }} {{ form.password1 }}</p> <p>{{ form.password2.label_tag }} {{ form.password2 }}</p> -<input type="submit" required /> +<input type="submit" required> </form>''') self.assertHTMLEqual( t.render(Context({'form': UserRegistration(auto_id=False)})), """<form action=""> -<p>Username: <input type="text" name="username" maxlength="10" required /><br /> +<p>Username: <input type="text" name="username" maxlength="10" required><br> Good luck picking a username that doesn't already exist.</p> -<p>Password1: <input type="password" name="password1" required /></p> -<p>Password2: <input type="password" name="password2" required /></p> -<input type="submit" required /> +<p>Password1: <input type="password" name="password1" required></p> +<p>Password2: <input type="password" name="password2" required></p> +<input type="submit" required> </form>""" ) self.assertEqual( @@ -2633,17 +2633,17 @@ Good luck picking a username that doesn't already exist.</p> {{ form.username.errors.as_ul }}<p><label>Your username: {{ form.username }}</label></p> {{ form.password1.errors.as_ul }}<p><label>Password: {{ form.password1 }}</label></p> {{ form.password2.errors.as_ul }}<p><label>Password (again): {{ form.password2 }}</label></p> -<input type="submit" required /> +<input type="submit" required> </form>''') self.assertHTMLEqual( t.render(Context({ 'form': UserRegistration({'username': 'django', 'password1': 'foo', 'password2': 'bar'}, auto_id=False) })), """<form action=""> -<p><label>Your username: <input type="text" name="username" value="django" maxlength="10" required /></label></p> -<p><label>Password: <input type="password" name="password1" required /></label></p> -<p><label>Password (again): <input type="password" name="password2" required /></label></p> -<input type="submit" required /> +<p><label>Your username: <input type="text" name="username" value="django" maxlength="10" required></label></p> +<p><label>Password: <input type="password" name="password1" required></label></p> +<p><label>Password (again): <input type="password" name="password2" required></label></p> +<input type="submit" required> </form>""" ) t = Template('''<form action=""> @@ -2651,7 +2651,7 @@ Good luck picking a username that doesn't already exist.</p> {{ form.username.errors.as_ul }}<p><label>Your username: {{ form.username }}</label></p> {{ form.password1.errors.as_ul }}<p><label>Password: {{ form.password1 }}</label></p> {{ form.password2.errors.as_ul }}<p><label>Password (again): {{ form.password2 }}</label></p> -<input type="submit" required /> +<input type="submit" required> </form>''') self.assertHTMLEqual( t.render(Context({ @@ -2659,10 +2659,10 @@ Good luck picking a username that doesn't already exist.</p> })), """<form action=""> <ul class="errorlist nonfield"><li>Please make sure your passwords match.</li></ul> -<p><label>Your username: <input type="text" name="username" value="django" maxlength="10" required /></label></p> -<p><label>Password: <input type="password" name="password1" required /></label></p> -<p><label>Password (again): <input type="password" name="password2" required /></label></p> -<input type="submit" required /> +<p><label>Your username: <input type="text" name="username" value="django" maxlength="10" required></label></p> +<p><label>Password: <input type="password" name="password1" required></label></p> +<p><label>Password (again): <input type="password" name="password2" required></label></p> +<input type="submit" required> </form>""" ) @@ -2729,8 +2729,8 @@ Good luck picking a username that doesn't already exist.</p> self.assertHTMLEqual( MyForm().as_table(), '<tr><th><label for="id_field1">Field1:</label></th>' - '<td><input id="id_field1" type="text" name="field1" maxlength="50" required />' - '<input type="hidden" name="initial-field1" id="initial-id_field1" /></td></tr>' + '<td><input id="id_field1" type="text" name="field1" maxlength="50" required>' + '<input type="hidden" name="initial-field1" id="initial-id_field1"></td></tr>' ) def test_error_html_required_html_classes(self): @@ -2747,33 +2747,33 @@ Good luck picking a username that doesn't already exist.</p> self.assertHTMLEqual( p.as_ul(), """<li class="required error"><ul class="errorlist"><li>This field is required.</li></ul> -<label class="required" for="id_name">Name:</label> <input type="text" name="name" id="id_name" required /></li> +<label class="required" for="id_name">Name:</label> <input type="text" name="name" id="id_name" required></li> <li class="required"><label class="required" for="id_is_cool">Is cool:</label> <select name="is_cool" id="id_is_cool"> <option value="1" selected>Unknown</option> <option value="2">Yes</option> <option value="3">No</option> </select></li> -<li><label for="id_email">Email:</label> <input type="email" name="email" id="id_email" /></li> +<li><label for="id_email">Email:</label> <input type="email" name="email" id="id_email"></li> <li class="required error"><ul class="errorlist"><li>This field is required.</li></ul> -<label class="required" for="id_age">Age:</label> <input type="number" name="age" id="id_age" required /></li>""" +<label class="required" for="id_age">Age:</label> <input type="number" name="age" id="id_age" required></li>""" ) self.assertHTMLEqual( p.as_p(), """<ul class="errorlist"><li>This field is required.</li></ul> <p class="required error"><label class="required" for="id_name">Name:</label> -<input type="text" name="name" id="id_name" required /></p> +<input type="text" name="name" id="id_name" required></p> <p class="required"><label class="required" for="id_is_cool">Is cool:</label> <select name="is_cool" id="id_is_cool"> <option value="1" selected>Unknown</option> <option value="2">Yes</option> <option value="3">No</option> </select></p> -<p><label for="id_email">Email:</label> <input type="email" name="email" id="id_email" /></p> +<p><label for="id_email">Email:</label> <input type="email" name="email" id="id_email"></p> <ul class="errorlist"><li>This field is required.</li></ul> <p class="required error"><label class="required" for="id_age">Age:</label> -<input type="number" name="age" id="id_age" required /></p>""" +<input type="number" name="age" id="id_age" required></p>""" ) self.assertHTMLEqual( @@ -2781,7 +2781,7 @@ Good luck picking a username that doesn't already exist.</p> """<tr class="required error"> <th><label class="required" for="id_name">Name:</label></th> <td><ul class="errorlist"><li>This field is required.</li></ul> -<input type="text" name="name" id="id_name" required /></td></tr> +<input type="text" name="name" id="id_name" required></td></tr> <tr class="required"><th><label class="required" for="id_is_cool">Is cool:</label></th> <td><select name="is_cool" id="id_is_cool"> <option value="1" selected>Unknown</option> @@ -2789,10 +2789,10 @@ Good luck picking a username that doesn't already exist.</p> <option value="3">No</option> </select></td></tr> <tr><th><label for="id_email">Email:</label></th><td> -<input type="email" name="email" id="id_email" /></td></tr> +<input type="email" name="email" id="id_email"></td></tr> <tr class="required error"><th><label class="required" for="id_age">Age:</label></th> <td><ul class="errorlist"><li>This field is required.</li></ul> -<input type="number" name="age" id="id_age" required /></td></tr>""" +<input type="number" name="age" id="id_age" required></td></tr>""" ) def test_label_has_required_css_class(self): @@ -2819,8 +2819,8 @@ Good luck picking a username that doesn't already exist.</p> form = EventForm() self.assertHTMLEqual( form.as_ul(), - '<input type="hidden" name="happened_at_0" id="id_happened_at_0" />' - '<input type="hidden" name="happened_at_1" id="id_happened_at_1" />' + '<input type="hidden" name="happened_at_0" id="id_happened_at_0">' + '<input type="hidden" name="happened_at_1" id="id_happened_at_1">' ) def test_multivalue_field_validation(self): @@ -3155,9 +3155,9 @@ Good luck picking a username that doesn't already exist.</p> form = SomeForm() self.assertHTMLEqual( form.as_p(), - '<p><input id="id_custom" name="custom" type="text" required /> custom' - '<input id="id_hidden1" name="hidden1" type="hidden" />' - '<input id="id_hidden2" name="hidden2" type="hidden" /></p>' + '<p><input id="id_custom" name="custom" type="text" required> custom' + '<input id="id_hidden1" name="hidden1" type="hidden">' + '<input id="id_hidden2" name="hidden2" type="hidden"></p>' ) def test_field_name_with_hidden_input_and_non_matching_row_ender(self): @@ -3174,7 +3174,7 @@ Good luck picking a username that doesn't already exist.</p> return self._html_output( normal_row='<p%(html_class_attr)s>%(field)s %(field_name)s</p>', error_row='%s', - row_ender='<hr /><hr />', + row_ender='<hr><hr>', help_text_html=' %s', errors_on_separate_row=True ) @@ -3182,9 +3182,9 @@ Good luck picking a username that doesn't already exist.</p> form = SomeForm() self.assertHTMLEqual( form.as_p(), - '<p><input id="id_custom" name="custom" type="text" required /> custom</p>\n' - '<input id="id_hidden1" name="hidden1" type="hidden" />' - '<input id="id_hidden2" name="hidden2" type="hidden" /><hr /><hr />' + '<p><input id="id_custom" name="custom" type="text" required> custom</p>\n' + '<input id="id_hidden1" name="hidden1" type="hidden">' + '<input id="id_hidden2" name="hidden2" type="hidden"><hr><hr>' ) def test_error_dict(self): @@ -3312,23 +3312,23 @@ Good luck picking a username that doesn't already exist.</p> """<li><ul class="errorlist nonfield"> <li>(Hidden field last_name) This field is required.</li></ul></li><li> <label for="id_first_name">First name:</label> -<input id="id_first_name" name="first_name" type="text" value="John" required /> -<input id="id_last_name" name="last_name" type="hidden" /></li>""" +<input id="id_first_name" name="first_name" type="text" value="John" required> +<input id="id_last_name" name="last_name" type="hidden"></li>""" ) self.assertHTMLEqual( p.as_p(), """<ul class="errorlist nonfield"><li>(Hidden field last_name) This field is required.</li></ul> <p><label for="id_first_name">First name:</label> -<input id="id_first_name" name="first_name" type="text" value="John" required /> -<input id="id_last_name" name="last_name" type="hidden" /></p>""" +<input id="id_first_name" name="first_name" type="text" value="John" required> +<input id="id_last_name" name="last_name" type="hidden"></p>""" ) self.assertHTMLEqual( p.as_table(), """<tr><td colspan="2"><ul class="errorlist nonfield"> <li>(Hidden field last_name) This field is required.</li></ul></td></tr> <tr><th><label for="id_first_name">First name:</label></th><td> -<input id="id_first_name" name="first_name" type="text" value="John" required /> -<input id="id_last_name" name="last_name" type="hidden" /></td></tr>""" +<input id="id_first_name" name="first_name" type="text" value="John" required> +<input id="id_last_name" name="last_name" type="hidden"></td></tr>""" ) def test_error_list_with_non_field_errors_has_correct_class(self): @@ -3349,9 +3349,9 @@ Good luck picking a username that doesn't already exist.</p> """<li> <ul class="errorlist nonfield"><li>Generic validation error</li></ul></li> <li><label for="id_first_name">First name:</label> -<input id="id_first_name" name="first_name" type="text" value="John" required /></li> +<input id="id_first_name" name="first_name" type="text" value="John" required></li> <li><label for="id_last_name">Last name:</label> -<input id="id_last_name" name="last_name" type="text" value="Lennon" required /></li>""" +<input id="id_last_name" name="last_name" type="text" value="Lennon" required></li>""" ) self.assertHTMLEqual( p.non_field_errors().as_text(), @@ -3361,17 +3361,17 @@ Good luck picking a username that doesn't already exist.</p> p.as_p(), """<ul class="errorlist nonfield"><li>Generic validation error</li></ul> <p><label for="id_first_name">First name:</label> -<input id="id_first_name" name="first_name" type="text" value="John" required /></p> +<input id="id_first_name" name="first_name" type="text" value="John" required></p> <p><label for="id_last_name">Last name:</label> -<input id="id_last_name" name="last_name" type="text" value="Lennon" required /></p>""" +<input id="id_last_name" name="last_name" type="text" value="Lennon" required></p>""" ) self.assertHTMLEqual( p.as_table(), """<tr><td colspan="2"><ul class="errorlist nonfield"><li>Generic validation error</li></ul></td></tr> <tr><th><label for="id_first_name">First name:</label></th><td> -<input id="id_first_name" name="first_name" type="text" value="John" required /></td></tr> +<input id="id_first_name" name="first_name" type="text" value="John" required></td></tr> <tr><th><label for="id_last_name">Last name:</label></th><td> -<input id="id_last_name" name="last_name" type="text" value="Lennon" required /></td></tr>""" +<input id="id_last_name" name="last_name" type="text" value="Lennon" required></td></tr>""" ) def test_errorlist_override(self): @@ -3392,11 +3392,11 @@ Good luck picking a username that doesn't already exist.</p> data = {'email': 'invalid'} f = CommentForm(data, auto_id=False, error_class=DivErrorList) - self.assertHTMLEqual(f.as_p(), """<p>Name: <input type="text" name="name" maxlength="50" /></p> + self.assertHTMLEqual(f.as_p(), """<p>Name: <input type="text" name="name" maxlength="50"></p> <div class="errorlist"><div class="error">Enter a valid email address.</div></div> -<p>Email: <input type="email" name="email" value="invalid" required /></p> +<p>Email: <input type="email" name="email" value="invalid" required></p> <div class="errorlist"><div class="error">This field is required.</div></div> -<p>Comment: <input type="text" name="comment" required /></p>""") +<p>Comment: <input type="text" name="comment" required></p>""") def test_error_escaping(self): class TestForm(Form): @@ -3415,8 +3415,8 @@ Good luck picking a username that doesn't already exist.</p> '<li><ul class="errorlist nonfield"><li>(Hidden field hidden) Foo & "bar"!</li></ul></li>' '<li><ul class="errorlist"><li>Foo & "bar"!</li></ul>' '<label for="id_visible">Visible:</label> ' - '<input type="text" name="visible" value="b" id="id_visible" required />' - '<input type="hidden" name="hidden" value="a" id="id_hidden" /></li>' + '<input type="text" name="visible" value="b" id="id_visible" required>' + '<input type="hidden" name="hidden" value="a" id="id_hidden"></li>' ) def test_baseform_repr(self): @@ -3529,8 +3529,8 @@ Good luck picking a username that doesn't already exist.</p> form = MyForm() self.assertHTMLEqual( form.as_p(), - '<p><label for="id_f1">F1:</label> <input id="id_f1" maxlength="30" name="f1" type="text" required /></p>' - '<p><label for="id_f2">F2:</label> <input id="id_f2" maxlength="30" name="f2" type="text" /></p>' + '<p><label for="id_f1">F1:</label> <input id="id_f1" maxlength="30" name="f1" type="text" required></p>' + '<p><label for="id_f2">F2:</label> <input id="id_f2" maxlength="30" name="f2" type="text"></p>' '<p><label for="id_f3">F3:</label> <textarea cols="40" id="id_f3" name="f3" rows="10" required>' '</textarea></p>' '<p><label for="id_f4">F4:</label> <select id="id_f4" name="f4">' @@ -3541,8 +3541,8 @@ Good luck picking a username that doesn't already exist.</p> self.assertHTMLEqual( form.as_ul(), '<li><label for="id_f1">F1:</label> ' - '<input id="id_f1" maxlength="30" name="f1" type="text" required /></li>' - '<li><label for="id_f2">F2:</label> <input id="id_f2" maxlength="30" name="f2" type="text" /></li>' + '<input id="id_f1" maxlength="30" name="f1" type="text" required></li>' + '<li><label for="id_f2">F2:</label> <input id="id_f2" maxlength="30" name="f2" type="text"></li>' '<li><label for="id_f3">F3:</label> <textarea cols="40" id="id_f3" name="f3" rows="10" required>' '</textarea></li>' '<li><label for="id_f4">F4:</label> <select id="id_f4" name="f4">' @@ -3553,9 +3553,9 @@ Good luck picking a username that doesn't already exist.</p> self.assertHTMLEqual( form.as_table(), '<tr><th><label for="id_f1">F1:</label></th>' - '<td><input id="id_f1" maxlength="30" name="f1" type="text" required /></td></tr>' + '<td><input id="id_f1" maxlength="30" name="f1" type="text" required></td></tr>' '<tr><th><label for="id_f2">F2:</label></th>' - '<td><input id="id_f2" maxlength="30" name="f2" type="text" /></td></tr>' + '<td><input id="id_f2" maxlength="30" name="f2" type="text"></td></tr>' '<tr><th><label for="id_f3">F3:</label></th>' '<td><textarea cols="40" id="id_f3" name="f3" rows="10" required>' '</textarea></td></tr>' @@ -3576,8 +3576,8 @@ Good luck picking a username that doesn't already exist.</p> form = MyForm() self.assertHTMLEqual( form.as_p(), - '<p><label for="id_f1">F1:</label> <input id="id_f1" maxlength="30" name="f1" type="text" /></p>' - '<p><label for="id_f2">F2:</label> <input id="id_f2" maxlength="30" name="f2" type="text" /></p>' + '<p><label for="id_f1">F1:</label> <input id="id_f1" maxlength="30" name="f1" type="text"></p>' + '<p><label for="id_f2">F2:</label> <input id="id_f2" maxlength="30" name="f2" type="text"></p>' '<p><label for="id_f3">F3:</label> <textarea cols="40" id="id_f3" name="f3" rows="10">' '</textarea></p>' '<p><label for="id_f4">F4:</label> <select id="id_f4" name="f4">' @@ -3587,8 +3587,8 @@ Good luck picking a username that doesn't already exist.</p> ) self.assertHTMLEqual( form.as_ul(), - '<li><label for="id_f1">F1:</label> <input id="id_f1" maxlength="30" name="f1" type="text" /></li>' - '<li><label for="id_f2">F2:</label> <input id="id_f2" maxlength="30" name="f2" type="text" /></li>' + '<li><label for="id_f1">F1:</label> <input id="id_f1" maxlength="30" name="f1" type="text"></li>' + '<li><label for="id_f2">F2:</label> <input id="id_f2" maxlength="30" name="f2" type="text"></li>' '<li><label for="id_f3">F3:</label> <textarea cols="40" id="id_f3" name="f3" rows="10">' '</textarea></li>' '<li><label for="id_f4">F4:</label> <select id="id_f4" name="f4">' @@ -3599,9 +3599,9 @@ Good luck picking a username that doesn't already exist.</p> self.assertHTMLEqual( form.as_table(), '<tr><th><label for="id_f1">F1:</label></th>' - '<td><input id="id_f1" maxlength="30" name="f1" type="text" /></td></tr>' + '<td><input id="id_f1" maxlength="30" name="f1" type="text"></td></tr>' '<tr><th><label for="id_f2">F2:</label></th>' - '<td><input id="id_f2" maxlength="30" name="f2" type="text" /></td></tr>' + '<td><input id="id_f2" maxlength="30" name="f2" type="text"></td></tr>' '<tr><th><label for="id_f3">F3:</label></th><td><textarea cols="40" id="id_f3" name="f3" rows="10">' '</textarea></td></tr>' '<tr><th><label for="id_f4">F4:</label></th><td><select id="id_f4" name="f4">' @@ -3620,13 +3620,13 @@ Good luck picking a username that doesn't already exist.</p> f.as_p(), '<ul class="errorlist nonfield">' '<li>(Hidden field data) This field is required.</li></ul>\n<p> ' - '<input type="hidden" name="data" id="id_data" /></p>' + '<input type="hidden" name="data" id="id_data"></p>' ) self.assertHTMLEqual( f.as_table(), '<tr><td colspan="2"><ul class="errorlist nonfield">' '<li>(Hidden field data) This field is required.</li></ul>' - '<input type="hidden" name="data" id="id_data" /></td></tr>' + '<input type="hidden" name="data" id="id_data"></td></tr>' ) def test_field_named_data(self): diff --git a/tests/forms_tests/tests/test_formsets.py b/tests/forms_tests/tests/test_formsets.py index 6e8ca01261..7d06104791 100644 --- a/tests/forms_tests/tests/test_formsets.py +++ b/tests/forms_tests/tests/test_formsets.py @@ -87,12 +87,12 @@ class FormsFormsetTestCase(SimpleTestCase): formset = self.make_choiceformset() self.assertHTMLEqual( str(formset), - """<input type="hidden" name="choices-TOTAL_FORMS" value="1" /> -<input type="hidden" name="choices-INITIAL_FORMS" value="0" /> -<input type="hidden" name="choices-MIN_NUM_FORMS" value="0" /> -<input type="hidden" name="choices-MAX_NUM_FORMS" value="1000" /> -<tr><th>Choice:</th><td><input type="text" name="choices-0-choice" /></td></tr> -<tr><th>Votes:</th><td><input type="number" name="choices-0-votes" /></td></tr>""" + """<input type="hidden" name="choices-TOTAL_FORMS" value="1"> +<input type="hidden" name="choices-INITIAL_FORMS" value="0"> +<input type="hidden" name="choices-MIN_NUM_FORMS" value="0"> +<input type="hidden" name="choices-MAX_NUM_FORMS" value="1000"> +<tr><th>Choice:</th><td><input type="text" name="choices-0-choice"></td></tr> +<tr><th>Votes:</th><td><input type="number" name="choices-0-votes"></td></tr>""" ) # FormSet are treated similarly to Forms. FormSet has an is_valid() # method, and a cleaned_data or errors attribute depending on whether @@ -199,10 +199,10 @@ class FormsFormsetTestCase(SimpleTestCase): form_output.append(form.as_ul()) self.assertHTMLEqual( '\n'.join(form_output), - """<li>Choice: <input type="text" name="choices-0-choice" value="Calexico" /></li> -<li>Votes: <input type="number" name="choices-0-votes" value="100" /></li> -<li>Choice: <input type="text" name="choices-1-choice" /></li> -<li>Votes: <input type="number" name="choices-1-votes" /></li>""" + """<li>Choice: <input type="text" name="choices-0-choice" value="Calexico"></li> +<li>Votes: <input type="number" name="choices-0-votes" value="100"></li> +<li>Choice: <input type="text" name="choices-1-choice"></li> +<li>Votes: <input type="number" name="choices-1-votes"></li>""" ) def test_blank_form_unfilled(self): @@ -244,12 +244,12 @@ class FormsFormsetTestCase(SimpleTestCase): form_output.append(form.as_ul()) self.assertHTMLEqual( '\n'.join(form_output), - """<li>Choice: <input type="text" name="choices-0-choice" /></li> -<li>Votes: <input type="number" name="choices-0-votes" /></li> -<li>Choice: <input type="text" name="choices-1-choice" /></li> -<li>Votes: <input type="number" name="choices-1-votes" /></li> -<li>Choice: <input type="text" name="choices-2-choice" /></li> -<li>Votes: <input type="number" name="choices-2-votes" /></li>""" + """<li>Choice: <input type="text" name="choices-0-choice"></li> +<li>Votes: <input type="number" name="choices-0-votes"></li> +<li>Choice: <input type="text" name="choices-1-choice"></li> +<li>Votes: <input type="number" name="choices-1-votes"></li> +<li>Choice: <input type="text" name="choices-2-choice"></li> +<li>Votes: <input type="number" name="choices-2-votes"></li>""" ) # Since every form was displayed as blank, they are also accepted as # blank. This may seem a little strange, but min_num is used to require @@ -285,10 +285,10 @@ class FormsFormsetTestCase(SimpleTestCase): self.assertTrue(formset.forms[1].empty_permitted) self.assertHTMLEqual( '\n'.join(form_output), - """<li>Choice: <input type="text" name="choices-0-choice" /></li> -<li>Votes: <input type="number" name="choices-0-votes" /></li> -<li>Choice: <input type="text" name="choices-1-choice" /></li> -<li>Votes: <input type="number" name="choices-1-votes" /></li>""" + """<li>Choice: <input type="text" name="choices-0-choice"></li> +<li>Votes: <input type="number" name="choices-0-votes"></li> +<li>Choice: <input type="text" name="choices-1-choice"></li> +<li>Votes: <input type="number" name="choices-1-votes"></li>""" ) def test_min_num_displaying_more_than_one_blank_form_with_zero_extra(self): @@ -300,12 +300,12 @@ class FormsFormsetTestCase(SimpleTestCase): form_output.append(form.as_ul()) self.assertHTMLEqual( '\n'.join(form_output), - """<li>Choice: <input type="text" name="choices-0-choice" /></li> -<li>Votes: <input type="number" name="choices-0-votes" /></li> -<li>Choice: <input type="text" name="choices-1-choice" /></li> -<li>Votes: <input type="number" name="choices-1-votes" /></li> -<li>Choice: <input type="text" name="choices-2-choice" /></li> -<li>Votes: <input type="number" name="choices-2-votes" /></li>""" + """<li>Choice: <input type="text" name="choices-0-choice"></li> +<li>Votes: <input type="number" name="choices-0-votes"></li> +<li>Choice: <input type="text" name="choices-1-choice"></li> +<li>Votes: <input type="number" name="choices-1-votes"></li> +<li>Choice: <input type="text" name="choices-2-choice"></li> +<li>Votes: <input type="number" name="choices-2-votes"></li>""" ) def test_single_form_completed(self): @@ -439,21 +439,21 @@ class FormsFormsetTestCase(SimpleTestCase): form_output.append(form.as_ul()) self.assertHTMLEqual( '\n'.join(form_output), - """<li>Choice: <input type="text" name="choices-0-choice" value="Calexico" /></li> -<li>Votes: <input type="number" name="choices-0-votes" value="100" /></li> -<li>Choice: <input type="text" name="choices-1-choice" /></li> -<li>Votes: <input type="number" name="choices-1-votes" /></li> -<li>Choice: <input type="text" name="choices-2-choice" /></li> -<li>Votes: <input type="number" name="choices-2-votes" /></li> -<li>Choice: <input type="text" name="choices-3-choice" /></li> -<li>Votes: <input type="number" name="choices-3-votes" /></li>""" + """<li>Choice: <input type="text" name="choices-0-choice" value="Calexico"></li> +<li>Votes: <input type="number" name="choices-0-votes" value="100"></li> +<li>Choice: <input type="text" name="choices-1-choice"></li> +<li>Votes: <input type="number" name="choices-1-votes"></li> +<li>Choice: <input type="text" name="choices-2-choice"></li> +<li>Votes: <input type="number" name="choices-2-votes"></li> +<li>Choice: <input type="text" name="choices-3-choice"></li> +<li>Votes: <input type="number" name="choices-3-votes"></li>""" ) # Retrieving an empty form works. Tt shows up in the form list. self.assertTrue(formset.empty_form.empty_permitted) self.assertHTMLEqual( formset.empty_form.as_ul(), - """<li>Choice: <input type="text" name="choices-__prefix__-choice" /></li> -<li>Votes: <input type="number" name="choices-__prefix__-votes" /></li>""" + """<li>Choice: <input type="text" name="choices-__prefix__-choice"></li> +<li>Votes: <input type="number" name="choices-__prefix__-votes"></li>""" ) def test_formset_with_deletion(self): @@ -470,15 +470,15 @@ class FormsFormsetTestCase(SimpleTestCase): form_output.append(form.as_ul()) self.assertHTMLEqual( '\n'.join(form_output), - """<li>Choice: <input type="text" name="choices-0-choice" value="Calexico" /></li> -<li>Votes: <input type="number" name="choices-0-votes" value="100" /></li> -<li>Delete: <input type="checkbox" name="choices-0-DELETE" /></li> -<li>Choice: <input type="text" name="choices-1-choice" value="Fergie" /></li> -<li>Votes: <input type="number" name="choices-1-votes" value="900" /></li> -<li>Delete: <input type="checkbox" name="choices-1-DELETE" /></li> -<li>Choice: <input type="text" name="choices-2-choice" /></li> -<li>Votes: <input type="number" name="choices-2-votes" /></li> -<li>Delete: <input type="checkbox" name="choices-2-DELETE" /></li>""" + """<li>Choice: <input type="text" name="choices-0-choice" value="Calexico"></li> +<li>Votes: <input type="number" name="choices-0-votes" value="100"></li> +<li>Delete: <input type="checkbox" name="choices-0-DELETE"></li> +<li>Choice: <input type="text" name="choices-1-choice" value="Fergie"></li> +<li>Votes: <input type="number" name="choices-1-votes" value="900"></li> +<li>Delete: <input type="checkbox" name="choices-1-DELETE"></li> +<li>Choice: <input type="text" name="choices-2-choice"></li> +<li>Votes: <input type="number" name="choices-2-votes"></li> +<li>Delete: <input type="checkbox" name="choices-2-DELETE"></li>""" ) # To delete something, set that form's special delete field to 'on'. # Let's go ahead and delete Fergie. @@ -580,15 +580,15 @@ class FormsFormsetTestCase(SimpleTestCase): form_output.append(form.as_ul()) self.assertHTMLEqual( '\n'.join(form_output), - """<li>Choice: <input type="text" name="choices-0-choice" value="Calexico" /></li> -<li>Votes: <input type="number" name="choices-0-votes" value="100" /></li> -<li>Order: <input type="number" name="choices-0-ORDER" value="1" /></li> -<li>Choice: <input type="text" name="choices-1-choice" value="Fergie" /></li> -<li>Votes: <input type="number" name="choices-1-votes" value="900" /></li> -<li>Order: <input type="number" name="choices-1-ORDER" value="2" /></li> -<li>Choice: <input type="text" name="choices-2-choice" /></li> -<li>Votes: <input type="number" name="choices-2-votes" /></li> -<li>Order: <input type="number" name="choices-2-ORDER" /></li>""" + """<li>Choice: <input type="text" name="choices-0-choice" value="Calexico"></li> +<li>Votes: <input type="number" name="choices-0-votes" value="100"></li> +<li>Order: <input type="number" name="choices-0-ORDER" value="1"></li> +<li>Choice: <input type="text" name="choices-1-choice" value="Fergie"></li> +<li>Votes: <input type="number" name="choices-1-votes" value="900"></li> +<li>Order: <input type="number" name="choices-1-ORDER" value="2"></li> +<li>Choice: <input type="text" name="choices-2-choice"></li> +<li>Votes: <input type="number" name="choices-2-votes"></li> +<li>Order: <input type="number" name="choices-2-ORDER"></li>""" ) data = { 'choices-TOTAL_FORMS': '3', # the number of forms rendered @@ -684,22 +684,22 @@ class FormsFormsetTestCase(SimpleTestCase): form_output.append(form.as_ul()) self.assertHTMLEqual( '\n'.join(form_output), - """<li>Choice: <input type="text" name="choices-0-choice" value="Calexico" /></li> -<li>Votes: <input type="number" name="choices-0-votes" value="100" /></li> -<li>Order: <input type="number" name="choices-0-ORDER" value="1" /></li> -<li>Delete: <input type="checkbox" name="choices-0-DELETE" /></li> -<li>Choice: <input type="text" name="choices-1-choice" value="Fergie" /></li> -<li>Votes: <input type="number" name="choices-1-votes" value="900" /></li> -<li>Order: <input type="number" name="choices-1-ORDER" value="2" /></li> -<li>Delete: <input type="checkbox" name="choices-1-DELETE" /></li> -<li>Choice: <input type="text" name="choices-2-choice" value="The Decemberists" /></li> -<li>Votes: <input type="number" name="choices-2-votes" value="500" /></li> -<li>Order: <input type="number" name="choices-2-ORDER" value="3" /></li> -<li>Delete: <input type="checkbox" name="choices-2-DELETE" /></li> -<li>Choice: <input type="text" name="choices-3-choice" /></li> -<li>Votes: <input type="number" name="choices-3-votes" /></li> -<li>Order: <input type="number" name="choices-3-ORDER" /></li> -<li>Delete: <input type="checkbox" name="choices-3-DELETE" /></li>""" + """<li>Choice: <input type="text" name="choices-0-choice" value="Calexico"></li> +<li>Votes: <input type="number" name="choices-0-votes" value="100"></li> +<li>Order: <input type="number" name="choices-0-ORDER" value="1"></li> +<li>Delete: <input type="checkbox" name="choices-0-DELETE"></li> +<li>Choice: <input type="text" name="choices-1-choice" value="Fergie"></li> +<li>Votes: <input type="number" name="choices-1-votes" value="900"></li> +<li>Order: <input type="number" name="choices-1-ORDER" value="2"></li> +<li>Delete: <input type="checkbox" name="choices-1-DELETE"></li> +<li>Choice: <input type="text" name="choices-2-choice" value="The Decemberists"></li> +<li>Votes: <input type="number" name="choices-2-votes" value="500"></li> +<li>Order: <input type="number" name="choices-2-ORDER" value="3"></li> +<li>Delete: <input type="checkbox" name="choices-2-DELETE"></li> +<li>Choice: <input type="text" name="choices-3-choice"></li> +<li>Votes: <input type="number" name="choices-3-votes"></li> +<li>Order: <input type="number" name="choices-3-ORDER"></li> +<li>Delete: <input type="checkbox" name="choices-3-DELETE"></li>""" ) # Let's delete Fergie, and put The Decemberists ahead of Calexico. data = { @@ -803,11 +803,11 @@ class FormsFormsetTestCase(SimpleTestCase): self.assertHTMLEqual( '\n'.join(form_output), """<tr><th><label for="id_form-0-name">Name:</label></th> -<td><input type="text" name="form-0-name" id="id_form-0-name" /></td></tr> +<td><input type="text" name="form-0-name" id="id_form-0-name"></td></tr> <tr><th><label for="id_form-1-name">Name:</label></th> -<td><input type="text" name="form-1-name" id="id_form-1-name" /></td></tr> +<td><input type="text" name="form-1-name" id="id_form-1-name"></td></tr> <tr><th><label for="id_form-2-name">Name:</label></th> -<td><input type="text" name="form-2-name" id="id_form-2-name" /></td></tr>""" +<td><input type="text" name="form-2-name" id="id_form-2-name"></td></tr>""" ) # If max_num is 0 then no form is rendered at all. LimitedFavoriteDrinkFormSet = formset_factory(FavoriteDrinkForm, extra=3, max_num=0) @@ -826,9 +826,9 @@ class FormsFormsetTestCase(SimpleTestCase): self.assertHTMLEqual( '\n'.join(form_output), """<tr><th><label for="id_form-0-name">Name:</label></th><td> -<input type="text" name="form-0-name" id="id_form-0-name" /></td></tr> +<input type="text" name="form-0-name" id="id_form-0-name"></td></tr> <tr><th><label for="id_form-1-name">Name:</label></th> -<td><input type="text" name="form-1-name" id="id_form-1-name" /></td></tr>""" +<td><input type="text" name="form-1-name" id="id_form-1-name"></td></tr>""" ) def test_limiting_extra_lest_than_max_num(self): @@ -841,7 +841,7 @@ class FormsFormsetTestCase(SimpleTestCase): self.assertHTMLEqual( '\n'.join(form_output), """<tr><th><label for="id_form-0-name">Name:</label></th> -<td><input type="text" name="form-0-name" id="id_form-0-name" /></td></tr>""" +<td><input type="text" name="form-0-name" id="id_form-0-name"></td></tr>""" ) def test_max_num_with_initial_data(self): @@ -860,9 +860,9 @@ class FormsFormsetTestCase(SimpleTestCase): self.assertHTMLEqual( '\n'.join(form_output), """<tr><th><label for="id_form-0-name">Name:</label></th> -<td><input type="text" name="form-0-name" value="Fernet and Coke" id="id_form-0-name" /></td></tr> +<td><input type="text" name="form-0-name" value="Fernet and Coke" id="id_form-0-name"></td></tr> <tr><th><label for="id_form-1-name">Name:</label></th> -<td><input type="text" name="form-1-name" id="id_form-1-name" /></td></tr>""" +<td><input type="text" name="form-1-name" id="id_form-1-name"></td></tr>""" ) def test_max_num_zero(self): @@ -891,9 +891,9 @@ class FormsFormsetTestCase(SimpleTestCase): self.assertHTMLEqual( '\n'.join(form_output), """<tr><th><label for="id_form-0-name">Name:</label></th> -<td><input id="id_form-0-name" name="form-0-name" type="text" value="Fernet and Coke" /></td></tr> +<td><input id="id_form-0-name" name="form-0-name" type="text" value="Fernet and Coke"></td></tr> <tr><th><label for="id_form-1-name">Name:</label></th> -<td><input id="id_form-1-name" name="form-1-name" type="text" value="Bloody Mary" /></td></tr>""" +<td><input id="id_form-1-name" name="form-1-name" type="text" value="Bloody Mary"></td></tr>""" ) def test_more_initial_than_max_num(self): @@ -914,11 +914,11 @@ class FormsFormsetTestCase(SimpleTestCase): self.assertHTMLEqual( '\n'.join(form_output), """<tr><th><label for="id_form-0-name">Name:</label></th> -<td><input id="id_form-0-name" name="form-0-name" type="text" value="Gin Tonic" /></td></tr> +<td><input id="id_form-0-name" name="form-0-name" type="text" value="Gin Tonic"></td></tr> <tr><th><label for="id_form-1-name">Name:</label></th> -<td><input id="id_form-1-name" name="form-1-name" type="text" value="Bloody Mary" /></td></tr> +<td><input id="id_form-1-name" name="form-1-name" type="text" value="Bloody Mary"></td></tr> <tr><th><label for="id_form-2-name">Name:</label></th> -<td><input id="id_form-2-name" name="form-2-name" type="text" value="Jack and Coke" /></td></tr>""" +<td><input id="id_form-2-name" name="form-2-name" type="text" value="Jack and Coke"></td></tr>""" ) def test_more_initial_form_result_in_one(self): @@ -937,9 +937,9 @@ class FormsFormsetTestCase(SimpleTestCase): self.assertHTMLEqual( '\n'.join(form_output), """<tr><th><label for="id_form-0-name">Name:</label></th> -<td><input type="text" name="form-0-name" value="Gin Tonic" id="id_form-0-name" /></td></tr> +<td><input type="text" name="form-0-name" value="Gin Tonic" id="id_form-0-name"></td></tr> <tr><th><label for="id_form-1-name">Name:</label></th> -<td><input type="text" name="form-1-name" id="id_form-1-name" /></td></tr>""" +<td><input type="text" name="form-1-name" id="id_form-1-name"></td></tr>""" ) def test_management_form_prefix(self): @@ -1195,36 +1195,36 @@ class FormsetAsFooTests(SimpleTestCase): formset = ChoiceFormSet(data, auto_id=False, prefix='choices') self.assertHTMLEqual( formset.as_table(), - """<input type="hidden" name="choices-TOTAL_FORMS" value="1" /> -<input type="hidden" name="choices-INITIAL_FORMS" value="0" /> -<input type="hidden" name="choices-MIN_NUM_FORMS" value="0" /> -<input type="hidden" name="choices-MAX_NUM_FORMS" value="0" /> -<tr><th>Choice:</th><td><input type="text" name="choices-0-choice" value="Calexico" /></td></tr> -<tr><th>Votes:</th><td><input type="number" name="choices-0-votes" value="100" /></td></tr>""" + """<input type="hidden" name="choices-TOTAL_FORMS" value="1"> +<input type="hidden" name="choices-INITIAL_FORMS" value="0"> +<input type="hidden" name="choices-MIN_NUM_FORMS" value="0"> +<input type="hidden" name="choices-MAX_NUM_FORMS" value="0"> +<tr><th>Choice:</th><td><input type="text" name="choices-0-choice" value="Calexico"></td></tr> +<tr><th>Votes:</th><td><input type="number" name="choices-0-votes" value="100"></td></tr>""" ) def test_as_p(self): formset = ChoiceFormSet(data, auto_id=False, prefix='choices') self.assertHTMLEqual( formset.as_p(), - """<input type="hidden" name="choices-TOTAL_FORMS" value="1" /> -<input type="hidden" name="choices-INITIAL_FORMS" value="0" /> -<input type="hidden" name="choices-MIN_NUM_FORMS" value="0" /> -<input type="hidden" name="choices-MAX_NUM_FORMS" value="0" /> -<p>Choice: <input type="text" name="choices-0-choice" value="Calexico" /></p> -<p>Votes: <input type="number" name="choices-0-votes" value="100" /></p>""" + """<input type="hidden" name="choices-TOTAL_FORMS" value="1"> +<input type="hidden" name="choices-INITIAL_FORMS" value="0"> +<input type="hidden" name="choices-MIN_NUM_FORMS" value="0"> +<input type="hidden" name="choices-MAX_NUM_FORMS" value="0"> +<p>Choice: <input type="text" name="choices-0-choice" value="Calexico"></p> +<p>Votes: <input type="number" name="choices-0-votes" value="100"></p>""" ) def test_as_ul(self): formset = ChoiceFormSet(data, auto_id=False, prefix='choices') self.assertHTMLEqual( formset.as_ul(), - """<input type="hidden" name="choices-TOTAL_FORMS" value="1" /> -<input type="hidden" name="choices-INITIAL_FORMS" value="0" /> -<input type="hidden" name="choices-MIN_NUM_FORMS" value="0" /> -<input type="hidden" name="choices-MAX_NUM_FORMS" value="0" /> -<li>Choice: <input type="text" name="choices-0-choice" value="Calexico" /></li> -<li>Votes: <input type="number" name="choices-0-votes" value="100" /></li>""" + """<input type="hidden" name="choices-TOTAL_FORMS" value="1"> +<input type="hidden" name="choices-INITIAL_FORMS" value="0"> +<input type="hidden" name="choices-MIN_NUM_FORMS" value="0"> +<input type="hidden" name="choices-MAX_NUM_FORMS" value="0"> +<li>Choice: <input type="text" name="choices-0-choice" value="Calexico"></li> +<li>Votes: <input type="number" name="choices-0-votes" value="100"></li>""" ) diff --git a/tests/forms_tests/tests/test_i18n.py b/tests/forms_tests/tests/test_i18n.py index 73d5b270eb..be166514bf 100644 --- a/tests/forms_tests/tests/test_i18n.py +++ b/tests/forms_tests/tests/test_i18n.py @@ -15,7 +15,7 @@ class FormsI18nTests(SimpleTestCase): self.assertHTMLEqual( f.as_p(), '<p><label for="id_username">username:</label>' - '<input id="id_username" type="text" name="username" maxlength="10" required /></p>' + '<input id="id_username" type="text" name="username" maxlength="10" required></p>' ) # Translations are done at rendering time, so multi-lingual apps can define forms) @@ -23,13 +23,13 @@ class FormsI18nTests(SimpleTestCase): self.assertHTMLEqual( f.as_p(), '<p><label for="id_username">Benutzername:</label>' - '<input id="id_username" type="text" name="username" maxlength="10" required /></p>' + '<input id="id_username" type="text" name="username" maxlength="10" required></p>' ) with translation.override('pl'): self.assertHTMLEqual( f.as_p(), '<p><label for="id_username">u\u017cytkownik:</label>' - '<input id="id_username" type="text" name="username" maxlength="10" required /></p>' + '<input id="id_username" type="text" name="username" maxlength="10" required></p>' ) def test_non_ascii_label(self): @@ -59,12 +59,12 @@ class FormsI18nTests(SimpleTestCase): '<p><label for="id_somechoice_0">\xc5\xf8\xdf:</label>' '<ul id="id_somechoice">\n' '<li><label for="id_somechoice_0">' - '<input type="radio" id="id_somechoice_0" value="\xc5" name="somechoice" required /> ' + '<input type="radio" id="id_somechoice_0" value="\xc5" name="somechoice" required> ' 'En tied\xe4</label></li>\n' '<li><label for="id_somechoice_1">' - '<input type="radio" id="id_somechoice_1" value="\xf8" name="somechoice" required /> ' + '<input type="radio" id="id_somechoice_1" value="\xf8" name="somechoice" required> ' 'Mies</label></li>\n<li><label for="id_somechoice_2">' - '<input type="radio" id="id_somechoice_2" value="\xdf" name="somechoice" required /> ' + '<input type="radio" id="id_somechoice_2" value="\xdf" name="somechoice" required> ' 'Nainen</label></li>\n</ul></p>' ) @@ -78,12 +78,12 @@ class FormsI18nTests(SimpleTestCase): '\u043d\u043e\u0435 \u043f\u043e\u043b\u0435.</li></ul>\n' '<p><label for="id_somechoice_0">\xc5\xf8\xdf:</label>' ' <ul id="id_somechoice">\n<li><label for="id_somechoice_0">' - '<input type="radio" id="id_somechoice_0" value="\xc5" name="somechoice" required /> ' + '<input type="radio" id="id_somechoice_0" value="\xc5" name="somechoice" required> ' 'En tied\xe4</label></li>\n' '<li><label for="id_somechoice_1">' - '<input type="radio" id="id_somechoice_1" value="\xf8" name="somechoice" required /> ' + '<input type="radio" id="id_somechoice_1" value="\xf8" name="somechoice" required> ' 'Mies</label></li>\n<li><label for="id_somechoice_2">' - '<input type="radio" id="id_somechoice_2" value="\xdf" name="somechoice" required /> ' + '<input type="radio" id="id_somechoice_2" value="\xdf" name="somechoice" required> ' 'Nainen</label></li>\n</ul></p>' ) diff --git a/tests/forms_tests/tests/test_media.py b/tests/forms_tests/tests/test_media.py index 2b73a041be..9798fc027b 100644 --- a/tests/forms_tests/tests/test_media.py +++ b/tests/forms_tests/tests/test_media.py @@ -19,8 +19,8 @@ class FormsMediaTestCase(SimpleTestCase): ) self.assertEqual( str(m), - """<link href="http://media.example.com/static/path/to/css1" type="text/css" media="all" rel="stylesheet" /> -<link href="/path/to/css2" type="text/css" media="all" rel="stylesheet" /> + """<link href="http://media.example.com/static/path/to/css1" type="text/css" media="all" rel="stylesheet"> +<link href="/path/to/css2" type="text/css" media="all" rel="stylesheet"> <script type="text/javascript" src="/path/to/js1"></script> <script type="text/javascript" src="http://media.other.com/path/to/js2"></script> <script type="text/javascript" src="https://secure.other.com/path/to/js3"></script>""" @@ -40,8 +40,8 @@ class FormsMediaTestCase(SimpleTestCase): m3 = Media(Foo) self.assertEqual( str(m3), - """<link href="http://media.example.com/static/path/to/css1" type="text/css" media="all" rel="stylesheet" /> -<link href="/path/to/css2" type="text/css" media="all" rel="stylesheet" /> + """<link href="http://media.example.com/static/path/to/css1" type="text/css" media="all" rel="stylesheet"> +<link href="/path/to/css2" type="text/css" media="all" rel="stylesheet"> <script type="text/javascript" src="/path/to/js1"></script> <script type="text/javascript" src="http://media.other.com/path/to/js2"></script> <script type="text/javascript" src="https://secure.other.com/path/to/js3"></script>""" @@ -72,8 +72,8 @@ class FormsMediaTestCase(SimpleTestCase): w1 = MyWidget1() self.assertEqual( str(w1.media), - """<link href="http://media.example.com/static/path/to/css1" type="text/css" media="all" rel="stylesheet" /> -<link href="/path/to/css2" type="text/css" media="all" rel="stylesheet" /> + """<link href="http://media.example.com/static/path/to/css1" type="text/css" media="all" rel="stylesheet"> +<link href="/path/to/css2" type="text/css" media="all" rel="stylesheet"> <script type="text/javascript" src="/path/to/js1"></script> <script type="text/javascript" src="http://media.other.com/path/to/js2"></script> <script type="text/javascript" src="https://secure.other.com/path/to/js3"></script>""" @@ -82,8 +82,8 @@ class FormsMediaTestCase(SimpleTestCase): # Media objects can be interrogated by media type self.assertEqual( str(w1.media['css']), - """<link href="http://media.example.com/static/path/to/css1" type="text/css" media="all" rel="stylesheet" /> -<link href="/path/to/css2" type="text/css" media="all" rel="stylesheet" />""" + """<link href="http://media.example.com/static/path/to/css1" type="text/css" media="all" rel="stylesheet"> +<link href="/path/to/css2" type="text/css" media="all" rel="stylesheet">""" ) self.assertEqual( @@ -122,9 +122,9 @@ class FormsMediaTestCase(SimpleTestCase): w3 = MyWidget3() self.assertEqual( str(w1.media + w2.media + w3.media), - """<link href="http://media.example.com/static/path/to/css1" type="text/css" media="all" rel="stylesheet" /> -<link href="/path/to/css2" type="text/css" media="all" rel="stylesheet" /> -<link href="/path/to/css3" type="text/css" media="all" rel="stylesheet" /> + """<link href="http://media.example.com/static/path/to/css1" type="text/css" media="all" rel="stylesheet"> +<link href="/path/to/css2" type="text/css" media="all" rel="stylesheet"> +<link href="/path/to/css3" type="text/css" media="all" rel="stylesheet"> <script type="text/javascript" src="/path/to/js1"></script> <script type="text/javascript" src="http://media.other.com/path/to/js2"></script> <script type="text/javascript" src="https://secure.other.com/path/to/js3"></script> @@ -134,8 +134,8 @@ class FormsMediaTestCase(SimpleTestCase): # media addition hasn't affected the original objects self.assertEqual( str(w1.media), - """<link href="http://media.example.com/static/path/to/css1" type="text/css" media="all" rel="stylesheet" /> -<link href="/path/to/css2" type="text/css" media="all" rel="stylesheet" /> + """<link href="http://media.example.com/static/path/to/css1" type="text/css" media="all" rel="stylesheet"> +<link href="/path/to/css2" type="text/css" media="all" rel="stylesheet"> <script type="text/javascript" src="/path/to/js1"></script> <script type="text/javascript" src="http://media.other.com/path/to/js2"></script> <script type="text/javascript" src="https://secure.other.com/path/to/js3"></script>""" @@ -150,7 +150,7 @@ class FormsMediaTestCase(SimpleTestCase): js = ('/path/to/js1', '/path/to/js1') w4 = MyWidget4() - self.assertEqual(str(w4.media), """<link href="/path/to/css1" type="text/css" media="all" rel="stylesheet" /> + self.assertEqual(str(w4.media), """<link href="/path/to/css1" type="text/css" media="all" rel="stylesheet"> <script type="text/javascript" src="/path/to/js1"></script>""") def test_media_property(self): @@ -165,7 +165,7 @@ class FormsMediaTestCase(SimpleTestCase): media = property(_media) w4 = MyWidget4() - self.assertEqual(str(w4.media), """<link href="/some/path" type="text/css" media="all" rel="stylesheet" /> + self.assertEqual(str(w4.media), """<link href="/some/path" type="text/css" media="all" rel="stylesheet"> <script type="text/javascript" src="/some/js"></script>""") # Media properties can reference the media of their parents @@ -175,8 +175,8 @@ class FormsMediaTestCase(SimpleTestCase): media = property(_media) w5 = MyWidget5() - self.assertEqual(str(w5.media), """<link href="/some/path" type="text/css" media="all" rel="stylesheet" /> -<link href="/other/path" type="text/css" media="all" rel="stylesheet" /> + self.assertEqual(str(w5.media), """<link href="/some/path" type="text/css" media="all" rel="stylesheet"> +<link href="/other/path" type="text/css" media="all" rel="stylesheet"> <script type="text/javascript" src="/some/js"></script> <script type="text/javascript" src="/other/js"></script>""") @@ -198,9 +198,9 @@ class FormsMediaTestCase(SimpleTestCase): w6 = MyWidget6() self.assertEqual( str(w6.media), - """<link href="http://media.example.com/static/path/to/css1" type="text/css" media="all" rel="stylesheet" /> -<link href="/path/to/css2" type="text/css" media="all" rel="stylesheet" /> -<link href="/other/path" type="text/css" media="all" rel="stylesheet" /> + """<link href="http://media.example.com/static/path/to/css1" type="text/css" media="all" rel="stylesheet"> +<link href="/path/to/css2" type="text/css" media="all" rel="stylesheet"> +<link href="/other/path" type="text/css" media="all" rel="stylesheet"> <script type="text/javascript" src="/path/to/js1"></script> <script type="text/javascript" src="http://media.other.com/path/to/js2"></script> <script type="text/javascript" src="https://secure.other.com/path/to/js3"></script> @@ -226,8 +226,8 @@ class FormsMediaTestCase(SimpleTestCase): w7 = MyWidget7() self.assertEqual( str(w7.media), - """<link href="http://media.example.com/static/path/to/css1" type="text/css" media="all" rel="stylesheet" /> -<link href="/path/to/css2" type="text/css" media="all" rel="stylesheet" /> + """<link href="http://media.example.com/static/path/to/css1" type="text/css" media="all" rel="stylesheet"> +<link href="/path/to/css2" type="text/css" media="all" rel="stylesheet"> <script type="text/javascript" src="/path/to/js1"></script> <script type="text/javascript" src="http://media.other.com/path/to/js2"></script> <script type="text/javascript" src="https://secure.other.com/path/to/js3"></script>""" @@ -244,9 +244,9 @@ class FormsMediaTestCase(SimpleTestCase): w8 = MyWidget8() self.assertEqual( str(w8.media), - """<link href="/path/to/css3" type="text/css" media="all" rel="stylesheet" /> -<link href="http://media.example.com/static/path/to/css1" type="text/css" media="all" rel="stylesheet" /> -<link href="/path/to/css2" type="text/css" media="all" rel="stylesheet" /> + """<link href="/path/to/css3" type="text/css" media="all" rel="stylesheet"> +<link href="http://media.example.com/static/path/to/css1" type="text/css" media="all" rel="stylesheet"> +<link href="/path/to/css2" type="text/css" media="all" rel="stylesheet"> <script type="text/javascript" src="/path/to/js1"></script> <script type="text/javascript" src="http://media.other.com/path/to/js2"></script> <script type="text/javascript" src="https://secure.other.com/path/to/js3"></script> @@ -278,8 +278,8 @@ class FormsMediaTestCase(SimpleTestCase): w9 = MyWidget9() self.assertEqual( str(w9.media), - """<link href="/some/path" type="text/css" media="all" rel="stylesheet" /> -<link href="/other/path" type="text/css" media="all" rel="stylesheet" /> + """<link href="/some/path" type="text/css" media="all" rel="stylesheet"> +<link href="/other/path" type="text/css" media="all" rel="stylesheet"> <script type="text/javascript" src="/some/js"></script> <script type="text/javascript" src="/other/js"></script>""" ) @@ -294,8 +294,8 @@ class FormsMediaTestCase(SimpleTestCase): js = ('/path/to/js1', '/path/to/js4') w10 = MyWidget10() - self.assertEqual(str(w10.media), """<link href="/path/to/css3" type="text/css" media="all" rel="stylesheet" /> -<link href="http://media.example.com/static/path/to/css1" type="text/css" media="all" rel="stylesheet" /> + self.assertEqual(str(w10.media), """<link href="/path/to/css3" type="text/css" media="all" rel="stylesheet"> +<link href="http://media.example.com/static/path/to/css1" type="text/css" media="all" rel="stylesheet"> <script type="text/javascript" src="/path/to/js1"></script> <script type="text/javascript" src="/path/to/js4"></script>""") @@ -319,9 +319,9 @@ class FormsMediaTestCase(SimpleTestCase): w11 = MyWidget11() self.assertEqual( str(w11.media), - """<link href="/path/to/css3" type="text/css" media="all" rel="stylesheet" /> -<link href="http://media.example.com/static/path/to/css1" type="text/css" media="all" rel="stylesheet" /> -<link href="/path/to/css2" type="text/css" media="all" rel="stylesheet" /> + """<link href="/path/to/css3" type="text/css" media="all" rel="stylesheet"> +<link href="http://media.example.com/static/path/to/css1" type="text/css" media="all" rel="stylesheet"> +<link href="/path/to/css2" type="text/css" media="all" rel="stylesheet"> <script type="text/javascript" src="/path/to/js1"></script> <script type="text/javascript" src="http://media.other.com/path/to/js2"></script> <script type="text/javascript" src="https://secure.other.com/path/to/js3"></script> @@ -348,9 +348,9 @@ class FormsMediaTestCase(SimpleTestCase): w12 = MyWidget12() self.assertEqual( str(w12.media), - """<link href="/path/to/css3" type="text/css" media="all" rel="stylesheet" /> -<link href="http://media.example.com/static/path/to/css1" type="text/css" media="all" rel="stylesheet" /> -<link href="/path/to/css2" type="text/css" media="all" rel="stylesheet" /> + """<link href="/path/to/css3" type="text/css" media="all" rel="stylesheet"> +<link href="http://media.example.com/static/path/to/css1" type="text/css" media="all" rel="stylesheet"> +<link href="/path/to/css2" type="text/css" media="all" rel="stylesheet"> <script type="text/javascript" src="/path/to/js1"></script> <script type="text/javascript" src="/path/to/js4"></script>""" ) @@ -373,10 +373,10 @@ class FormsMediaTestCase(SimpleTestCase): multimedia = MultimediaWidget() self.assertEqual( str(multimedia.media), - """<link href="/file4" type="text/css" media="print" rel="stylesheet" /> -<link href="/file3" type="text/css" media="screen" rel="stylesheet" /> -<link href="/file1" type="text/css" media="screen, print" rel="stylesheet" /> -<link href="/file2" type="text/css" media="screen, print" rel="stylesheet" /> + """<link href="/file4" type="text/css" media="print" rel="stylesheet"> +<link href="/file3" type="text/css" media="screen" rel="stylesheet"> +<link href="/file1" type="text/css" media="screen, print" rel="stylesheet"> +<link href="/file2" type="text/css" media="screen, print" rel="stylesheet"> <script type="text/javascript" src="/path/to/js1"></script> <script type="text/javascript" src="/path/to/js4"></script>""" ) @@ -417,9 +417,9 @@ class FormsMediaTestCase(SimpleTestCase): mymulti = MyMultiWidget() self.assertEqual( str(mymulti.media), - """<link href="http://media.example.com/static/path/to/css1" type="text/css" media="all" rel="stylesheet" /> -<link href="/path/to/css2" type="text/css" media="all" rel="stylesheet" /> -<link href="/path/to/css3" type="text/css" media="all" rel="stylesheet" /> + """<link href="http://media.example.com/static/path/to/css1" type="text/css" media="all" rel="stylesheet"> +<link href="/path/to/css2" type="text/css" media="all" rel="stylesheet"> +<link href="/path/to/css3" type="text/css" media="all" rel="stylesheet"> <script type="text/javascript" src="/path/to/js1"></script> <script type="text/javascript" src="http://media.other.com/path/to/js2"></script> <script type="text/javascript" src="https://secure.other.com/path/to/js3"></script> @@ -459,9 +459,9 @@ class FormsMediaTestCase(SimpleTestCase): f1 = MyForm() self.assertEqual( str(f1.media), - """<link href="http://media.example.com/static/path/to/css1" type="text/css" media="all" rel="stylesheet" /> -<link href="/path/to/css2" type="text/css" media="all" rel="stylesheet" /> -<link href="/path/to/css3" type="text/css" media="all" rel="stylesheet" /> + """<link href="http://media.example.com/static/path/to/css1" type="text/css" media="all" rel="stylesheet"> +<link href="/path/to/css2" type="text/css" media="all" rel="stylesheet"> +<link href="/path/to/css3" type="text/css" media="all" rel="stylesheet"> <script type="text/javascript" src="/path/to/js1"></script> <script type="text/javascript" src="http://media.other.com/path/to/js2"></script> <script type="text/javascript" src="https://secure.other.com/path/to/js3"></script> @@ -474,9 +474,9 @@ class FormsMediaTestCase(SimpleTestCase): f2 = AnotherForm() self.assertEqual( str(f1.media + f2.media), - """<link href="http://media.example.com/static/path/to/css1" type="text/css" media="all" rel="stylesheet" /> -<link href="/path/to/css2" type="text/css" media="all" rel="stylesheet" /> -<link href="/path/to/css3" type="text/css" media="all" rel="stylesheet" /> + """<link href="http://media.example.com/static/path/to/css1" type="text/css" media="all" rel="stylesheet"> +<link href="/path/to/css2" type="text/css" media="all" rel="stylesheet"> +<link href="/path/to/css3" type="text/css" media="all" rel="stylesheet"> <script type="text/javascript" src="/path/to/js1"></script> <script type="text/javascript" src="http://media.other.com/path/to/js2"></script> <script type="text/javascript" src="https://secure.other.com/path/to/js3"></script> @@ -496,10 +496,10 @@ class FormsMediaTestCase(SimpleTestCase): f3 = FormWithMedia() self.assertEqual( str(f3.media), - """<link href="http://media.example.com/static/path/to/css1" type="text/css" media="all" rel="stylesheet" /> -<link href="/path/to/css2" type="text/css" media="all" rel="stylesheet" /> -<link href="/path/to/css3" type="text/css" media="all" rel="stylesheet" /> -<link href="/some/form/css" type="text/css" media="all" rel="stylesheet" /> + """<link href="http://media.example.com/static/path/to/css1" type="text/css" media="all" rel="stylesheet"> +<link href="/path/to/css2" type="text/css" media="all" rel="stylesheet"> +<link href="/path/to/css3" type="text/css" media="all" rel="stylesheet"> +<link href="/some/form/css" type="text/css" media="all" rel="stylesheet"> <script type="text/javascript" src="/path/to/js1"></script> <script type="text/javascript" src="http://media.other.com/path/to/js2"></script> <script type="text/javascript" src="https://secure.other.com/path/to/js3"></script> @@ -515,10 +515,10 @@ class FormsMediaTestCase(SimpleTestCase): <script type="text/javascript" src="https://secure.other.com/path/to/js3"></script> <script type="text/javascript" src="/path/to/js4"></script> <script type="text/javascript" src="/some/form/javascript"></script>""" - """<link href="http://media.example.com/static/path/to/css1" type="text/css" media="all" rel="stylesheet" /> -<link href="/path/to/css2" type="text/css" media="all" rel="stylesheet" /> -<link href="/path/to/css3" type="text/css" media="all" rel="stylesheet" /> -<link href="/some/form/css" type="text/css" media="all" rel="stylesheet" />""" + """<link href="http://media.example.com/static/path/to/css1" type="text/css" media="all" rel="stylesheet"> +<link href="/path/to/css2" type="text/css" media="all" rel="stylesheet"> +<link href="/path/to/css3" type="text/css" media="all" rel="stylesheet"> +<link href="/some/form/css" type="text/css" media="all" rel="stylesheet">""" ) def test_html_safe(self): diff --git a/tests/forms_tests/tests/tests.py b/tests/forms_tests/tests/tests.py index bf0d588f53..841a1c6799 100644 --- a/tests/forms_tests/tests/tests.py +++ b/tests/forms_tests/tests/tests.py @@ -109,24 +109,24 @@ class ModelFormCallableModelDefault(TestCase): <option value="1" selected>ChoiceOption 1</option> <option value="2">ChoiceOption 2</option> <option value="3">ChoiceOption 3</option> -</select><input type="hidden" name="initial-choice" value="1" id="initial-id_choice" /></p> +</select><input type="hidden" name="initial-choice" value="1" id="initial-id_choice"></p> <p><label for="id_choice_int">Choice int:</label> <select name="choice_int" id="id_choice_int"> <option value="1" selected>ChoiceOption 1</option> <option value="2">ChoiceOption 2</option> <option value="3">ChoiceOption 3</option> -</select><input type="hidden" name="initial-choice_int" value="1" id="initial-id_choice_int" /></p> +</select><input type="hidden" name="initial-choice_int" value="1" id="initial-id_choice_int"></p> <p><label for="id_multi_choice">Multi choice:</label> <select multiple name="multi_choice" id="id_multi_choice" required> <option value="1" selected>ChoiceOption 1</option> <option value="2">ChoiceOption 2</option> <option value="3">ChoiceOption 3</option> -</select><input type="hidden" name="initial-multi_choice" value="1" id="initial-id_multi_choice_0" /></p> +</select><input type="hidden" name="initial-multi_choice" value="1" id="initial-id_multi_choice_0"></p> <p><label for="id_multi_choice_int">Multi choice int:</label> <select multiple name="multi_choice_int" id="id_multi_choice_int" required> <option value="1" selected>ChoiceOption 1</option> <option value="2">ChoiceOption 2</option> <option value="3">ChoiceOption 3</option> -</select><input type="hidden" name="initial-multi_choice_int" value="1" id="initial-id_multi_choice_int_0" /></p>""" +</select><input type="hidden" name="initial-multi_choice_int" value="1" id="initial-id_multi_choice_int_0"></p>""" ) def test_initial_instance_value(self): @@ -145,26 +145,26 @@ class ModelFormCallableModelDefault(TestCase): <option value="1">ChoiceOption 1</option> <option value="2" selected>ChoiceOption 2</option> <option value="3">ChoiceOption 3</option> -</select><input type="hidden" name="initial-choice" value="2" id="initial-id_choice" /></p> +</select><input type="hidden" name="initial-choice" value="2" id="initial-id_choice"></p> <p><label for="id_choice_int">Choice int:</label> <select name="choice_int" id="id_choice_int"> <option value="1">ChoiceOption 1</option> <option value="2" selected>ChoiceOption 2</option> <option value="3">ChoiceOption 3</option> -</select><input type="hidden" name="initial-choice_int" value="2" id="initial-id_choice_int" /></p> +</select><input type="hidden" name="initial-choice_int" value="2" id="initial-id_choice_int"></p> <p><label for="id_multi_choice">Multi choice:</label> <select multiple name="multi_choice" id="id_multi_choice" required> <option value="1">ChoiceOption 1</option> <option value="2" selected>ChoiceOption 2</option> <option value="3" selected>ChoiceOption 3</option> -</select><input type="hidden" name="initial-multi_choice" value="2" id="initial-id_multi_choice_0" /> -<input type="hidden" name="initial-multi_choice" value="3" id="initial-id_multi_choice_1" /></p> +</select><input type="hidden" name="initial-multi_choice" value="2" id="initial-id_multi_choice_0"> +<input type="hidden" name="initial-multi_choice" value="3" id="initial-id_multi_choice_1"></p> <p><label for="id_multi_choice_int">Multi choice int:</label> <select multiple name="multi_choice_int" id="id_multi_choice_int" required> <option value="1">ChoiceOption 1</option> <option value="2" selected>ChoiceOption 2</option> <option value="3" selected>ChoiceOption 3</option> -</select><input type="hidden" name="initial-multi_choice_int" value="2" id="initial-id_multi_choice_int_0" /> -<input type="hidden" name="initial-multi_choice_int" value="3" id="initial-id_multi_choice_int_1" /></p>""" +</select><input type="hidden" name="initial-multi_choice_int" value="2" id="initial-id_multi_choice_int_0"> +<input type="hidden" name="initial-multi_choice_int" value="3" id="initial-id_multi_choice_int_1"></p>""" ) @@ -308,7 +308,7 @@ class EmptyLabelTestCase(TestCase): f = EmptyCharLabelChoiceForm() self.assertHTMLEqual( f.as_p(), - """<p><label for="id_name">Name:</label> <input id="id_name" maxlength="10" name="name" type="text" required /></p> + """<p><label for="id_name">Name:</label> <input id="id_name" maxlength="10" name="name" type="text" required></p> <p><label for="id_choice">Choice:</label> <select id="id_choice" name="choice"> <option value="" selected>No Preference</option> <option value="f">Foo</option> @@ -320,7 +320,7 @@ class EmptyLabelTestCase(TestCase): f = EmptyCharLabelNoneChoiceForm() self.assertHTMLEqual( f.as_p(), - """<p><label for="id_name">Name:</label> <input id="id_name" maxlength="10" name="name" type="text" required /></p> + """<p><label for="id_name">Name:</label> <input id="id_name" maxlength="10" name="name" type="text" required></p> <p><label for="id_choice_string_w_none">Choice string w none:</label> <select id="id_choice_string_w_none" name="choice_string_w_none"> <option value="" selected>No Preference</option> @@ -350,7 +350,7 @@ class EmptyLabelTestCase(TestCase): f = EmptyIntegerLabelChoiceForm() self.assertHTMLEqual( f.as_p(), - """<p><label for="id_name">Name:</label> <input id="id_name" maxlength="10" name="name" type="text" required /></p> + """<p><label for="id_name">Name:</label> <input id="id_name" maxlength="10" name="name" type="text" required></p> <p><label for="id_choice_integer">Choice integer:</label> <select id="id_choice_integer" name="choice_integer"> <option value="" selected>No Preference</option> @@ -370,7 +370,7 @@ class EmptyLabelTestCase(TestCase): self.assertHTMLEqual( f.as_p(), """<p><label for="id_name">Name:</label> -<input id="id_name" maxlength="10" name="name" type="text" value="none-test" required /></p> +<input id="id_name" maxlength="10" name="name" type="text" value="none-test" required></p> <p><label for="id_choice_integer">Choice integer:</label> <select id="id_choice_integer" name="choice_integer"> <option value="" selected>No Preference</option> @@ -384,7 +384,7 @@ class EmptyLabelTestCase(TestCase): self.assertHTMLEqual( f.as_p(), """<p><label for="id_name">Name:</label> -<input id="id_name" maxlength="10" name="name" type="text" value="foo-test" required /></p> +<input id="id_name" maxlength="10" name="name" type="text" value="foo-test" required></p> <p><label for="id_choice_integer">Choice integer:</label> <select id="id_choice_integer" name="choice_integer"> <option value="">No Preference</option> diff --git a/tests/forms_tests/widget_tests/test_checkboxinput.py b/tests/forms_tests/widget_tests/test_checkboxinput.py index 1ae6ab73b6..6483b7f211 100644 --- a/tests/forms_tests/widget_tests/test_checkboxinput.py +++ b/tests/forms_tests/widget_tests/test_checkboxinput.py @@ -7,18 +7,18 @@ class CheckboxInputTest(WidgetTest): widget = CheckboxInput() def test_render_empty(self): - self.check_html(self.widget, 'is_cool', '', html='<input type="checkbox" name="is_cool" />') + self.check_html(self.widget, 'is_cool', '', html='<input type="checkbox" name="is_cool">') def test_render_none(self): - self.check_html(self.widget, 'is_cool', None, html='<input type="checkbox" name="is_cool" />') + self.check_html(self.widget, 'is_cool', None, html='<input type="checkbox" name="is_cool">') def test_render_false(self): - self.check_html(self.widget, 'is_cool', False, html='<input type="checkbox" name="is_cool" />') + self.check_html(self.widget, 'is_cool', False, html='<input type="checkbox" name="is_cool">') def test_render_true(self): self.check_html( self.widget, 'is_cool', True, - html='<input checked type="checkbox" name="is_cool" />' + html='<input checked type="checkbox" name="is_cool">' ) def test_render_value(self): @@ -28,7 +28,7 @@ class CheckboxInputTest(WidgetTest): """ self.check_html( self.widget, 'is_cool', 'foo', - html='<input checked type="checkbox" name="is_cool" value="foo" />', + html='<input checked type="checkbox" name="is_cool" value="foo">', ) def test_render_int(self): @@ -37,11 +37,11 @@ class CheckboxInputTest(WidgetTest): """ self.check_html( self.widget, 'is_cool', 0, - html='<input checked type="checkbox" name="is_cool" value="0" />', + html='<input checked type="checkbox" name="is_cool" value="0">', ) self.check_html( self.widget, 'is_cool', 1, - html='<input checked type="checkbox" name="is_cool" value="1" />', + html='<input checked type="checkbox" name="is_cool" value="1">', ) def test_render_check_test(self): @@ -51,16 +51,16 @@ class CheckboxInputTest(WidgetTest): """ widget = CheckboxInput(check_test=lambda value: value.startswith('hello')) self.check_html(widget, 'greeting', '', html=( - '<input type="checkbox" name="greeting" />' + '<input type="checkbox" name="greeting">' )) self.check_html(widget, 'greeting', 'hello', html=( - '<input checked type="checkbox" name="greeting" value="hello" />' + '<input checked type="checkbox" name="greeting" value="hello">' )) self.check_html(widget, 'greeting', 'hello there', html=( - '<input checked type="checkbox" name="greeting" value="hello there" />' + '<input checked type="checkbox" name="greeting" value="hello there">' )) self.check_html(widget, 'greeting', 'hello & goodbye', html=( - '<input checked type="checkbox" name="greeting" value="hello & goodbye" />' + '<input checked type="checkbox" name="greeting" value="hello & goodbye">' )) def test_render_check_exception(self): diff --git a/tests/forms_tests/widget_tests/test_checkboxselectmultiple.py b/tests/forms_tests/widget_tests/test_checkboxselectmultiple.py index 239f80da47..ef31ce9d36 100644 --- a/tests/forms_tests/widget_tests/test_checkboxselectmultiple.py +++ b/tests/forms_tests/widget_tests/test_checkboxselectmultiple.py @@ -13,20 +13,20 @@ class CheckboxSelectMultipleTest(WidgetTest): def test_render_value(self): self.check_html(self.widget(choices=self.beatles), 'beatles', ['J'], html=( """<ul> - <li><label><input checked type="checkbox" name="beatles" value="J" /> John</label></li> - <li><label><input type="checkbox" name="beatles" value="P" /> Paul</label></li> - <li><label><input type="checkbox" name="beatles" value="G" /> George</label></li> - <li><label><input type="checkbox" name="beatles" value="R" /> Ringo</label></li> + <li><label><input checked type="checkbox" name="beatles" value="J"> John</label></li> + <li><label><input type="checkbox" name="beatles" value="P"> Paul</label></li> + <li><label><input type="checkbox" name="beatles" value="G"> George</label></li> + <li><label><input type="checkbox" name="beatles" value="R"> Ringo</label></li> </ul>""" )) def test_render_value_multiple(self): self.check_html(self.widget(choices=self.beatles), 'beatles', ['J', 'P'], html=( """<ul> - <li><label><input checked type="checkbox" name="beatles" value="J" /> John</label></li> - <li><label><input checked type="checkbox" name="beatles" value="P" /> Paul</label></li> - <li><label><input type="checkbox" name="beatles" value="G" /> George</label></li> - <li><label><input type="checkbox" name="beatles" value="R" /> Ringo</label></li> + <li><label><input checked type="checkbox" name="beatles" value="J"> John</label></li> + <li><label><input checked type="checkbox" name="beatles" value="P"> Paul</label></li> + <li><label><input type="checkbox" name="beatles" value="G"> George</label></li> + <li><label><input type="checkbox" name="beatles" value="R"> Ringo</label></li> </ul>""" )) @@ -36,10 +36,10 @@ class CheckboxSelectMultipleTest(WidgetTest): """ self.check_html(self.widget(choices=self.beatles), 'beatles', None, html=( """<ul> - <li><label><input type="checkbox" name="beatles" value="J" /> John</label></li> - <li><label><input type="checkbox" name="beatles" value="P" /> Paul</label></li> - <li><label><input type="checkbox" name="beatles" value="G" /> George</label></li> - <li><label><input type="checkbox" name="beatles" value="R" /> Ringo</label></li> + <li><label><input type="checkbox" name="beatles" value="J"> John</label></li> + <li><label><input type="checkbox" name="beatles" value="P"> Paul</label></li> + <li><label><input type="checkbox" name="beatles" value="G"> George</label></li> + <li><label><input type="checkbox" name="beatles" value="R"> Ringo</label></li> </ul>""" )) @@ -52,25 +52,25 @@ class CheckboxSelectMultipleTest(WidgetTest): html = """ <ul id="media"> <li> - <label for="media_0"><input id="media_0" name="nestchoice" type="checkbox" value="unknown" /> Unknown</label> + <label for="media_0"><input id="media_0" name="nestchoice" type="checkbox" value="unknown"> Unknown</label> </li> <li>Audio<ul id="media_1"> <li> <label for="media_1_0"> - <input checked id="media_1_0" name="nestchoice" type="checkbox" value="vinyl" /> Vinyl + <input checked id="media_1_0" name="nestchoice" type="checkbox" value="vinyl"> Vinyl </label> </li> <li> - <label for="media_1_1"><input id="media_1_1" name="nestchoice" type="checkbox" value="cd" /> CD</label> + <label for="media_1_1"><input id="media_1_1" name="nestchoice" type="checkbox" value="cd"> CD</label> </li> </ul></li> <li>Video<ul id="media_2"> <li> - <label for="media_2_0"><input id="media_2_0" name="nestchoice" type="checkbox" value="vhs" /> VHS</label> + <label for="media_2_0"><input id="media_2_0" name="nestchoice" type="checkbox" value="vhs"> VHS</label> </li> <li> <label for="media_2_1"> - <input checked id="media_2_1" name="nestchoice" type="checkbox" value="dvd" /> DVD + <input checked id="media_2_1" name="nestchoice" type="checkbox" value="dvd"> DVD </label> </li> </ul></li> @@ -90,25 +90,25 @@ class CheckboxSelectMultipleTest(WidgetTest): html = """ <ul> <li> - <label><input name="nestchoice" type="checkbox" value="unknown" /> Unknown</label> + <label><input name="nestchoice" type="checkbox" value="unknown"> Unknown</label> </li> <li>Audio<ul> <li> <label> - <input checked name="nestchoice" type="checkbox" value="vinyl" /> Vinyl + <input checked name="nestchoice" type="checkbox" value="vinyl"> Vinyl </label> </li> <li> - <label><input name="nestchoice" type="checkbox" value="cd" /> CD</label> + <label><input name="nestchoice" type="checkbox" value="cd"> CD</label> </li> </ul></li> <li>Video<ul> <li> - <label><input name="nestchoice" type="checkbox" value="vhs" /> VHS</label> + <label><input name="nestchoice" type="checkbox" value="vhs"> VHS</label> </li> <li> <label> - <input checked name="nestchoice" type="checkbox" value="dvd" /> DVD + <input checked name="nestchoice" type="checkbox" value="dvd"> DVD </label> </li> </ul></li> @@ -124,11 +124,11 @@ class CheckboxSelectMultipleTest(WidgetTest): html = """ <ul id="abc"> <li> - <label for="abc_0"><input checked type="checkbox" name="letters" value="a" id="abc_0" /> A</label> + <label for="abc_0"><input checked type="checkbox" name="letters" value="a" id="abc_0"> A</label> </li> - <li><label for="abc_1"><input type="checkbox" name="letters" value="b" id="abc_1" /> B</label></li> + <li><label for="abc_1"><input type="checkbox" name="letters" value="b" id="abc_1"> B</label></li> <li> - <label for="abc_2"><input checked type="checkbox" name="letters" value="c" id="abc_2" /> C</label> + <label for="abc_2"><input checked type="checkbox" name="letters" value="c" id="abc_2"> C</label> </li> </ul> """ @@ -142,11 +142,11 @@ class CheckboxSelectMultipleTest(WidgetTest): html = """ <ul id="abc"> <li> - <label for="abc_0"><input checked type="checkbox" name="letters" value="a" id="abc_0" /> A</label> + <label for="abc_0"><input checked type="checkbox" name="letters" value="a" id="abc_0"> A</label> </li> - <li><label for="abc_1"><input type="checkbox" name="letters" value="b" id="abc_1" /> B</label></li> + <li><label for="abc_1"><input type="checkbox" name="letters" value="b" id="abc_1"> B</label></li> <li> - <label for="abc_2"><input checked type="checkbox" name="letters" value="c" id="abc_2" /> C</label> + <label for="abc_2"><input checked type="checkbox" name="letters" value="c" id="abc_2"> C</label> </li> </ul> """ @@ -161,9 +161,9 @@ class CheckboxSelectMultipleTest(WidgetTest): ] html = """ <ul> - <li><label><input type="checkbox" name="numbers" value="1" /> One</label></li> - <li><label><input type="checkbox" name="numbers" value="1000" /> One thousand</label></li> - <li><label><input type="checkbox" name="numbers" value="1000000" /> One million</label></li> + <li><label><input type="checkbox" name="numbers" value="1"> One</label></li> + <li><label><input type="checkbox" name="numbers" value="1000"> One thousand</label></li> + <li><label><input type="checkbox" name="numbers" value="1000000"> One million</label></li> </ul> """ self.check_html(self.widget(choices=choices), 'numbers', None, html=html) @@ -174,8 +174,8 @@ class CheckboxSelectMultipleTest(WidgetTest): ] html = """ <ul> - <li><label><input type="checkbox" name="times" value="00:00:00" /> midnight</label></li> - <li><label><input type="checkbox" name="times" value="12:00:00" /> noon</label></li> + <li><label><input type="checkbox" name="times" value="00:00:00"> midnight</label></li> + <li><label><input type="checkbox" name="times" value="12:00:00"> noon</label></li> </ul> """ self.check_html(self.widget(choices=choices), 'times', None, html=html) diff --git a/tests/forms_tests/widget_tests/test_clearablefileinput.py b/tests/forms_tests/widget_tests/test_clearablefileinput.py index f338269d09..2ba376db8a 100644 --- a/tests/forms_tests/widget_tests/test_clearablefileinput.py +++ b/tests/forms_tests/widget_tests/test_clearablefileinput.py @@ -26,9 +26,9 @@ class ClearableFileInputTest(WidgetTest): self.check_html(self.widget, 'myfile', FakeFieldFile(), html=( """ Currently: <a href="something">something</a> - <input type="checkbox" name="myfile-clear" id="myfile-clear_id" /> - <label for="myfile-clear_id">Clear</label><br /> - Change: <input type="file" name="myfile" /> + <input type="checkbox" name="myfile-clear" id="myfile-clear_id"> + <label for="myfile-clear_id">Clear</label><br> + Change: <input type="file" name="myfile"> """ )) @@ -47,9 +47,9 @@ class ClearableFileInputTest(WidgetTest): """ Currently: <a href="something?chapter=1&sect=2&copy=3&lang=en"> something<div onclick="alert('oops')">.jpg</a> - <input type="checkbox" name="my<div>file-clear" id="my<div>file-clear_id" /> - <label for="my<div>file-clear_id">Clear</label><br /> - Change: <input type="file" name="my<div>file" /> + <input type="checkbox" name="my<div>file-clear" id="my<div>file-clear_id"> + <label for="my<div>file-clear_id">Clear</label><br> + Change: <input type="file" name="my<div>file"> """ )) @@ -62,8 +62,8 @@ class ClearableFileInputTest(WidgetTest): widget.is_required = True self.check_html(widget, 'myfile', FakeFieldFile(), html=( """ - Currently: <a href="something">something</a> <br /> - Change: <input type="file" name="myfile" /> + Currently: <a href="something">something</a> <br> + Change: <input type="file" name="myfile"> """ )) @@ -72,7 +72,7 @@ class ClearableFileInputTest(WidgetTest): A ClearableFileInput instantiated with no initial value does not render a clear checkbox. """ - self.check_html(self.widget, 'myfile', None, html='<input type="file" name="myfile" />') + self.check_html(self.widget, 'myfile', None, html='<input type="file" name="myfile">') def test_render_as_subwidget(self): """A ClearableFileInput as a subwidget of MultiWidget.""" @@ -80,9 +80,9 @@ class ClearableFileInputTest(WidgetTest): self.check_html(widget, 'myfile', [FakeFieldFile()], html=( """ Currently: <a href="something">something</a> - <input type="checkbox" name="myfile_0-clear" id="myfile_0-clear_id" /> - <label for="myfile_0-clear_id">Clear</label><br /> - Change: <input type="file" name="myfile_0" /> + <input type="checkbox" name="myfile_0-clear" id="myfile_0-clear_id"> + <label for="myfile_0-clear_id">Clear</label><br> + Change: <input type="file" name="myfile_0"> """ )) @@ -148,7 +148,7 @@ class ClearableFileInputTest(WidgetTest): return 'value' html = self.widget.render('myfile', NoURLFieldFile()) - self.assertHTMLEqual(html, '<input name="myfile" type="file" />') + self.assertHTMLEqual(html, '<input name="myfile" type="file">') def test_use_required_attribute(self): # False when initial data exists. The file input is left blank by the diff --git a/tests/forms_tests/widget_tests/test_dateinput.py b/tests/forms_tests/widget_tests/test_dateinput.py index 3cf15fed8a..8fae6c672a 100644 --- a/tests/forms_tests/widget_tests/test_dateinput.py +++ b/tests/forms_tests/widget_tests/test_dateinput.py @@ -11,15 +11,15 @@ class DateInputTest(WidgetTest): widget = DateInput() def test_render_none(self): - self.check_html(self.widget, 'date', None, html='<input type="text" name="date" />') + self.check_html(self.widget, 'date', None, html='<input type="text" name="date">') def test_render_value(self): d = date(2007, 9, 17) self.assertEqual(str(d), '2007-09-17') - self.check_html(self.widget, 'date', d, html='<input type="text" name="date" value="2007-09-17" />') + self.check_html(self.widget, 'date', d, html='<input type="text" name="date" value="2007-09-17">') self.check_html(self.widget, 'date', date(2007, 9, 17), html=( - '<input type="text" name="date" value="2007-09-17" />' + '<input type="text" name="date" value="2007-09-17">' )) def test_string(self): @@ -27,7 +27,7 @@ class DateInputTest(WidgetTest): Should be able to initialize from a string value. """ self.check_html(self.widget, 'date', '2007-09-17', html=( - '<input type="text" name="date" value="2007-09-17" />' + '<input type="text" name="date" value="2007-09-17">' )) def test_format(self): @@ -36,12 +36,12 @@ class DateInputTest(WidgetTest): """ d = date(2007, 9, 17) widget = DateInput(format='%d/%m/%Y', attrs={'type': 'date'}) - self.check_html(widget, 'date', d, html='<input type="date" name="date" value="17/09/2007" />') + self.check_html(widget, 'date', d, html='<input type="date" name="date" value="17/09/2007">') @override_settings(USE_L10N=True) @translation.override('de-at') def test_l10n(self): self.check_html( self.widget, 'date', date(2007, 9, 17), - html='<input type="text" name="date" value="17.09.2007" />', + html='<input type="text" name="date" value="17.09.2007">', ) diff --git a/tests/forms_tests/widget_tests/test_datetimeinput.py b/tests/forms_tests/widget_tests/test_datetimeinput.py index 50fd7f5442..682ded3c84 100644 --- a/tests/forms_tests/widget_tests/test_datetimeinput.py +++ b/tests/forms_tests/widget_tests/test_datetimeinput.py @@ -11,7 +11,7 @@ class DateTimeInputTest(WidgetTest): widget = DateTimeInput() def test_render_none(self): - self.check_html(self.widget, 'date', None, '<input type="text" name="date" />') + self.check_html(self.widget, 'date', None, '<input type="text" name="date">') def test_render_value(self): """ @@ -20,13 +20,13 @@ class DateTimeInputTest(WidgetTest): d = datetime(2007, 9, 17, 12, 51, 34, 482548) self.assertEqual(str(d), '2007-09-17 12:51:34.482548') self.check_html(self.widget, 'date', d, html=( - '<input type="text" name="date" value="2007-09-17 12:51:34" />' + '<input type="text" name="date" value="2007-09-17 12:51:34">' )) self.check_html(self.widget, 'date', datetime(2007, 9, 17, 12, 51, 34), html=( - '<input type="text" name="date" value="2007-09-17 12:51:34" />' + '<input type="text" name="date" value="2007-09-17 12:51:34">' )) self.check_html(self.widget, 'date', datetime(2007, 9, 17, 12, 51), html=( - '<input type="text" name="date" value="2007-09-17 12:51:00" />' + '<input type="text" name="date" value="2007-09-17 12:51:00">' )) def test_render_formatted(self): @@ -37,14 +37,14 @@ class DateTimeInputTest(WidgetTest): format='%d/%m/%Y %H:%M', attrs={'type': 'datetime'}, ) d = datetime(2007, 9, 17, 12, 51, 34, 482548) - self.check_html(widget, 'date', d, html='<input type="datetime" name="date" value="17/09/2007 12:51" />') + self.check_html(widget, 'date', d, html='<input type="datetime" name="date" value="17/09/2007 12:51">') @override_settings(USE_L10N=True) @translation.override('de-at') def test_l10n(self): d = datetime(2007, 9, 17, 12, 51, 34, 482548) self.check_html(self.widget, 'date', d, html=( - '<input type="text" name="date" value="17.09.2007 12:51:34" />' + '<input type="text" name="date" value="17.09.2007 12:51:34">' )) @override_settings(USE_L10N=True) @@ -54,10 +54,10 @@ class DateTimeInputTest(WidgetTest): with self.settings(USE_L10N=False): self.check_html( self.widget, 'date', d, - html='<input type="text" name="date" value="2007-09-17 12:51:34" />', + html='<input type="text" name="date" value="2007-09-17 12:51:34">', ) with translation.override('es'): self.check_html( self.widget, 'date', d, - html='<input type="text" name="date" value="17/09/2007 12:51:34" />', + html='<input type="text" name="date" value="17/09/2007 12:51:34">', ) diff --git a/tests/forms_tests/widget_tests/test_fileinput.py b/tests/forms_tests/widget_tests/test_fileinput.py index 6e96dc7b5f..bbd7c7fe52 100644 --- a/tests/forms_tests/widget_tests/test_fileinput.py +++ b/tests/forms_tests/widget_tests/test_fileinput.py @@ -11,9 +11,9 @@ class FileInputTest(WidgetTest): FileInput widgets never render the value attribute. The old value isn't useful if a form is updated or an error occurred. """ - self.check_html(self.widget, 'email', 'test@example.com', html='<input type="file" name="email" />') - self.check_html(self.widget, 'email', '', html='<input type="file" name="email" />') - self.check_html(self.widget, 'email', None, html='<input type="file" name="email" />') + self.check_html(self.widget, 'email', 'test@example.com', html='<input type="file" name="email">') + self.check_html(self.widget, 'email', '', html='<input type="file" name="email">') + self.check_html(self.widget, 'email', None, html='<input type="file" name="email">') def test_value_omitted_from_data(self): self.assertIs(self.widget.value_omitted_from_data({}, {}, 'field'), True) diff --git a/tests/forms_tests/widget_tests/test_hiddeninput.py b/tests/forms_tests/widget_tests/test_hiddeninput.py index d1604a31e4..a7d036410c 100644 --- a/tests/forms_tests/widget_tests/test_hiddeninput.py +++ b/tests/forms_tests/widget_tests/test_hiddeninput.py @@ -7,7 +7,7 @@ class HiddenInputTest(WidgetTest): widget = HiddenInput() def test_render(self): - self.check_html(self.widget, 'email', '', html='<input type="hidden" name="email" />') + self.check_html(self.widget, 'email', '', html='<input type="hidden" name="email">') def test_use_required_attribute(self): # Always False to avoid browser validation on inputs hidden from the diff --git a/tests/forms_tests/widget_tests/test_input.py b/tests/forms_tests/widget_tests/test_input.py index e773d94d8a..8be971826e 100644 --- a/tests/forms_tests/widget_tests/test_input.py +++ b/tests/forms_tests/widget_tests/test_input.py @@ -8,8 +8,8 @@ class InputTests(WidgetTest): def test_attrs_with_type(self): attrs = {'type': 'date'} widget = Input(attrs) - self.check_html(widget, 'name', 'value', '<input type="date" name="name" value="value" />') + self.check_html(widget, 'name', 'value', '<input type="date" name="name" value="value">') # reuse the same attrs for another widget - self.check_html(Input(attrs), 'name', 'value', '<input type="date" name="name" value="value" />') + self.check_html(Input(attrs), 'name', 'value', '<input type="date" name="name" value="value">') attrs['type'] = 'number' # shouldn't change the widget type - self.check_html(widget, 'name', 'value', '<input type="date" name="name" value="value" />') + self.check_html(widget, 'name', 'value', '<input type="date" name="name" value="value">') diff --git a/tests/forms_tests/widget_tests/test_multiplehiddeninput.py b/tests/forms_tests/widget_tests/test_multiplehiddeninput.py index d1c1ae6fa5..37d54174ee 100644 --- a/tests/forms_tests/widget_tests/test_multiplehiddeninput.py +++ b/tests/forms_tests/widget_tests/test_multiplehiddeninput.py @@ -9,30 +9,30 @@ class MultipleHiddenInputTest(WidgetTest): def test_render_single(self): self.check_html( self.widget, 'email', ['test@example.com'], - html='<input type="hidden" name="email" value="test@example.com" />', + html='<input type="hidden" name="email" value="test@example.com">', ) def test_render_multiple(self): self.check_html( self.widget, 'email', ['test@example.com', 'foo@example.com'], html=( - '<input type="hidden" name="email" value="test@example.com" />\n' - '<input type="hidden" name="email" value="foo@example.com" />' + '<input type="hidden" name="email" value="test@example.com">\n' + '<input type="hidden" name="email" value="foo@example.com">' ), ) def test_render_attrs(self): self.check_html( self.widget, 'email', ['test@example.com'], attrs={'class': 'fun'}, - html='<input type="hidden" name="email" value="test@example.com" class="fun" />', + html='<input type="hidden" name="email" value="test@example.com" class="fun">', ) def test_render_attrs_multiple(self): self.check_html( self.widget, 'email', ['test@example.com', 'foo@example.com'], attrs={'class': 'fun'}, html=( - '<input type="hidden" name="email" value="test@example.com" class="fun" />\n' - '<input type="hidden" name="email" value="foo@example.com" class="fun" />' + '<input type="hidden" name="email" value="test@example.com" class="fun">\n' + '<input type="hidden" name="email" value="foo@example.com" class="fun">' ), ) @@ -41,18 +41,18 @@ class MultipleHiddenInputTest(WidgetTest): self.check_html(widget, 'email', [], '') self.check_html( widget, 'email', ['foo@example.com'], - html='<input type="hidden" class="fun" value="foo@example.com" name="email" />', + html='<input type="hidden" class="fun" value="foo@example.com" name="email">', ) self.check_html( widget, 'email', ['foo@example.com', 'test@example.com'], html=( - '<input type="hidden" class="fun" value="foo@example.com" name="email" />\n' - '<input type="hidden" class="fun" value="test@example.com" name="email" />' + '<input type="hidden" class="fun" value="foo@example.com" name="email">\n' + '<input type="hidden" class="fun" value="test@example.com" name="email">' ), ) self.check_html( widget, 'email', ['foo@example.com'], attrs={'class': 'special'}, - html='<input type="hidden" class="special" value="foo@example.com" name="email" />', + html='<input type="hidden" class="special" value="foo@example.com" name="email">', ) def test_render_empty(self): @@ -68,8 +68,8 @@ class MultipleHiddenInputTest(WidgetTest): self.check_html( self.widget, 'letters', ['a', 'b', 'c'], attrs={'id': 'hideme'}, html=( - '<input type="hidden" name="letters" value="a" id="hideme_0" />\n' - '<input type="hidden" name="letters" value="b" id="hideme_1" />\n' - '<input type="hidden" name="letters" value="c" id="hideme_2" />' + '<input type="hidden" name="letters" value="a" id="hideme_0">\n' + '<input type="hidden" name="letters" value="b" id="hideme_1">\n' + '<input type="hidden" name="letters" value="c" id="hideme_2">' ), ) diff --git a/tests/forms_tests/widget_tests/test_multiwidget.py b/tests/forms_tests/widget_tests/test_multiwidget.py index bce806231d..783eb78b85 100644 --- a/tests/forms_tests/widget_tests/test_multiwidget.py +++ b/tests/forms_tests/widget_tests/test_multiwidget.py @@ -88,16 +88,16 @@ class MultiWidgetTest(WidgetTest): ) ) self.check_html(widget, 'name', ['john', 'lennon'], html=( - '<input type="text" class="big" value="john" name="name_0" />' - '<input type="text" class="small" value="lennon" name="name_1" />' + '<input type="text" class="big" value="john" name="name_0">' + '<input type="text" class="small" value="lennon" name="name_1">' )) self.check_html(widget, 'name', 'john__lennon', html=( - '<input type="text" class="big" value="john" name="name_0" />' - '<input type="text" class="small" value="lennon" name="name_1" />' + '<input type="text" class="big" value="john" name="name_0">' + '<input type="text" class="small" value="lennon" name="name_1">' )) self.check_html(widget, 'name', 'john__lennon', attrs={'id': 'foo'}, html=( - '<input id="foo_0" type="text" class="big" value="john" name="name_0" />' - '<input id="foo_1" type="text" class="small" value="lennon" name="name_1" />' + '<input id="foo_0" type="text" class="big" value="john" name="name_0">' + '<input id="foo_1" type="text" class="small" value="lennon" name="name_1">' )) def test_constructor_attrs(self): @@ -109,21 +109,21 @@ class MultiWidgetTest(WidgetTest): attrs={'id': 'bar'}, ) self.check_html(widget, 'name', ['john', 'lennon'], html=( - '<input id="bar_0" type="text" class="big" value="john" name="name_0" />' - '<input id="bar_1" type="text" class="small" value="lennon" name="name_1" />' + '<input id="bar_0" type="text" class="big" value="john" name="name_0">' + '<input id="bar_1" type="text" class="small" value="lennon" name="name_1">' )) def test_constructor_attrs_with_type(self): attrs = {'type': 'number'} widget = MyMultiWidget(widgets=(TextInput, TextInput()), attrs=attrs) self.check_html(widget, 'code', ['1', '2'], html=( - '<input type="number" value="1" name="code_0" />' - '<input type="number" value="2" name="code_1" />' + '<input type="number" value="1" name="code_0">' + '<input type="number" value="2" name="code_1">' )) widget = MyMultiWidget(widgets=(TextInput(attrs), TextInput(attrs)), attrs={'class': 'bar'}) self.check_html(widget, 'code', ['1', '2'], html=( - '<input type="number" value="1" name="code_0" class="bar" />' - '<input type="number" value="2" name="code_1" class="bar" />' + '<input type="number" value="1" name="code_0" class="bar">' + '<input type="number" value="2" name="code_1" class="bar">' )) def test_value_omitted_from_data(self): @@ -154,23 +154,23 @@ class MultiWidgetTest(WidgetTest): widget = ComplexMultiWidget() self.check_html(widget, 'name', 'some text,JP,2007-04-25 06:24:00', html=( """ - <input type="text" name="name_0" value="some text" /> + <input type="text" name="name_0" value="some text"> <select multiple name="name_1"> <option value="J" selected>John</option> <option value="P" selected>Paul</option> <option value="G">George</option> <option value="R">Ringo</option> </select> - <input type="text" name="name_2_0" value="2007-04-25" /> - <input type="text" name="name_2_1" value="06:24:00" /> + <input type="text" name="name_2_0" value="2007-04-25"> + <input type="text" name="name_2_1" value="06:24:00"> """ )) def test_no_whitespace_between_widgets(self): widget = MyMultiWidget(widgets=(TextInput, TextInput())) self.check_html(widget, 'code', None, html=( - '<input type="text" name="code_0" />' - '<input type="text" name="code_1" />' + '<input type="text" name="code_0">' + '<input type="text" name="code_1">' ), strict=True) def test_deepcopy(self): diff --git a/tests/forms_tests/widget_tests/test_numberinput.py b/tests/forms_tests/widget_tests/test_numberinput.py index 95a0a9250a..40bd94df6e 100644 --- a/tests/forms_tests/widget_tests/test_numberinput.py +++ b/tests/forms_tests/widget_tests/test_numberinput.py @@ -11,5 +11,5 @@ class NumberInputTests(WidgetTest): widget = NumberInput(attrs={'max': 12345, 'min': 1234, 'step': 9999}) self.check_html( widget, 'name', 'value', - '<input type="number" name="name" value="value" max="12345" min="1234" step="9999" />' + '<input type="number" name="name" value="value" max="12345" min="1234" step="9999">' ) diff --git a/tests/forms_tests/widget_tests/test_passwordinput.py b/tests/forms_tests/widget_tests/test_passwordinput.py index 4cb7c4ef47..ecbe274d69 100644 --- a/tests/forms_tests/widget_tests/test_passwordinput.py +++ b/tests/forms_tests/widget_tests/test_passwordinput.py @@ -7,10 +7,10 @@ class PasswordInputTest(WidgetTest): widget = PasswordInput() def test_render(self): - self.check_html(self.widget, 'password', '', html='<input type="password" name="password" />') + self.check_html(self.widget, 'password', '', html='<input type="password" name="password">') def test_render_ignore_value(self): - self.check_html(self.widget, 'password', 'secret', html='<input type="password" name="password" />') + self.check_html(self.widget, 'password', 'secret', html='<input type="password" name="password">') def test_render_value_true(self): """ @@ -18,9 +18,9 @@ class PasswordInputTest(WidgetTest): render its value. For security reasons, this is off by default. """ widget = PasswordInput(render_value=True) - self.check_html(widget, 'password', '', html='<input type="password" name="password" />') - self.check_html(widget, 'password', None, html='<input type="password" name="password" />') + self.check_html(widget, 'password', '', html='<input type="password" name="password">') + self.check_html(widget, 'password', None, html='<input type="password" name="password">') self.check_html( widget, 'password', 'test@example.com', - html='<input type="password" name="password" value="test@example.com" />', + html='<input type="password" name="password" value="test@example.com">', ) diff --git a/tests/forms_tests/widget_tests/test_radioselect.py b/tests/forms_tests/widget_tests/test_radioselect.py index 05f980eb36..d0a70c7953 100644 --- a/tests/forms_tests/widget_tests/test_radioselect.py +++ b/tests/forms_tests/widget_tests/test_radioselect.py @@ -13,11 +13,11 @@ class RadioSelectTest(WidgetTest): choices = (('', '------'),) + self.beatles self.check_html(self.widget(choices=choices), 'beatle', 'J', html=( """<ul> - <li><label><input type="radio" name="beatle" value="" /> ------</label></li> - <li><label><input checked type="radio" name="beatle" value="J" /> John</label></li> - <li><label><input type="radio" name="beatle" value="P" /> Paul</label></li> - <li><label><input type="radio" name="beatle" value="G" /> George</label></li> - <li><label><input type="radio" name="beatle" value="R" /> Ringo</label></li> + <li><label><input type="radio" name="beatle" value=""> ------</label></li> + <li><label><input checked type="radio" name="beatle" value="J"> John</label></li> + <li><label><input type="radio" name="beatle" value="P"> Paul</label></li> + <li><label><input type="radio" name="beatle" value="G"> George</label></li> + <li><label><input type="radio" name="beatle" value="R"> Ringo</label></li> </ul>""" )) @@ -30,19 +30,19 @@ class RadioSelectTest(WidgetTest): html = """ <ul id="media"> <li> - <label for="media_0"><input id="media_0" name="nestchoice" type="radio" value="unknown" /> Unknown</label> + <label for="media_0"><input id="media_0" name="nestchoice" type="radio" value="unknown"> Unknown</label> </li> <li>Audio<ul id="media_1"> <li> - <label for="media_1_0"><input id="media_1_0" name="nestchoice" type="radio" value="vinyl" /> Vinyl</label> + <label for="media_1_0"><input id="media_1_0" name="nestchoice" type="radio" value="vinyl"> Vinyl</label> </li> - <li><label for="media_1_1"><input id="media_1_1" name="nestchoice" type="radio" value="cd" /> CD</label></li> + <li><label for="media_1_1"><input id="media_1_1" name="nestchoice" type="radio" value="cd"> CD</label></li> </ul></li> <li>Video<ul id="media_2"> - <li><label for="media_2_0"><input id="media_2_0" name="nestchoice" type="radio" value="vhs" /> VHS</label></li> + <li><label for="media_2_0"><input id="media_2_0" name="nestchoice" type="radio" value="vhs"> VHS</label></li> <li> <label for="media_2_1"> - <input checked id="media_2_1" name="nestchoice" type="radio" value="dvd" /> DVD + <input checked id="media_2_1" name="nestchoice" type="radio" value="dvd"> DVD </label> </li> </ul></li> @@ -62,11 +62,11 @@ class RadioSelectTest(WidgetTest): html = """ <ul id="foo"> <li> - <label for="foo_0"><input checked type="radio" id="foo_0" value="J" name="beatle" /> John</label> + <label for="foo_0"><input checked type="radio" id="foo_0" value="J" name="beatle"> John</label> </li> - <li><label for="foo_1"><input type="radio" id="foo_1" value="P" name="beatle" /> Paul</label></li> - <li><label for="foo_2"><input type="radio" id="foo_2" value="G" name="beatle" /> George</label></li> - <li><label for="foo_3"><input type="radio" id="foo_3" value="R" name="beatle" /> Ringo</label></li> + <li><label for="foo_1"><input type="radio" id="foo_1" value="P" name="beatle"> Paul</label></li> + <li><label for="foo_2"><input type="radio" id="foo_2" value="G" name="beatle"> George</label></li> + <li><label for="foo_3"><input type="radio" id="foo_3" value="R" name="beatle"> Ringo</label></li> </ul> """ self.check_html(widget, 'beatle', 'J', html=html) @@ -79,11 +79,11 @@ class RadioSelectTest(WidgetTest): html = """ <ul id="bar"> <li> - <label for="bar_0"><input checked type="radio" id="bar_0" value="J" name="beatle" /> John</label> + <label for="bar_0"><input checked type="radio" id="bar_0" value="J" name="beatle"> John</label> </li> - <li><label for="bar_1"><input type="radio" id="bar_1" value="P" name="beatle" /> Paul</label></li> - <li><label for="bar_2"><input type="radio" id="bar_2" value="G" name="beatle" /> George</label></li> - <li><label for="bar_3"><input type="radio" id="bar_3" value="R" name="beatle" /> Ringo</label></li> + <li><label for="bar_1"><input type="radio" id="bar_1" value="P" name="beatle"> Paul</label></li> + <li><label for="bar_2"><input type="radio" id="bar_2" value="G" name="beatle"> George</label></li> + <li><label for="bar_3"><input type="radio" id="bar_3" value="R" name="beatle"> Ringo</label></li> </ul> """ self.check_html(self.widget(choices=self.beatles), 'beatle', 'J', attrs={'id': 'bar'}, html=html) @@ -95,10 +95,10 @@ class RadioSelectTest(WidgetTest): """ html = """ <ul class="bar"> - <li><label><input checked type="radio" class="bar" value="J" name="beatle" /> John</label></li> - <li><label><input type="radio" class="bar" value="P" name="beatle" /> Paul</label></li> - <li><label><input type="radio" class="bar" value="G" name="beatle" /> George</label></li> - <li><label><input type="radio" class="bar" value="R" name="beatle" /> Ringo</label></li> + <li><label><input checked type="radio" class="bar" value="J" name="beatle"> John</label></li> + <li><label><input type="radio" class="bar" value="P" name="beatle"> Paul</label></li> + <li><label><input type="radio" class="bar" value="G" name="beatle"> George</label></li> + <li><label><input type="radio" class="bar" value="R" name="beatle"> Ringo</label></li> </ul> """ self.check_html(self.widget(choices=self.beatles), 'beatle', 'J', attrs={'class': 'bar'}, html=html) @@ -112,9 +112,9 @@ class RadioSelectTest(WidgetTest): ] html = """ <ul> - <li><label><input type="radio" name="number" value="1" /> One</label></li> - <li><label><input type="radio" name="number" value="1000" /> One thousand</label></li> - <li><label><input type="radio" name="number" value="1000000" /> One million</label></li> + <li><label><input type="radio" name="number" value="1"> One</label></li> + <li><label><input type="radio" name="number" value="1000"> One thousand</label></li> + <li><label><input type="radio" name="number" value="1000000"> One million</label></li> </ul> """ self.check_html(self.widget(choices=choices), 'number', None, html=html) @@ -125,8 +125,8 @@ class RadioSelectTest(WidgetTest): ] html = """ <ul> - <li><label><input type="radio" name="time" value="00:00:00" /> midnight</label></li> - <li><label><input type="radio" name="time" value="12:00:00" /> noon</label></li> + <li><label><input type="radio" name="time" value="00:00:00"> midnight</label></li> + <li><label><input type="radio" name="time" value="12:00:00"> noon</label></li> </ul> """ self.check_html(self.widget(choices=choices), 'time', None, html=html) diff --git a/tests/forms_tests/widget_tests/test_splitdatetimewidget.py b/tests/forms_tests/widget_tests/test_splitdatetimewidget.py index 3b06fd5958..ebb30da148 100644 --- a/tests/forms_tests/widget_tests/test_splitdatetimewidget.py +++ b/tests/forms_tests/widget_tests/test_splitdatetimewidget.py @@ -10,37 +10,37 @@ class SplitDateTimeWidgetTest(WidgetTest): def test_render_empty(self): self.check_html(self.widget, 'date', '', html=( - '<input type="text" name="date_0" /><input type="text" name="date_1" />' + '<input type="text" name="date_0"><input type="text" name="date_1">' )) def test_render_none(self): self.check_html(self.widget, 'date', None, html=( - '<input type="text" name="date_0" /><input type="text" name="date_1" />' + '<input type="text" name="date_0"><input type="text" name="date_1">' )) def test_render_datetime(self): self.check_html(self.widget, 'date', datetime(2006, 1, 10, 7, 30), html=( - '<input type="text" name="date_0" value="2006-01-10" />' - '<input type="text" name="date_1" value="07:30:00" />' + '<input type="text" name="date_0" value="2006-01-10">' + '<input type="text" name="date_1" value="07:30:00">' )) def test_render_date_and_time(self): self.check_html(self.widget, 'date', [date(2006, 1, 10), time(7, 30)], html=( - '<input type="text" name="date_0" value="2006-01-10" />' - '<input type="text" name="date_1" value="07:30:00" />' + '<input type="text" name="date_0" value="2006-01-10">' + '<input type="text" name="date_1" value="07:30:00">' )) def test_constructor_attrs(self): widget = SplitDateTimeWidget(attrs={'class': 'pretty'}) self.check_html(widget, 'date', datetime(2006, 1, 10, 7, 30), html=( - '<input type="text" class="pretty" value="2006-01-10" name="date_0" />' - '<input type="text" class="pretty" value="07:30:00" name="date_1" />' + '<input type="text" class="pretty" value="2006-01-10" name="date_0">' + '<input type="text" class="pretty" value="07:30:00" name="date_1">' )) def test_constructor_different_attrs(self): html = ( - '<input type="text" class="foo" value="2006-01-10" name="date_0" />' - '<input type="text" class="bar" value="07:30:00" name="date_1" />' + '<input type="text" class="foo" value="2006-01-10" name="date_0">' + '<input type="text" class="bar" value="07:30:00" name="date_1">' ) widget = SplitDateTimeWidget(date_attrs={'class': 'foo'}, time_attrs={'class': 'bar'}) self.check_html(widget, 'date', datetime(2006, 1, 10, 7, 30), html=html) @@ -58,6 +58,6 @@ class SplitDateTimeWidgetTest(WidgetTest): date_format='%d/%m/%Y', time_format='%H:%M', ) self.check_html(widget, 'date', datetime(2006, 1, 10, 7, 30), html=( - '<input type="text" name="date_0" value="10/01/2006" />' - '<input type="text" name="date_1" value="07:30" />' + '<input type="text" name="date_0" value="10/01/2006">' + '<input type="text" name="date_1" value="07:30">' )) diff --git a/tests/forms_tests/widget_tests/test_splithiddendatetimewidget.py b/tests/forms_tests/widget_tests/test_splithiddendatetimewidget.py index e3adb11520..dff28161a5 100644 --- a/tests/forms_tests/widget_tests/test_splithiddendatetimewidget.py +++ b/tests/forms_tests/widget_tests/test_splithiddendatetimewidget.py @@ -12,22 +12,22 @@ class SplitHiddenDateTimeWidgetTest(WidgetTest): def test_render_empty(self): self.check_html(self.widget, 'date', '', html=( - '<input type="hidden" name="date_0" /><input type="hidden" name="date_1" />' + '<input type="hidden" name="date_0"><input type="hidden" name="date_1">' )) def test_render_value(self): d = datetime(2007, 9, 17, 12, 51, 34, 482548) self.check_html(self.widget, 'date', d, html=( - '<input type="hidden" name="date_0" value="2007-09-17" />' - '<input type="hidden" name="date_1" value="12:51:34" />' + '<input type="hidden" name="date_0" value="2007-09-17">' + '<input type="hidden" name="date_1" value="12:51:34">' )) self.check_html(self.widget, 'date', datetime(2007, 9, 17, 12, 51, 34), html=( - '<input type="hidden" name="date_0" value="2007-09-17" />' - '<input type="hidden" name="date_1" value="12:51:34" />' + '<input type="hidden" name="date_0" value="2007-09-17">' + '<input type="hidden" name="date_1" value="12:51:34">' )) self.check_html(self.widget, 'date', datetime(2007, 9, 17, 12, 51), html=( - '<input type="hidden" name="date_0" value="2007-09-17" />' - '<input type="hidden" name="date_1" value="12:51:00" />' + '<input type="hidden" name="date_0" value="2007-09-17">' + '<input type="hidden" name="date_1" value="12:51:00">' )) @override_settings(USE_L10N=True) @@ -36,15 +36,15 @@ class SplitHiddenDateTimeWidgetTest(WidgetTest): d = datetime(2007, 9, 17, 12, 51) self.check_html(self.widget, 'date', d, html=( """ - <input type="hidden" name="date_0" value="17.09.2007" /> - <input type="hidden" name="date_1" value="12:51:00" /> + <input type="hidden" name="date_0" value="17.09.2007"> + <input type="hidden" name="date_1" value="12:51:00"> """ )) def test_constructor_different_attrs(self): html = ( - '<input type="hidden" class="foo" value="2006-01-10" name="date_0" />' - '<input type="hidden" class="bar" value="07:30:00" name="date_1" />' + '<input type="hidden" class="foo" value="2006-01-10" name="date_0">' + '<input type="hidden" class="bar" value="07:30:00" name="date_1">' ) widget = SplitHiddenDateTimeWidget(date_attrs={'class': 'foo'}, time_attrs={'class': 'bar'}) self.check_html(widget, 'date', datetime(2006, 1, 10, 7, 30), html=html) diff --git a/tests/forms_tests/widget_tests/test_textinput.py b/tests/forms_tests/widget_tests/test_textinput.py index 906687d971..260e86f740 100644 --- a/tests/forms_tests/widget_tests/test_textinput.py +++ b/tests/forms_tests/widget_tests/test_textinput.py @@ -8,14 +8,14 @@ class TextInputTest(WidgetTest): widget = TextInput() def test_render(self): - self.check_html(self.widget, 'email', '', html='<input type="text" name="email" />') + self.check_html(self.widget, 'email', '', html='<input type="text" name="email">') def test_render_none(self): - self.check_html(self.widget, 'email', None, html='<input type="text" name="email" />') + self.check_html(self.widget, 'email', None, html='<input type="text" name="email">') def test_render_value(self): self.check_html(self.widget, 'email', 'test@example.com', html=( - '<input type="text" name="email" value="test@example.com" />' + '<input type="text" name="email" value="test@example.com">' )) def test_render_boolean(self): @@ -24,22 +24,22 @@ class TextInputTest(WidgetTest): "False"). """ self.check_html(self.widget, 'get_spam', False, html=( - '<input type="text" name="get_spam" value="False" />' + '<input type="text" name="get_spam" value="False">' )) self.check_html(self.widget, 'get_spam', True, html=( - '<input type="text" name="get_spam" value="True" />' + '<input type="text" name="get_spam" value="True">' )) def test_render_quoted(self): self.check_html( self.widget, 'email', 'some "quoted" & ampersanded value', - html='<input type="text" name="email" value="some "quoted" & ampersanded value" />', + html='<input type="text" name="email" value="some "quoted" & ampersanded value">', ) def test_render_custom_attrs(self): self.check_html( self.widget, 'email', 'test@example.com', attrs={'class': 'fun'}, - html='<input type="text" name="email" value="test@example.com" class="fun" />', + html='<input type="text" name="email" value="test@example.com" class="fun">', ) def test_render_unicode(self): @@ -47,16 +47,16 @@ class TextInputTest(WidgetTest): self.widget, 'email', 'ŠĐĆŽćžšđ', attrs={'class': 'fun'}, html=( '<input type="text" name="email" ' - 'value="\u0160\u0110\u0106\u017d\u0107\u017e\u0161\u0111" class="fun" />' + 'value="\u0160\u0110\u0106\u017d\u0107\u017e\u0161\u0111" class="fun">' ), ) def test_constructor_attrs(self): widget = TextInput(attrs={'class': 'fun', 'type': 'email'}) - self.check_html(widget, 'email', '', html='<input type="email" class="fun" name="email" />') + self.check_html(widget, 'email', '', html='<input type="email" class="fun" name="email">') self.check_html( widget, 'email', 'foo@example.com', - html='<input type="email" class="fun" value="foo@example.com" name="email" />', + html='<input type="email" class="fun" value="foo@example.com" name="email">', ) def test_attrs_precedence(self): @@ -67,12 +67,12 @@ class TextInputTest(WidgetTest): widget = TextInput(attrs={'class': 'pretty'}) self.check_html( widget, 'email', '', attrs={'class': 'special'}, - html='<input type="text" class="special" name="email" />', + html='<input type="text" class="special" name="email">', ) def test_attrs_safestring(self): widget = TextInput(attrs={'onBlur': mark_safe("function('foo')")}) - self.check_html(widget, 'email', '', html='<input onBlur="function(\'foo\')" type="text" name="email" />') + self.check_html(widget, 'email', '', html='<input onBlur="function(\'foo\')" type="text" name="email">') def test_use_required_attribute(self): # Text inputs can safely trigger the browser validation. diff --git a/tests/forms_tests/widget_tests/test_timeinput.py b/tests/forms_tests/widget_tests/test_timeinput.py index ab355e2ec9..1a511e4cab 100644 --- a/tests/forms_tests/widget_tests/test_timeinput.py +++ b/tests/forms_tests/widget_tests/test_timeinput.py @@ -11,7 +11,7 @@ class TimeInputTest(WidgetTest): widget = TimeInput() def test_render_none(self): - self.check_html(self.widget, 'time', None, html='<input type="text" name="time" />') + self.check_html(self.widget, 'time', None, html='<input type="text" name="time">') def test_render_value(self): """ @@ -19,18 +19,18 @@ class TimeInputTest(WidgetTest): """ t = time(12, 51, 34, 482548) self.assertEqual(str(t), '12:51:34.482548') - self.check_html(self.widget, 'time', t, html='<input type="text" name="time" value="12:51:34" />') + self.check_html(self.widget, 'time', t, html='<input type="text" name="time" value="12:51:34">') self.check_html(self.widget, 'time', time(12, 51, 34), html=( - '<input type="text" name="time" value="12:51:34" />' + '<input type="text" name="time" value="12:51:34">' )) self.check_html(self.widget, 'time', time(12, 51), html=( - '<input type="text" name="time" value="12:51:00" />' + '<input type="text" name="time" value="12:51:00">' )) def test_string(self): """Initializing from a string value.""" self.check_html(self.widget, 'time', '13:12:11', html=( - '<input type="text" name="time" value="13:12:11" />' + '<input type="text" name="time" value="13:12:11">' )) def test_format(self): @@ -39,10 +39,10 @@ class TimeInputTest(WidgetTest): """ t = time(12, 51, 34, 482548) widget = TimeInput(format='%H:%M', attrs={'type': 'time'}) - self.check_html(widget, 'time', t, html='<input type="time" name="time" value="12:51" />') + self.check_html(widget, 'time', t, html='<input type="time" name="time" value="12:51">') @override_settings(USE_L10N=True) @translation.override('de-at') def test_l10n(self): t = time(12, 51, 34, 482548) - self.check_html(self.widget, 'time', t, html='<input type="text" name="time" value="12:51:34" />') + self.check_html(self.widget, 'time', t, html='<input type="text" name="time" value="12:51:34">') diff --git a/tests/forms_tests/widget_tests/test_widget.py b/tests/forms_tests/widget_tests/test_widget.py index f25fe1e5fe..8cde388b8f 100644 --- a/tests/forms_tests/widget_tests/test_widget.py +++ b/tests/forms_tests/widget_tests/test_widget.py @@ -19,8 +19,8 @@ class WidgetTests(WidgetTest): self.assertIs(widget.value_omitted_from_data({'field': 'value'}, {}, 'field'), False) def test_no_trailing_newline_in_attrs(self): - self.check_html(Input(), 'name', 'value', strict=True, html='<input type="None" name="name" value="value" />') + self.check_html(Input(), 'name', 'value', strict=True, html='<input type="None" name="name" value="value">') def test_attr_false_not_rendered(self): - html = '<input type="None" name="name" value="value" />' + html = '<input type="None" name="name" value="value">' self.check_html(Input(), 'name', 'value', html=html, attrs={'readonly': False}) |
