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/admin_changelist/tests.py | 6 +- tests/admin_docs/test_views.py | 2 +- tests/admin_inlines/tests.py | 70 +- tests/admin_utils/tests.py | 6 +- tests/admin_views/tests.py | 26 +- tests/admin_widgets/tests.py | 56 +- tests/csrf_tests/views.py | 2 +- 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 +- tests/generic_relations/test_forms.py | 32 +- tests/i18n/tests.py | 22 +- tests/model_forms/tests.py | 116 +-- tests/model_formsets/tests.py | 240 +++--- tests/postgres_tests/test_array.py | 14 +- tests/postgres_tests/test_ranges.py | 20 +- tests/staticfiles_tests/test_forms.py | 4 +- tests/template_backends/test_dummy.py | 2 +- .../template_tests/filter_tests/test_linebreaks.py | 16 +- .../filter_tests/test_linebreaksbr.py | 14 +- tests/templates/login.html | 4 +- tests/utils_tests/test_html.py | 4 +- 51 files changed, 1145 insertions(+), 1145 deletions(-) (limited to 'tests') diff --git a/tests/admin_changelist/tests.py b/tests/admin_changelist/tests.py index 5f3d30fd68..5be70ee6ad 100644 --- a/tests/admin_changelist/tests.py +++ b/tests/admin_changelist/tests.py @@ -39,7 +39,7 @@ def build_tbody_html(pk, href, extra_fields): '' '' '' + 'class="action-select">' 'name' '{}' ).format(pk, href, extra_fields) @@ -209,7 +209,7 @@ class ChangeListTests(TestCase): # make sure that hidden fields are in the correct place hiddenfields_div = ( '
' - '' + '' '
' ) % new_child.id self.assertInHTML(hiddenfields_div, table_output, msg_prefix='Failed to find hidden fields') @@ -217,7 +217,7 @@ class ChangeListTests(TestCase): # make sure that list editable fields are rendered in divs correctly editable_name_field = ( '' + 'maxlength="30" type="text" id="id_form-0-name">' ) self.assertInHTML( '%s' % editable_name_field, diff --git a/tests/admin_docs/test_views.py b/tests/admin_docs/test_views.py index a64da843ed..be69799d70 100644 --- a/tests/admin_docs/test_views.py +++ b/tests/admin_docs/test_views.py @@ -28,7 +28,7 @@ class AdminDocViewTests(TestDataMixin, AdminDocsTestCase): self.client.logout() response = self.client.get(reverse('django-admindocs-docroot'), follow=True) # Should display the login screen - self.assertContains(response, '', html=True) + self.assertContains(response, '', html=True) def test_bookmarklets(self): response = self.client.get(reverse('django-admindocs-bookmarklets')) diff --git a/tests/admin_inlines/tests.py b/tests/admin_inlines/tests.py index 67ffa7648f..73b1bd065e 100644 --- a/tests/admin_inlines/tests.py +++ b/tests/admin_inlines/tests.py @@ -161,7 +161,7 @@ class TestInline(TestDataMixin, TestCase): '', + 'title="Awesome tabular help text is awesome.">', 1 ) # ReadOnly fields @@ -171,7 +171,7 @@ class TestInline(TestDataMixin, TestCase): '', + 'title="Help text for ReadOnlyInline">', 1 ) @@ -184,7 +184,7 @@ class TestInline(TestDataMixin, TestCase): self.assertNotContains(response, '') self.assertInHTML( '', + 'name="somechildmodel_set-1-position" type="hidden" value="1">', response.rendered_content, ) @@ -193,26 +193,26 @@ class TestInline(TestDataMixin, TestCase): Multiple inlines with related_name='+' have correct form prefixes. """ response = self.client.get(reverse('admin:admin_inlines_capofamiglia_add')) - self.assertContains(response, '', html=True) + self.assertContains(response, '', html=True) self.assertContains( response, - '', + '', html=True ) self.assertContains( response, - '', + '', html=True ) - self.assertContains(response, '', html=True) + self.assertContains(response, '', html=True) self.assertContains( response, - '', + '', html=True ) self.assertContains( response, - '', + '', html=True ) @@ -265,12 +265,12 @@ class TestInline(TestDataMixin, TestCase): # ModelAdmin max_forms_input = ( '' + 'name="binarytree_set-MAX_NUM_FORMS" type="hidden" value="%d">' ) # The total number of forms will remain the same in either case total_forms_hidden = ( '' + 'name="binarytree_set-TOTAL_FORMS" type="hidden" value="2">' ) response = self.client.get(reverse('admin:admin_inlines_binarytree_add')) self.assertInHTML(max_forms_input % 3, response.rendered_content) @@ -293,11 +293,11 @@ class TestInline(TestDataMixin, TestCase): modeladmin.inlines = [MinNumInline] min_forms = ( '' + 'name="binarytree_set-MIN_NUM_FORMS" type="hidden" value="2">' ) total_forms = ( '' + 'name="binarytree_set-TOTAL_FORMS" type="hidden" value="5">' ) request = self.factory.get(reverse('admin:admin_inlines_binarytree_add')) request.user = User(username='super', is_superuser=True) @@ -322,11 +322,11 @@ class TestInline(TestDataMixin, TestCase): modeladmin.inlines = [MinNumInline] min_forms = ( '' + 'name="binarytree_set-MIN_NUM_FORMS" type="hidden" value="%d">' ) total_forms = ( '' + 'name="binarytree_set-TOTAL_FORMS" type="hidden" value="%d">' ) request = self.factory.get(reverse('admin:admin_inlines_binarytree_add')) request.user = User(username='super', is_superuser=True) @@ -345,13 +345,13 @@ class TestInline(TestDataMixin, TestCase): self.assertContains( response, '', + 'name="nonautopkbook_set-0-rand_pk" type="hidden">', html=True ) self.assertContains( response, '', + 'name="nonautopkbook_set-2-0-rand_pk" type="hidden">', html=True ) @@ -360,13 +360,13 @@ class TestInline(TestDataMixin, TestCase): self.assertContains( response, '', + 'name="nonautopkbookchild_set-0-nonautopkbook_ptr" type="hidden">', html=True ) self.assertContains( response, '', + 'name="nonautopkbookchild_set-2-nonautopkbook_ptr" type="hidden">', html=True ) @@ -375,13 +375,13 @@ class TestInline(TestDataMixin, TestCase): self.assertContains( response, '', + 'name="editablepkbook_set-0-manual_pk" type="number">', html=True, count=1 ) self.assertContains( response, '', + 'name="editablepkbook_set-2-0-manual_pk" type="number">', html=True, count=1 ) @@ -614,7 +614,7 @@ class TestInlinePermissions(TestCase): self.assertContains(response, '

Inner2s

') self.assertContains(response, 'Add another Inner2') self.assertContains(response, '', html=True) + 'value="3" name="inner2_set-TOTAL_FORMS">', html=True) def test_inline_change_m2m_add_perm(self): permission = Permission.objects.get(codename='add_book', content_type=self.book_ct) @@ -634,11 +634,11 @@ class TestInlinePermissions(TestCase): self.assertContains(response, '

Author-book relationships

') self.assertContains(response, 'Add another Author-book relationship') self.assertContains(response, '', html=True) + 'value="4" name="Author_books-TOTAL_FORMS">', html=True) self.assertContains( response, '' % self.author_book_auto_m2m_intermediate_id, + 'name="Author_books-0-id">' % self.author_book_auto_m2m_intermediate_id, html=True ) self.assertContains(response, 'id="id_Author_books-0-DELETE"') @@ -654,12 +654,12 @@ class TestInlinePermissions(TestCase): self.assertContains( response, '', + 'name="inner2_set-TOTAL_FORMS">', html=True ) self.assertNotContains( response, - '' % self.inner2_id, + '' % self.inner2_id, html=True ) @@ -671,18 +671,18 @@ class TestInlinePermissions(TestCase): self.assertContains(response, '

Inner2s

') # Just the one form for existing instances self.assertContains( - response, '', + response, '', html=True ) self.assertContains( response, - '' % self.inner2_id, + '' % self.inner2_id, html=True ) # max-num 0 means we can't add new ones self.assertContains( response, - '', + '', html=True ) @@ -696,12 +696,12 @@ class TestInlinePermissions(TestCase): self.assertContains(response, '

Inner2s

') # One form for existing instance and three extra for new self.assertContains( - response, '', + response, '', html=True ) self.assertContains( response, - '' % self.inner2_id, + '' % self.inner2_id, html=True ) @@ -716,12 +716,12 @@ class TestInlinePermissions(TestCase): # One form for existing instance only, no new self.assertContains( response, - '', + '', html=True ) self.assertContains( response, - '' % self.inner2_id, + '' % self.inner2_id, html=True ) self.assertContains(response, 'id="id_inner2_set-0-DELETE"') @@ -739,12 +739,12 @@ class TestInlinePermissions(TestCase): # One form for existing instance only, three for new self.assertContains( response, - '', + '', html=True ) self.assertContains( response, - '' % self.inner2_id, + '' % self.inner2_id, html=True ) self.assertContains(response, 'id="id_inner2_set-0-DELETE"') diff --git a/tests/admin_utils/tests.py b/tests/admin_utils/tests.py index aae8b74ae2..4d56313ae1 100644 --- a/tests/admin_utils/tests.py +++ b/tests/admin_utils/tests.py @@ -163,7 +163,7 @@ class UtilsTests(SimpleTestCase): # Regression test for #13071: NullBooleanField has special # handling. display_value = display_for_field(None, models.NullBooleanField(), self.empty_value) - expected = 'None' % settings.STATIC_URL + expected = 'None' % settings.STATIC_URL self.assertHTMLEqual(display_value, expected) display_value = display_for_field(None, models.DecimalField(), self.empty_value) @@ -204,11 +204,11 @@ class UtilsTests(SimpleTestCase): def test_list_display_for_value_boolean(self): self.assertEqual( display_for_value(True, '', boolean=True), - 'True' + 'True' ) self.assertEqual( display_for_value(False, '', boolean=True), - 'False' + 'False' ) self.assertEqual(display_for_value(True, ''), 'True') self.assertEqual(display_for_value(False, ''), 'False') diff --git a/tests/admin_views/tests.py b/tests/admin_views/tests.py index b8093c2971..a9746d9add 100644 --- a/tests/admin_views/tests.py +++ b/tests/admin_views/tests.py @@ -1027,7 +1027,7 @@ class AdminCustomTemplateTests(AdminViewBasicTestCase): # When a site has multiple passwords in the browser's password manager, # a browser pop up asks which user the new password is for. To prevent # this, the username is added to the change password form. - self.assertContains(response, '') + self.assertContains(response, '') def test_extended_bodyclass_template_index(self): """ @@ -2969,8 +2969,8 @@ class AdminViewListEditable(TestCase): self.assertContains( response, '
\n' - '' - '\n
' + '' + '\n' % (story2.id, story1.id), html=True ) @@ -2999,8 +2999,8 @@ class AdminViewListEditable(TestCase): self.assertContains( response, '
\n' - '' - '\n
' + '' + '\n' % (story2.id, story1.id), html=True ) @@ -3057,7 +3057,7 @@ class AdminSearchTest(TestCase): """ response = self.client.get(reverse('admin:auth_user_changelist') + '?q=joe&%s=id' % TO_FIELD_VAR) self.assertContains(response, "\n1 user\n") - self.assertContains(response, '' % TO_FIELD_VAR, html=True) + self.assertContains(response, '' % TO_FIELD_VAR, html=True) def test_exact_matches(self): response = self.client.get(reverse('admin:admin_views_recommendation_changelist') + '?q=bar') @@ -4388,10 +4388,10 @@ class ReadonlyTest(AdminFieldExtractionMixin, TestCase): self.assertContains(response, "Unknown coolness.") self.assertContains(response, "foo") - # Multiline text in a readonly field gets
tags - self.assertContains(response, 'Multiline
test
string') - self.assertContains(response, '
Multiline
html
content
', html=True) - self.assertContains(response, 'InlineMultiline
test
string') + # Multiline text in a readonly field gets
tags + self.assertContains(response, 'Multiline
test
string') + self.assertContains(response, '
Multiline
html
content
', html=True) + self.assertContains(response, 'InlineMultiline
test
string') self.assertContains(response, formats.localize(datetime.date.today() - datetime.timedelta(days=7))) @@ -4432,9 +4432,9 @@ class ReadonlyTest(AdminFieldExtractionMixin, TestCase): ) response = self.client.get(reverse('admin:admin_views_post_change', args=(p.pk,))) # Checking readonly field. - self.assertContains(response, 'test

test

test

test') + self.assertContains(response, 'test

test

test

test') # Checking readonly field in inline. - self.assertContains(response, 'test
link') + self.assertContains(response, 'test
link') def test_readonly_post(self): data = { @@ -5267,7 +5267,7 @@ class AdminViewLogoutTests(TestCase): self.assertEqual(response.status_code, 200) self.assertTemplateUsed(response, 'admin/login.html') self.assertEqual(response.request['PATH_INFO'], reverse('admin:login')) - self.assertContains(response, '' % reverse('admin:index')) + self.assertContains(response, '' % reverse('admin:index')) @override_settings(ROOT_URLCONF='admin_views.urls') diff --git a/tests/admin_widgets/tests.py b/tests/admin_widgets/tests.py index 8c3f06670c..c0a9e1e844 100644 --- a/tests/admin_widgets/tests.py +++ b/tests/admin_widgets/tests.py @@ -274,13 +274,13 @@ class AdminDateWidgetTest(SimpleTestCase): w = widgets.AdminDateWidget() self.assertHTMLEqual( w.render('test', datetime(2007, 12, 1, 9, 30)), - '', + '', ) # pass attrs to widget w = widgets.AdminDateWidget(attrs={'size': 20, 'class': 'myDateField'}) self.assertHTMLEqual( w.render('test', datetime(2007, 12, 1, 9, 30)), - '', + '', ) @@ -289,13 +289,13 @@ class AdminTimeWidgetTest(SimpleTestCase): w = widgets.AdminTimeWidget() self.assertHTMLEqual( w.render('test', datetime(2007, 12, 1, 9, 30)), - '', + '', ) # pass attrs to widget w = widgets.AdminTimeWidget(attrs={'size': 20, 'class': 'myTimeField'}) self.assertHTMLEqual( w.render('test', datetime(2007, 12, 1, 9, 30)), - '', + '', ) @@ -306,9 +306,9 @@ class AdminSplitDateTimeWidgetTest(SimpleTestCase): w.render('test', datetime(2007, 12, 1, 9, 30)), '

' 'Date:
' + 'name="test_0" size="10">
' 'Time:

' + 'name="test_1" size="8">

' ) def test_localization(self): @@ -320,9 +320,9 @@ class AdminSplitDateTimeWidgetTest(SimpleTestCase): w.render('test', datetime(2007, 12, 1, 9, 30)), '

' 'Datum:
' + 'class="vDateField" name="test_0"size="10">
' 'Zeit:

' + 'name="test_1" size="8">

' ) @@ -331,14 +331,14 @@ class AdminURLWidgetTest(SimpleTestCase): w = widgets.AdminURLFieldWidget() self.assertHTMLEqual( w.render('test', ''), - '' + '' ) self.assertHTMLEqual( w.render('test', 'http://example.com'), '

Currently:' - 'http://example.com
' + 'http://example.com
' 'Change:

' + 'value="http://example.com">

' ) def test_render_idn(self): @@ -346,9 +346,9 @@ class AdminURLWidgetTest(SimpleTestCase): self.assertHTMLEqual( w.render('test', 'http://example-äüö.com'), '

Currently: ' - 'http://example-äüö.com
' + 'http://example-äüö.com
' 'Change:

' + 'value="http://example-äüö.com">

' ) def test_render_quoting(self): @@ -420,15 +420,15 @@ class AdminFileWidgetTests(TestDataMixin, TestCase): '

Currently: albums\hybrid_theory.jpg ' '' - ' ' - '
' - 'Change:

' % { + ' ' + '
' + 'Change:

' % { 'STORAGE_URL': default_storage.url(''), }, ) self.assertHTMLEqual( w.render('test', SimpleUploadedFile('test', b'content')), - '', + '', ) def test_render_required(self): @@ -437,8 +437,8 @@ class AdminFileWidgetTests(TestDataMixin, TestCase): self.assertHTMLEqual( widget.render('test', self.album.cover_art), '

Currently: albums\hybrid_theory.jpg
' - 'Change:

' % { + r'hybrid_theory.jpg">albums\hybrid_theory.jpg
' + 'Change:

' % { 'STORAGE_URL': default_storage.url(''), }, ) @@ -457,7 +457,7 @@ class AdminFileWidgetTests(TestDataMixin, TestCase): ) self.assertNotContains( response, - '', + '', html=True, ) response = self.client.get(reverse('admin:admin_widgets_album_add')) @@ -482,7 +482,7 @@ class ForeignKeyRawIdWidgetTest(TestCase): self.assertHTMLEqual( w.render('test', band.pk, attrs={}), '' + 'class="vForeignKeyRawIdAdminField">' ' ' 'Linkin Park' @@ -502,7 +502,7 @@ class ForeignKeyRawIdWidgetTest(TestCase): self.assertHTMLEqual( w.render('test', core.parent_id, attrs={}), '' + 'class="vForeignKeyRawIdAdminField">' '' ' ' @@ -519,7 +519,7 @@ class ForeignKeyRawIdWidgetTest(TestCase): w = widgets.ForeignKeyRawIdWidget(rel, widget_admin_site) self.assertHTMLEqual( w.render('honeycomb_widget', big_honeycomb.pk, attrs={}), - '' + '' ' %(hcomb)s' % {'hcombpk': big_honeycomb.pk, 'hcomb': big_honeycomb} ) @@ -534,7 +534,7 @@ class ForeignKeyRawIdWidgetTest(TestCase): w = widgets.ForeignKeyRawIdWidget(rel, widget_admin_site) self.assertHTMLEqual( w.render('individual_widget', subject1.pk, attrs={}), - '' + '' ' %(subj1)s' % {'subj1pk': subject1.pk, 'subj1': subject1} ) @@ -552,7 +552,7 @@ class ForeignKeyRawIdWidgetTest(TestCase): ) self.assertHTMLEqual( w.render('test', child_of_hidden.parent_id, attrs={}), - '' + '' '' ' ' @@ -574,7 +574,7 @@ class ManyToManyRawIdWidgetTest(TestCase): w = widgets.ManyToManyRawIdWidget(rel, widget_admin_site) self.assertHTMLEqual( w.render('test', [m1.pk, m2.pk], attrs={}), ( - '' + '' '' ) % {'m1pk': m1.pk, 'm2pk': m2.pk} ) @@ -599,12 +599,12 @@ class ManyToManyRawIdWidgetTest(TestCase): w = widgets.ManyToManyRawIdWidget(rel, widget_admin_site) self.assertHTMLEqual( w.render('company_widget1', [c1.pk, c2.pk], attrs={}), - '' % {'c1pk': c1.pk, 'c2pk': c2.pk} + '' % {'c1pk': c1.pk, 'c2pk': c2.pk} ) self.assertHTMLEqual( w.render('company_widget2', [c1.pk]), - '' % {'c1pk': c1.pk} + '' % {'c1pk': c1.pk} ) diff --git a/tests/csrf_tests/views.py b/tests/csrf_tests/views.py index 720de610e0..89d1189e0d 100644 --- a/tests/csrf_tests/views.py +++ b/tests/csrf_tests/views.py @@ -8,7 +8,7 @@ from django.views.decorators.csrf import ensure_csrf_cookie def post_form_view(request): """Return a POST form (without a token).""" return HttpResponse(content=""" -

\u00a1Unicode!
+

\u00a1Unicode!
""", mimetype='text/html') 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), """
  • This field is required.
- +
  • This field is required.
- +
  • This field is required.
-""" +""" ) self.assertHTMLEqual( p.as_table(), """
  • This field is required.
- +
  • This field is required.
- +
  • This field is required.
-""" +""" ) self.assertHTMLEqual( p.as_ul(), """
    • This field is required.
    -
  • +
    • This field is required.
    -
  • +
    • This field is required.
    -
  • """ +""" ) self.assertHTMLEqual( p.as_p(), """
    • This field is required.

    -

    +

    • This field is required.

    -

    +

    • This field is required.

    -

    """ +

    """ ) 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']), """
    • + John Lennon
    • + Paul McCartney
    """ ) @@ -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:
    • Something's wrong with 'Nothing to escape'
    - + Special Field:
    • 'Nothing to escape' is a safe string
    -""" +""" ) f = EscapingForm({ 'special_name': "Should escape < & > and ", @@ -1011,10 +1011,10 @@ Java
    • Something's wrong with 'Should escape < & > and <script>alert('xss')</script>'
    +value="Should escape < & > and <script>alert('xss')</script>" required> Special Field:
    • 'Do not escape' is a safe string
    -""" +""" ) def test_validating_multiple_fields(self): @@ -1101,11 +1101,11 @@ value="Should escape < & > and <script>alert('xss')</ f.as_table(), """Username:
    • This field is required.
    - + Password1:
    • This field is required.
    - + Password2:
    • This field is required.
    -""" +""" ) 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(), """
    • Please make sure your passwords match.
    -Username: -Password1: -Password2:""" +Username: +Password1: +Password2:""" ) self.assertHTMLEqual( f.as_ul(), """
    • Please make sure your passwords match.
  • -
  • 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(), """
    • (Hidden field hidden_text) This field is required.
    -First name: -Last name: -Birthday: -""" +First name: +Last name: +Birthday: +""" ) self.assertHTMLEqual( p.as_ul(), """
    • (Hidden field hidden_text) This field is required.
  • -
  • First name:
  • -
  • Last name:
  • -
  • Birthday: -
  • """ +
  • First name:
  • +
  • Last name:
  • +
  • Birthday: +
  • """ ) self.assertHTMLEqual( p.as_p(), """
    • (Hidden field hidden_text) This field is required.
    -

    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(), """
    • This field is required.
    -Username:
  • +Username:
    • This field is required.
    -Password:
  • """ +Password: """ ) p = UserRegistration({'username': ''}, auto_id=False) self.assertHTMLEqual( p.as_ul(), """
    • This field is required.
    -Username:
  • +Username:
    • This field is required.
    -Password:
  • """ +Password: """ ) p = UserRegistration({'username': 'foo'}, auto_id=False) self.assertHTMLEqual( p.as_ul(), - """
  • Username:
  • + """
  • Username:
    • This field is required.
    -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(), """
    • This field is required.
    -Username:
  • +Username:
    • This field is required.
    -Password:
  • """ +Password: """ ) p = UserRegistration({'username': ''}, initial={'username': 'django'}, auto_id=False) self.assertHTMLEqual( p.as_ul(), """
    • This field is required.
    -Username:
  • +Username:
    • This field is required.
    -Password:
  • """ +Password: """ ) p = UserRegistration({'username': 'foo'}, initial={'username': 'django'}, auto_id=False) self.assertHTMLEqual( - p.as_ul(), """
  • Username:
  • + p.as_ul(), """
  • Username:
    • This field is required.
    -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(), """
    • This field is required.
    -Username:
  • +Username:
    • This field is required.
    -Password:
  • +Password:
    • This field is required.
    Options: self.assertHTMLEqual( p.as_ul(), """
    • This field is required.
    - Username:
  • + Username:
    • This field is required.
    -Password:
  • +Password:
    • This field is required.
    Options: ) self.assertHTMLEqual( p.as_ul(), - """
  • Username:
  • + """
  • Username:
    • This field is required.
    -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
    • This field is required.
    -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:' '
    • This field is required.
    ' - '' + '' ) f = FileForm(data={}, files={'file1': SimpleUploadedFile('name', b'')}, auto_id=False) @@ -2416,7 +2416,7 @@ Password: f.as_table(), 'File1:' '
    • The submitted file is empty.
    ' - '' + '' ) f = FileForm(data={}, files={'file1': 'something that is not a file'}, auto_id=False) @@ -2425,13 +2425,13 @@ Password: 'File1:' '
    • No file was submitted. Check the ' 'encoding type on the form.
    ' - '' + '' ) 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:
    • Please make sure your passwords match.
    Username:
    • Ensure this value has at most 10 characters (it has 23).
    - -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)})), """
    -

    +

    • This field is required.

    -

    +

    • This field is required.
    -

    - +

    +
    """ ) @@ -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