diff --git a/django/forms/templates/django/forms/widgets/attrs.html b/django/forms/templates/django/forms/widgets/attrs.html index e673399dbb..caca0cd80c 100644 --- a/django/forms/templates/django/forms/widgets/attrs.html +++ b/django/forms/templates/django/forms/widgets/attrs.html @@ -1 +1 @@ -{% for name, value in widget.attrs.items %} {{ name }}{% if not value is True %}="{{ value }}"{% endif %}{% endfor %} +{% for name, value in widget.attrs.items %} {{ name }}{% if not value is True %}="{{ value }}"{% endif %}{% endfor %} \ No newline at end of file diff --git a/tests/forms_tests/widget_tests/base.py b/tests/forms_tests/widget_tests/base.py index dbbea25d7a..490f033bad 100644 --- a/tests/forms_tests/widget_tests/base.py +++ b/tests/forms_tests/widget_tests/base.py @@ -17,11 +17,12 @@ class WidgetTest(SimpleTestCase): cls.renderers = [cls.django_renderer] + ([cls.jinja2_renderer] if cls.jinja2_renderer else []) super(WidgetTest, cls).setUpClass() - def check_html(self, widget, name, value, html='', attrs=None, **kwargs): + def check_html(self, widget, name, value, html='', attrs=None, strict=False, **kwargs): + assertEqual = self.assertEqual if strict else self.assertHTMLEqual if self.jinja2_renderer: output = widget.render(name, value, attrs=attrs, renderer=self.jinja2_renderer, **kwargs) # Django escapes quotes with '"' while Jinja2 uses '"'. - self.assertHTMLEqual(output.replace('"', '"'), html) + assertEqual(output.replace('"', '"'), html) output = widget.render(name, value, attrs=attrs, renderer=self.django_renderer, **kwargs) - self.assertHTMLEqual(output, html) + assertEqual(output, html) diff --git a/tests/forms_tests/widget_tests/test_widget.py b/tests/forms_tests/widget_tests/test_widget.py index 3911627a0c..595748a7b2 100644 --- a/tests/forms_tests/widget_tests/test_widget.py +++ b/tests/forms_tests/widget_tests/test_widget.py @@ -1,12 +1,17 @@ from __future__ import unicode_literals from django.forms import Widget -from django.test import SimpleTestCase +from django.forms.widgets import Input + +from .base import WidgetTest -class WidgetTests(SimpleTestCase): +class WidgetTests(WidgetTest): def test_value_omitted_from_data(self): widget = Widget() self.assertIs(widget.value_omitted_from_data({}, {}, 'field'), True) self.assertIs(widget.value_omitted_from_data({'field': 'value'}, {}, 'field'), False) + + def test_no_trailing_newline_in_attrs(self): + self.check_html(Input(), 'name', 'value', strict=True, html='')