From ff05de760cc4ef4c7f188e163c722ec3bc1f0cbf Mon Sep 17 00:00:00 2001 From: Jon Dufresne Date: Sat, 20 Jan 2018 23:09:10 -0800 Subject: Fixed #29038 -- Removed closing slash from HTML void tags. --- tests/forms_tests/field_tests/test_charfield.py | 2 +- tests/forms_tests/field_tests/test_datefield.py | 2 +- tests/forms_tests/field_tests/test_decimalfield.py | 8 +- tests/forms_tests/field_tests/test_emailfield.py | 4 +- tests/forms_tests/field_tests/test_floatfield.py | 8 +- tests/forms_tests/field_tests/test_integerfield.py | 10 +- .../field_tests/test_multivaluefield.py | 12 +- .../field_tests/test_nullbooleanfield.py | 4 +- tests/forms_tests/field_tests/test_urlfield.py | 4 +- tests/forms_tests/tests/test_forms.py | 844 ++++++++++----------- tests/forms_tests/tests/test_formsets.py | 206 ++--- tests/forms_tests/tests/test_i18n.py | 18 +- tests/forms_tests/tests/test_media.py | 112 +-- tests/forms_tests/tests/tests.py | 30 +- .../forms_tests/widget_tests/test_checkboxinput.py | 22 +- .../widget_tests/test_checkboxselectmultiple.py | 66 +- .../widget_tests/test_clearablefileinput.py | 26 +- tests/forms_tests/widget_tests/test_dateinput.py | 12 +- .../forms_tests/widget_tests/test_datetimeinput.py | 16 +- tests/forms_tests/widget_tests/test_fileinput.py | 6 +- tests/forms_tests/widget_tests/test_hiddeninput.py | 2 +- tests/forms_tests/widget_tests/test_input.py | 6 +- .../widget_tests/test_multiplehiddeninput.py | 26 +- tests/forms_tests/widget_tests/test_multiwidget.py | 34 +- tests/forms_tests/widget_tests/test_numberinput.py | 2 +- .../forms_tests/widget_tests/test_passwordinput.py | 10 +- tests/forms_tests/widget_tests/test_radioselect.py | 54 +- .../widget_tests/test_splitdatetimewidget.py | 24 +- .../widget_tests/test_splithiddendatetimewidget.py | 22 +- tests/forms_tests/widget_tests/test_textinput.py | 24 +- tests/forms_tests/widget_tests/test_timeinput.py | 14 +- tests/forms_tests/widget_tests/test_widget.py | 4 +- 32 files changed, 817 insertions(+), 817 deletions(-) (limited to 'tests/forms_tests') 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, '') + self.assertWidgetRendersTo(f, '') 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(), - '', + '', ) 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, '') + self.assertWidgetRendersTo(f, '') 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, - '', + '', ) 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, '') + self.assertWidgetRendersTo(f, '') def test_decimalfield_localized(self): """ @@ -144,7 +144,7 @@ class DecimalFieldTest(FormFieldAssertionsMixin, SimpleTestCase): number input specific attributes. """ f = DecimalField(localize=True) - self.assertWidgetRendersTo(f, '') + self.assertWidgetRendersTo(f, '') 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, '') + self.assertWidgetRendersTo(f, '') 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, - '', + '', ) 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, '') + self.assertWidgetRendersTo(f, '') 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, - '', + '', ) 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, - '', + '', ) def test_floatfield_localized(self): @@ -73,7 +73,7 @@ class FloatFieldTest(FormFieldAssertionsMixin, SimpleTestCase): number input specific attributes. """ f = FloatField(localize=True) - self.assertWidgetRendersTo(f, '') + self.assertWidgetRendersTo(f, '') 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, '') + self.assertWidgetRendersTo(f, '') 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, '') + self.assertWidgetRendersTo(f, '') 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, '') + self.assertWidgetRendersTo(f, '') 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, '') + self.assertWidgetRendersTo(f, '') 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, '') + self.assertWidgetRendersTo(f1, '') 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(), """ - + - - + + """, ) @@ -151,15 +151,15 @@ class MultiValueFieldTest(SimpleTestCase): form.as_table(), """ - + - - + + """, ) 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( - '' - '', + '' + '', 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, '') + self.assertWidgetRendersTo(f, '') 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, '') + self.assertWidgetRendersTo(f, '') 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']), - '' + '' ) self.assertHTMLEqual( str(p['last_name']), - '' + '' ) self.assertHTMLEqual( str(p['birthday']), - '' + '' ) 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), - """ - -""" + """ + +""" ) form_output = [] @@ -99,11 +99,11 @@ class FormsTestCase(SimpleTestCase): self.assertHTMLEqual( str(p), """ - + - + -""" +""" ) def test_empty_dict(self): @@ -119,49 +119,49 @@ class FormsTestCase(SimpleTestCase): str(p), """ - + - + -""" +""" ) self.assertHTMLEqual( p.as_table(), """ - + - + -""" +""" ) self.assertHTMLEqual( p.as_ul(), """
  • -
  • +
  • -
  • +
  • -
  • """ +""" ) self.assertHTMLEqual( p.as_p(), """

    -

    +

    -

    +

    -

    """ +

    """ ) def test_empty_querydict_args(self): @@ -185,38 +185,38 @@ class FormsTestCase(SimpleTestCase): self.assertHTMLEqual( str(p), """ - + - + -""" +""" ) self.assertHTMLEqual( p.as_table(), """ - + - + -""" +""" ) self.assertHTMLEqual( p.as_ul(), """
  • -
  • +
  • -
  • +
  • -
  • """ +""" ) self.assertHTMLEqual( p.as_p(), """

    -

    +

    -

    +

    -

    """ +

    """ ) def test_unicode_values(self): @@ -229,33 +229,33 @@ class FormsTestCase(SimpleTestCase): self.assertHTMLEqual( p.as_table(), '' - '\n' + '\n' '' '\n' + 'id="id_last_name" required>\n' '' - '' + '' ) self.assertHTMLEqual( p.as_ul(), '
  • ' - '
  • \n' + '\n' '
  • ' '
  • \n' + 'value="\u0160\u0110\u0106\u017d\u0107\u017e\u0161\u0111" id="id_last_name" required>\n' '
  • ' - '
  • ' + '' ) self.assertHTMLEqual( p.as_p(), '

    ' - '

    \n' + '

    \n' '

    ' '

    \n' + 'value="\u0160\u0110\u0106\u017d\u0107\u017e\u0161\u0111" id="id_last_name" required>

    \n' '

    ' - '

    ' + '

    ' ) p = Person({'last_name': 'Lennon'}) @@ -277,10 +277,10 @@ class FormsTestCase(SimpleTestCase): p = Person() self.assertHTMLEqual( str(p['first_name']), - '', + '', ) - self.assertHTMLEqual(str(p['last_name']), '') - self.assertHTMLEqual(str(p['birthday']), '') + self.assertHTMLEqual(str(p['last_name']), '') + self.assertHTMLEqual(str(p['birthday']), '') 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(), """ - + - + -""" +""" ) self.assertHTMLEqual( p.as_ul(), """
  • -
  • +
  • -
  • +
  • -
  • """ +""" ) self.assertHTMLEqual( p.as_p(), """

    -

    +

    -

    +

    -

    """ +

    """ ) def test_auto_id_true(self): @@ -372,11 +372,11 @@ class FormsTestCase(SimpleTestCase): self.assertHTMLEqual( p.as_ul(), """
  • -
  • +
  • -
  • +
  • -
  • """ +""" ) def test_auto_id_false(self): @@ -385,9 +385,9 @@ class FormsTestCase(SimpleTestCase): p = Person(auto_id=False) self.assertHTMLEqual( p.as_ul(), - """
  • First name:
  • -
  • Last name:
  • -
  • Birthday:
  • """ + """
  • First name:
  • +
  • Last name:
  • +
  • Birthday:
  • """ ) def test_id_on_field(self): @@ -397,9 +397,9 @@ class FormsTestCase(SimpleTestCase): self.assertHTMLEqual( p.as_ul(), """
  • -
  • -
  • Last name:
  • -
  • Birthday:
  • """ + +
  • Last name:
  • +
  • Birthday:
  • """ ) def test_auto_id_on_form_and_field(self): @@ -409,11 +409,11 @@ class FormsTestCase(SimpleTestCase): self.assertHTMLEqual( p.as_ul(), """
  • -
  • +
  • -
  • +
  • -
  • """ +""" ) 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']), '') - self.assertHTMLEqual(str(f['get_spam']), '') + self.assertHTMLEqual(str(f['email']), '') + self.assertHTMLEqual(str(f['get_spam']), '') f = SignupForm({'email': 'test@example.com', 'get_spam': True}, auto_id=False) - self.assertHTMLEqual(str(f['email']), '') + self.assertHTMLEqual(str(f['email']), '') self.assertHTMLEqual( str(f['get_spam']), - '', + '', ) # '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']), - '', + '', ) f = SignupForm({'email': 'test@example.com', 'get_spam': 'true'}, auto_id=False) self.assertHTMLEqual( - str(f['get_spam']), '') + str(f['get_spam']), '') # 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']), '') + self.assertHTMLEqual(str(f['get_spam']), '') f = SignupForm({'email': 'test@example.com', 'get_spam': 'false'}, auto_id=False) - self.assertHTMLEqual(str(f['get_spam']), '') + self.assertHTMLEqual(str(f['get_spam']), '') # 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']), '') + self.assertHTMLEqual(str(f['subject']), '') self.assertHTMLEqual(str(f['message']), '') # as_textarea(), as_text() and as_hidden() are shortcuts for changing the output @@ -471,8 +471,8 @@ class FormsTestCase(SimpleTestCase): f['subject'].as_textarea(), '', ) - self.assertHTMLEqual(f['message'].as_text(), '') - self.assertHTMLEqual(f['message'].as_hidden(), '') + self.assertHTMLEqual(f['message'].as_text(), '') + self.assertHTMLEqual(f['message'].as_hidden(), '') # 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(), '') + self.assertHTMLEqual(f['message'].as_text(), '') 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(), - '', + '', ) - self.assertHTMLEqual(f['message'].as_hidden(), '') + self.assertHTMLEqual(f['message'].as_hidden(), '') def test_forms_with_choices(self): # For a form with a Python -
  • +
  • +
  • """) - self.assertHTMLEqual(f.as_table(), """Name: + self.assertHTMLEqual(f.as_table(), """Name: Language:""") - self.assertHTMLEqual(f.as_ul(), """
  • Name:
  • + self.assertHTMLEqual(f.as_ul(), """
  • Name:
  • Language:
  • """) # Regarding auto_id and # ID of the *first* radio button. self.assertHTMLEqual( f.as_table(), - """ + """ """ ) self.assertHTMLEqual( f.as_ul(), - """
  • + """
  • """ ) self.assertHTMLEqual( f.as_p(), - """

    + """

    """ ) @@ -652,9 +652,9 @@ Java self.assertHTMLEqual( t.render(Context({'form': f})), """
    + Python
    """ + Java""" ) def test_form_with_iterable_boundfield(self): @@ -667,17 +667,17 @@ Java f = BeatleForm(auto_id=False) self.assertHTMLEqual( '\n'.join(str(bf) for bf in f['name']), - """ - - -""" + """ + + +""" ) self.assertHTMLEqual( '\n'.join('
    %s
    ' % bf for bf in f['name']), - """
    -
    -
    -
    """ + """
    +
    +
    +
    """ ) def test_form_with_iterable_boundfield_id(self): @@ -693,24 +693,24 @@ Java self.assertEqual(fields[0].choice_label, 'John') self.assertHTMLEqual( fields[0].tag(), - '' + '' ) self.assertHTMLEqual( str(fields[0]), '' + 'value="john" id="id_name_0" required> John' ) self.assertEqual(fields[1].id_for_label, 'id_name_1') self.assertEqual(fields[1].choice_label, 'Paul') self.assertHTMLEqual( fields[1].tag(), - '' + '' ) self.assertHTMLEqual( str(fields[1]), '' + 'value="paul" id="id_name_1" required> Paul' ) def test_iterable_boundfield_select(self): @@ -730,7 +730,7 @@ Java name = CharField() f = BeatleForm(auto_id=False) - self.assertHTMLEqual('\n'.join(str(bf) for bf in f['name']), '') + self.assertHTMLEqual('\n'.join(str(bf) for bf in f['name']), '') def test_boundfield_slice(self): class BeatleForm(Form): @@ -773,7 +773,7 @@ Java """) f = SongForm({'name': 'Yesterday', 'composers': ['P']}, auto_id=False) - self.assertHTMLEqual(str(f['name']), '') + self.assertHTMLEqual(str(f['name']), '') self.assertHTMLEqual(str(f['composers']), """ # tags. f = SongForm({'name': 'Yesterday', 'composers': ['P']}, auto_id=False) - self.assertHTMLEqual(f['composers'].as_hidden(), '') + self.assertHTMLEqual(f['composers'].as_hidden(), '') f = SongForm({'name': 'From Me To You', 'composers': ['P', 'J']}, auto_id=False) - self.assertHTMLEqual(f['composers'].as_hidden(), """ -""") + self.assertHTMLEqual(f['composers'].as_hidden(), """ +""") # DateTimeField rendered as_hidden() is special too class MessageForm(Form): @@ -840,13 +840,13 @@ Java self.assertTrue(f.is_valid()) self.assertHTMLEqual( str(f['when']), - '' - '' + '' + '' ) self.assertHTMLEqual( f['when'].as_hidden(), - '' - '' + '' + '' ) def test_multiple_choice_checkbox(self): @@ -860,25 +860,25 @@ Java f = SongForm(auto_id=False) self.assertHTMLEqual(str(f['composers']), """""") f = SongForm({'composers': ['J']}, auto_id=False) self.assertHTMLEqual(str(f['composers']), """""") f = SongForm({'composers': ['J', 'P']}, auto_id=False) self.assertHTMLEqual(str(f['composers']), """""") # Test iterating on individual checkboxes in a template t = Template('{% for checkbox in form.composers %}
    {{ checkbox }}
    {% endfor %}') self.assertHTMLEqual(t.render(Context({'form': f})), """
    + John Lennon
    """) + Paul McCartney""") def test_checkbox_auto_id(self): # Regarding auto_id, CheckboxSelectMultiple is a special case. Each checkbox @@ -896,9 +896,9 @@ Java str(f['composers']), """""" ) @@ -949,9 +949,9 @@ Java f = SongFormHidden(MultiValueDict({'name': ['Yesterday'], 'composers': ['J', 'P']}), auto_id=False) self.assertHTMLEqual( f.as_ul(), - """
  • Name: - -
  • """ + """
  • Name: + +
  • """ ) # When using CheckboxSelectMultiple, the framework expects a list of input and @@ -996,10 +996,10 @@ Java f.as_table(), """<em>Special</em> Field: - + Special Field: -""" +""" ) f = EscapingForm({ 'special_name': "Should escape < & > and ", @@ -1011,10 +1011,10 @@ Java +value="Should escape < & > and <script>alert('xss')</script>" required> Special Field: -""" +""" ) def test_validating_multiple_fields(self): @@ -1101,11 +1101,11 @@ value="Should escape < & > and <script>alert('xss')</ f.as_table(), """Username: - + Password1: - + Password2: -""" +""" ) 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(), """ -Username: -Password1: -Password2:""" +Username: +Password1: +Password2:""" ) self.assertHTMLEqual( f.as_ul(), """
  • -
  • Username:
  • -
  • Password1:
  • -
  • Password2:
  • """ +
  • Username:
  • +
  • Password1:
  • +
  • Password2:
  • """ ) 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(), - """First name: -Last name: -Birthday:""" + """First name: +Last name: +Birthday:""" ) # 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(), - """Field1: -Field2:""" + """Field1: +Field2:""" ) field_list = [('field3', CharField()), ('field4', CharField())] my_form = MyForm(field_list=field_list) self.assertHTMLEqual( my_form.as_table(), - """Field3: -Field4:""" + """Field3: +Field4:""" ) 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(), - """Default field 1: -Default field 2: -Field1: -Field2:""" + """Default field 1: +Default field 2: +Field1: +Field2:""" ) field_list = [('field3', CharField()), ('field4', CharField())] my_form = MyForm(field_list=field_list) self.assertHTMLEqual( my_form.as_table(), - """Default field 1: -Default field 2: -Field3: -Field4:""" + """Default field 1: +Default field 2: +Field3: +Field4:""" ) # 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(), - """First name: -Last name: + """First name: +Last name: Birthday: -""" +""" ) self.assertHTMLEqual( p.as_ul(), - """
  • First name:
  • -
  • Last name:
  • -
  • Birthday:
  • """ + """
  • First name:
  • +
  • Last name:
  • +
  • Birthday:
  • """ ) self.assertHTMLEqual( - p.as_p(), """

    First name:

    -

    Last name:

    -

    Birthday:

    """ + p.as_p(), """

    First name:

    +

    Last name:

    +

    Birthday:

    """ ) # 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(), """ - + - + - -""" + +""" ) self.assertHTMLEqual( p.as_ul(), """
  • -
  • +
  • -
  • +
  • - -
  • """ + +""" ) self.assertHTMLEqual( p.as_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(), """ -First name: -Last name: -Birthday: -""" +First name: +Last name: +Birthday: +""" ) self.assertHTMLEqual( p.as_ul(), """
  • -
  • First name:
  • -
  • Last name:
  • -
  • Birthday: -
  • """ +
  • First name:
  • +
  • Last name:
  • +
  • Birthday: +
  • """ ) self.assertHTMLEqual( p.as_p(), """ -

    First name:

    -

    Last name:

    -

    Birthday: -

    """ +

    First name:

    +

    Last name:

    +

    Birthday: +

    """ ) # 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(), '') - self.assertHTMLEqual(p.as_ul(), '') - self.assertHTMLEqual(p.as_p(), '') + self.assertHTMLEqual(p.as_table(), '') + self.assertHTMLEqual(p.as_ul(), '') + self.assertHTMLEqual(p.as_p(), '') 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(), """Field1: -Field2: -Field3: -Field4: -Field5: -Field6: -Field7: -Field8: -Field9: -Field10: -Field11: -Field12: -Field13: -Field14:""") + self.assertHTMLEqual(p.as_table(), """Field1: +Field2: +Field3: +Field4: +Field5: +Field6: +Field7: +Field8: +Field9: +Field10: +Field11: +Field12: +Field13: +Field14:""") 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(), - """
  • Username:
  • -
  • Password:
  • -
  • Realname:
  • -
  • Address:
  • """ + """
  • Username:
  • +
  • Password:
  • +
  • Realname:
  • +
  • Address:
  • """ ) # 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(), - """
  • Username:
  • -
  • Password:
  • """ + """
  • Username:
  • +
  • Password:
  • """ ) 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(), - """
  • Your username:
  • -
  • Password1:
  • -
  • Contraseña (de nuevo):
  • """ + """
  • Your username:
  • +
  • Password1:
  • +
  • Contraseña (de nuevo):
  • """ ) # 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(), - """

    The first question:

    -

    What is your name?

    -

    The answer to life is:

    -

    Answer this question!

    -

    The last question. Period.

    """ + """

    The first question:

    +

    What is your name?

    +

    The answer to life is:

    +

    Answer this question!

    +

    The last question. Period.

    """ ) self.assertHTMLEqual( Questions().as_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(), """
  • -
  • Password:
  • """) + self.assertHTMLEqual(p.as_ul(), """
  • +
  • Password:
  • """) p = UserRegistration(auto_id='id_%s') self.assertHTMLEqual( p.as_ul(), - """
  • + """
  • -
  • """ +""" ) # 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(), - """
  • Username:
  • -
  • Password:
  • """ + """
  • Username:
  • +
  • Password:
  • """ ) p = UserRegistration(auto_id='id_%s') self.assertHTMLEqual( p.as_ul(), """
  • -
  • +
  • -
  • """ +""" ) 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(), """
  • Favorite color?
  • -
  • Favorite animal:
  • -
  • Secret answer =
  • """) + self.assertHTMLEqual(f.as_ul(), """
  • Favorite color?
  • +
  • Favorite animal:
  • +
  • Secret answer =
  • """) f = FavoriteForm(auto_id=False, label_suffix='?') - self.assertHTMLEqual(f.as_ul(), """
  • Favorite color?
  • -
  • Favorite animal?
  • -
  • Secret answer =
  • """) + self.assertHTMLEqual(f.as_ul(), """
  • Favorite color?
  • +
  • Favorite animal?
  • +
  • Secret answer =
  • """) f = FavoriteForm(auto_id=False, label_suffix='') - self.assertHTMLEqual(f.as_ul(), """
  • Favorite color?
  • -
  • Favorite animal
  • -
  • Secret answer =
  • """) + self.assertHTMLEqual(f.as_ul(), """
  • Favorite color?
  • +
  • Favorite animal
  • +
  • Secret answer =
  • """) f = FavoriteForm(auto_id=False, label_suffix='\u2192') self.assertHTMLEqual( f.as_ul(), - '
  • Favorite color?
  • \n' - '
  • Favorite animal\u2192
  • \n' - '
  • Secret answer =
  • ' + '
  • Favorite color?
  • \n' + '
  • Favorite animal\u2192
  • \n' + '
  • Secret answer =
  • ' ) 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(), - """
  • Username:
  • -
  • Password:
  • """ + """
  • Username:
  • +
  • Password:
  • """ ) # 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(), """
  • -Username:
  • +Username:
  • -Password:
  • """ +Password: """ ) p = UserRegistration({'username': ''}, auto_id=False) self.assertHTMLEqual( p.as_ul(), """
  • -Username:
  • +Username:
  • -Password:
  • """ +Password: """ ) p = UserRegistration({'username': 'foo'}, auto_id=False) self.assertHTMLEqual( p.as_ul(), - """
  • Username:
  • + """
  • Username:
  • -Password:
  • """ +Password: """ ) # An 'initial' value is *not* used as a fallback if data is not provided. In this @@ -1784,14 +1784,14 @@ Password: """ p = UserRegistration(initial={'username': 'django'}, auto_id=False) self.assertHTMLEqual( p.as_ul(), - """
  • Username:
  • -
  • Password:
  • """ + """
  • Username:
  • +
  • Password:
  • """ ) p = UserRegistration(initial={'username': 'stephane'}, auto_id=False) self.assertHTMLEqual( p.as_ul(), - """
  • Username:
  • -
  • Password:
  • """ + """
  • Username:
  • +
  • Password:
  • """ ) # The 'initial' parameter is meaningless if you pass data. @@ -1799,23 +1799,23 @@ Password: """ self.assertHTMLEqual( p.as_ul(), """
  • -Username:
  • +Username:
  • -Password:
  • """ +Password: """ ) p = UserRegistration({'username': ''}, initial={'username': 'django'}, auto_id=False) self.assertHTMLEqual( p.as_ul(), """
  • -Username:
  • +Username:
  • -Password:
  • """ +Password: """ ) p = UserRegistration({'username': 'foo'}, initial={'username': 'django'}, auto_id=False) self.assertHTMLEqual( - p.as_ul(), """
  • Username:
  • + p.as_ul(), """
  • Username:
  • -Password:
  • """ +Password: """ ) # A dynamic 'initial' value is *not* used as a fallback if data is not provided. @@ -1834,8 +1834,8 @@ Password: """ p = UserRegistration(initial={'username': 'babik'}, auto_id=False) self.assertHTMLEqual( p.as_ul(), - """
  • Username:
  • -
  • Password:
  • """ + """
  • Username:
  • +
  • Password:
  • """ ) def test_callable_initial_data(self): @@ -1863,8 +1863,8 @@ Password: """ p = UserRegistration(initial={'username': initial_django, 'options': initial_options}, auto_id=False) self.assertHTMLEqual( p.as_ul(), - """
  • Username:
  • -
  • Password:
  • + """
  • Username:
  • +
  • Password:
  • Options:
  • """ self.assertHTMLEqual( p.as_ul(), """
  • -Username:
  • +Username:
  • -Password:
  • +Password:
  • Options: self.assertHTMLEqual( p.as_ul(), """
  • - Username:
  • + Username:
  • -Password:
  • +Password:
  • Options: ) self.assertHTMLEqual( p.as_ul(), - """
  • Username:
  • + """
  • Username:
  • -Password:
  • +Password:
  • Options:
  • p = UserRegistration(auto_id=False) self.assertHTMLEqual( p.as_ul(), - """
  • Username:
  • -
  • Password:
  • + """
  • Username:
  • +
  • Password:
  • Options:
  • p = UserRegistration(initial={'username': initial_stephane, 'options': initial_options}, auto_id=False) self.assertHTMLEqual( p.as_ul(), - """
  • Username:
  • -
  • Password:
  • + """
  • Username:
  • +
  • Password:
  • Options:
  • p = UserRegistration(auto_id=False) self.assertHTMLEqual( p.as_ul(), - """
  • Username: + """
  • Username: e.g., user@example.com
  • -
  • Password: +
  • Password: Wählen Sie mit Bedacht.
  • """ ) self.assertHTMLEqual( p.as_p(), - """

    Username: + """

    Username: e.g., user@example.com

    -

    Password: +

    Password: Wählen Sie mit Bedacht.

    """ ) self.assertHTMLEqual( p.as_table(), - """Username:
    + """Username:
    e.g., user@example.com -Password:
    +Password:
    Wählen Sie mit Bedacht.""" ) @@ -2136,10 +2136,10 @@ Password: p = UserRegistration({'username': 'foo'}, auto_id=False) self.assertHTMLEqual( p.as_ul(), - """
  • Username: + """
  • Username: e.g., user@example.com
  • -Password: +Password: Wählen Sie mit Bedacht.
  • """ ) @@ -2153,10 +2153,10 @@ Password: p = UserRegistration(auto_id=False) self.assertHTMLEqual( p.as_ul(), - """
  • Username: + """
  • Username: e.g., user@example.com
  • -
  • Password: -
  • """ +
  • Password: +
  • """ ) def test_subclassing_forms(self): @@ -2174,17 +2174,17 @@ Password: p = Person(auto_id=False) self.assertHTMLEqual( p.as_ul(), - """
  • First name:
  • -
  • Last name:
  • -
  • Birthday:
  • """ + """
  • First name:
  • +
  • Last name:
  • +
  • Birthday:
  • """ ) m = Musician(auto_id=False) self.assertHTMLEqual( m.as_ul(), - """
  • First name:
  • -
  • Last name:
  • -
  • Birthday:
  • -
  • Instrument:
  • """ + """
  • First name:
  • +
  • Last name:
  • +
  • Birthday:
  • +
  • Instrument:
  • """ ) # Yes, you can subclass multiple forms. The fields are added in the order in @@ -2201,11 +2201,11 @@ Password: haircut_type = CharField() b = Beatle(auto_id=False) - self.assertHTMLEqual(b.as_ul(), """
  • Instrument:
  • -
  • First name:
  • -
  • Last name:
  • -
  • Birthday:
  • -
  • Haircut type:
  • """) + self.assertHTMLEqual(b.as_ul(), """
  • Instrument:
  • +
  • First name:
  • +
  • Last name:
  • +
  • Birthday:
  • +
  • Haircut type:
  • """) 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: self.assertHTMLEqual( p.as_ul(), """
  • -
  • +
  • -
  • +
  • -
  • """ +""" ) self.assertHTMLEqual( str(p['first_name']), - '' + '' ) self.assertHTMLEqual( str(p['last_name']), - '' + '' ) self.assertHTMLEqual( str(p['birthday']), - '' + '' ) self.assertEqual(p.errors, {}) self.assertTrue(p.is_valid()) @@ -2318,11 +2318,11 @@ Password: self.assertHTMLEqual( p.as_ul(), """
  • -
  • +
  • -
  • +
  • -
  • """ +""" ) data = { 'foo-prefix-first_name': 'John', @@ -2400,7 +2400,7 @@ Password: f = FileForm(auto_id=False) self.assertHTMLEqual( f.as_table(), - 'File1:', + 'File1:', ) f = FileForm(data={}, files={}, auto_id=False) @@ -2408,7 +2408,7 @@ Password: f.as_table(), 'File1:' '' - '' + '' ) f = FileForm(data={}, files={'file1': SimpleUploadedFile('name', b'')}, auto_id=False) @@ -2416,7 +2416,7 @@ Password: f.as_table(), 'File1:' '' - '' + '' ) f = FileForm(data={}, files={'file1': 'something that is not a file'}, auto_id=False) @@ -2425,13 +2425,13 @@ Password: 'File1:' '' - '' + '' ) f = FileForm(data={}, files={'file1': SimpleUploadedFile('name', b'some content')}, auto_id=False) self.assertHTMLEqual( f.as_table(), - 'File1:', + 'File1:', ) self.assertTrue(f.is_valid()) @@ -2439,7 +2439,7 @@ Password: f = FileForm(data={}, files={'file1': file1}, auto_id=False) self.assertHTMLEqual( f.as_table(), - 'File1:', + 'File1:', ) # A required file field with initial data should not contain the @@ -2448,7 +2448,7 @@ Password: f = FileForm(initial={'file1': 'resume.txt'}, auto_id=False) self.assertHTMLEqual( f.as_table(), - 'File1:', + 'File1:', ) def test_filefield_initial_callable(self): @@ -2483,18 +2483,18 @@ Password: t = Template( '
    \n' - '\n{{ form }}\n
    \n\n
    ' + '\n{{ form }}\n
    \n\n' ) return t.render(Context({'form': form})) # Case 1: GET (an empty form, with no errors).) self.assertHTMLEqual(my_function('GET', {}), """
    - - - + + +
    Username:
    Password1:
    Password2:
    Username:
    Password1:
    Password2:
    - +
    """) # Case 2: POST with erroneous data (a redisplayed form, with errors).) self.assertHTMLEqual( @@ -2504,11 +2504,11 @@ Password: Username: - -Password1: -Password2: + +Password1: +Password2: - + """ ) # Case 3: POST with valid data (the success message).) @@ -2539,23 +2539,23 @@ Password: {{ form.username.errors.as_ul }}

    {{ form.password1.errors.as_ul }}

    {{ form.password2.errors.as_ul }}

    - + ''') self.assertHTMLEqual(t.render(Context({'form': UserRegistration(auto_id=False)})), """
    -

    -

    -

    - +

    +

    +

    +
    """) self.assertHTMLEqual( t.render(Context({'form': UserRegistration({'username': 'django'}, auto_id=False)})), """
    -

    +

    -

    +

    -

    - +

    +
    """ ) @@ -2567,13 +2567,13 @@ Password:

    - + ''') self.assertHTMLEqual(t.render(Context({'form': UserRegistration(auto_id=False)})), """
    -

    -

    -

    - +

    +

    +

    +
    """) # User form.[field].label_tag to output a field's label with a