summaryrefslogtreecommitdiff
path: root/tests/regressiontests
diff options
context:
space:
mode:
authorClaude Paroz <claude@2xlibre.net>2012-06-07 18:08:47 +0200
committerClaude Paroz <claude@2xlibre.net>2012-06-07 18:08:47 +0200
commit4a103086d5c67fa4fcc53c106c9fdf644c742dd8 (patch)
tree3df00600c27f6369f7561c3b8ddf2f97d2d341d9 /tests/regressiontests
parent706fd9adc0b6587c7f96a834c757708e64fcf615 (diff)
Fixed #18269 -- Applied unicode_literals for Python 3 compatibility.
Thanks Vinay Sajip for the support of his django3 branch and Jannis Leidel for the review.
Diffstat (limited to 'tests/regressiontests')
-rw-r--r--tests/regressiontests/admin_custom_urls/tests.py8
-rw-r--r--tests/regressiontests/admin_filters/models.py6
-rw-r--r--tests/regressiontests/admin_filters/tests.py92
-rw-r--r--tests/regressiontests/admin_inlines/models.py6
-rw-r--r--tests/regressiontests/admin_inlines/tests.py10
-rw-r--r--tests/regressiontests/admin_ordering/tests.py14
-rw-r--r--tests/regressiontests/admin_util/tests.py4
-rw-r--r--tests/regressiontests/admin_views/admin.py6
-rw-r--r--tests/regressiontests/admin_views/models.py40
-rw-r--r--tests/regressiontests/admin_views/tests.py267
-rw-r--r--tests/regressiontests/admin_widgets/models.py4
-rw-r--r--tests/regressiontests/admin_widgets/tests.py12
-rw-r--r--tests/regressiontests/aggregation_regress/tests.py84
-rw-r--r--tests/regressiontests/backends/models.py6
-rw-r--r--tests/regressiontests/backends/tests.py8
-rw-r--r--tests/regressiontests/cache/tests.py22
-rw-r--r--tests/regressiontests/comment_tests/tests/comment_view_tests.py6
-rw-r--r--tests/regressiontests/csrf_tests/tests.py9
-rw-r--r--tests/regressiontests/custom_columns_regress/models.py3
-rw-r--r--tests/regressiontests/datatypes/tests.py6
-rw-r--r--tests/regressiontests/defaultfilters/tests.py649
-rw-r--r--tests/regressiontests/expressions_regress/models.py3
-rw-r--r--tests/regressiontests/extra_regress/models.py6
-rw-r--r--tests/regressiontests/extra_regress/tests.py36
-rw-r--r--tests/regressiontests/file_storage/tests.py8
-rw-r--r--tests/regressiontests/file_uploads/tests.py23
-rw-r--r--tests/regressiontests/file_uploads/views.py4
-rw-r--r--tests/regressiontests/fixtures_regress/models.py10
-rw-r--r--tests/regressiontests/fixtures_regress/tests.py4
-rw-r--r--tests/regressiontests/forms/models.py6
-rw-r--r--tests/regressiontests/forms/tests/error_messages.py117
-rw-r--r--tests/regressiontests/forms/tests/extra.py175
-rw-r--r--tests/regressiontests/forms/tests/fields.py568
-rw-r--r--tests/regressiontests/forms/tests/forms.py255
-rw-r--r--tests/regressiontests/forms/tests/formsets.py88
-rw-r--r--tests/regressiontests/forms/tests/models.py18
-rw-r--r--tests/regressiontests/forms/tests/regressions.py34
-rw-r--r--tests/regressiontests/forms/tests/util.py16
-rw-r--r--tests/regressiontests/forms/tests/widgets.py325
-rw-r--r--tests/regressiontests/generic_inline_admin/tests.py41
-rw-r--r--tests/regressiontests/httpwrappers/tests.py58
-rw-r--r--tests/regressiontests/i18n/contenttypes/tests.py5
-rw-r--r--tests/regressiontests/i18n/patterns/tests.py10
-rw-r--r--tests/regressiontests/i18n/tests.py296
-rw-r--r--tests/regressiontests/inline_formsets/tests.py46
-rw-r--r--tests/regressiontests/introspection/models.py4
-rw-r--r--tests/regressiontests/introspection/tests.py6
-rw-r--r--tests/regressiontests/localflavor/ar/tests.py28
-rw-r--r--tests/regressiontests/localflavor/at/tests.py8
-rw-r--r--tests/regressiontests/localflavor/au/tests.py14
-rw-r--r--tests/regressiontests/localflavor/be/tests.py34
-rw-r--r--tests/regressiontests/localflavor/br/tests.py38
-rw-r--r--tests/regressiontests/localflavor/ca/tests.py12
-rw-r--r--tests/regressiontests/localflavor/ch/tests.py10
-rw-r--r--tests/regressiontests/localflavor/cl/tests.py8
-rw-r--r--tests/regressiontests/localflavor/cn/tests.py37
-rw-r--r--tests/regressiontests/localflavor/co/tests.py4
-rw-r--r--tests/regressiontests/localflavor/cz/tests.py12
-rw-r--r--tests/regressiontests/localflavor/de/tests.py8
-rw-r--r--tests/regressiontests/localflavor/ec/tests.py4
-rw-r--r--tests/regressiontests/localflavor/es/tests.py22
-rw-r--r--tests/regressiontests/localflavor/fi/tests.py8
-rw-r--r--tests/regressiontests/localflavor/fr/tests.py8
-rw-r--r--tests/regressiontests/localflavor/gb/tests.py6
-rw-r--r--tests/regressiontests/localflavor/generic/tests.py6
-rw-r--r--tests/regressiontests/localflavor/hr/tests.py38
-rw-r--r--tests/regressiontests/localflavor/id/tests.py50
-rw-r--r--tests/regressiontests/localflavor/ie/tests.py4
-rw-r--r--tests/regressiontests/localflavor/il/tests.py6
-rw-r--r--tests/regressiontests/localflavor/in_/tests.py10
-rw-r--r--tests/regressiontests/localflavor/is_/tests.py18
-rw-r--r--tests/regressiontests/localflavor/it/tests.py10
-rw-r--r--tests/regressiontests/localflavor/jp/tests.py6
-rw-r--r--tests/regressiontests/localflavor/kw/tests.py4
-rw-r--r--tests/regressiontests/localflavor/mk/tests.py24
-rw-r--r--tests/regressiontests/localflavor/mx/tests.py66
-rw-r--r--tests/regressiontests/localflavor/nl/tests.py10
-rw-r--r--tests/regressiontests/localflavor/pl/tests.py26
-rw-r--r--tests/regressiontests/localflavor/pt/tests.py6
-rw-r--r--tests/regressiontests/localflavor/py/tests.py6
-rw-r--r--tests/regressiontests/localflavor/ro/tests.py42
-rw-r--r--tests/regressiontests/localflavor/ru/tests.py12
-rw-r--r--tests/regressiontests/localflavor/se/tests.py12
-rw-r--r--tests/regressiontests/localflavor/si/tests.py17
-rw-r--r--tests/regressiontests/localflavor/sk/tests.py8
-rw-r--r--tests/regressiontests/localflavor/us/tests.py14
-rw-r--r--tests/regressiontests/localflavor/uy/tests.py14
-rw-r--r--tests/regressiontests/localflavor/za/tests.py6
-rw-r--r--tests/regressiontests/logging_tests/tests.py6
-rw-r--r--tests/regressiontests/m2m_through_regress/models.py4
-rw-r--r--tests/regressiontests/mail/tests.py16
-rw-r--r--tests/regressiontests/many_to_one_regress/models.py3
-rw-r--r--tests/regressiontests/model_fields/tests.py10
-rw-r--r--tests/regressiontests/model_forms_regress/models.py4
-rw-r--r--tests/regressiontests/model_forms_regress/tests.py20
-rw-r--r--tests/regressiontests/model_formsets_regress/tests.py114
-rw-r--r--tests/regressiontests/model_inheritance_regress/models.py12
-rw-r--r--tests/regressiontests/model_inheritance_regress/tests.py19
-rw-r--r--tests/regressiontests/model_inheritance_select_related/models.py5
-rw-r--r--tests/regressiontests/model_regress/tests.py4
-rw-r--r--tests/regressiontests/modeladmin/tests.py16
-rw-r--r--tests/regressiontests/multiple_database/tests.py108
-rw-r--r--tests/regressiontests/null_fk/tests.py10
-rw-r--r--tests/regressiontests/null_fk_ordering/models.py3
-rw-r--r--tests/regressiontests/null_queries/models.py6
-rw-r--r--tests/regressiontests/one_to_one_regress/models.py10
-rw-r--r--tests/regressiontests/pagination_regress/tests.py6
-rw-r--r--tests/regressiontests/queries/models.py5
-rw-r--r--tests/regressiontests/queries/tests.py21
-rw-r--r--tests/regressiontests/requests/tests.py93
-rw-r--r--tests/regressiontests/select_related_regress/models.py10
-rw-r--r--tests/regressiontests/select_related_regress/tests.py26
-rw-r--r--tests/regressiontests/serializers_regress/tests.py4
-rw-r--r--tests/regressiontests/signed_cookies_tests/tests.py8
-rw-r--r--tests/regressiontests/signing/tests.py10
-rw-r--r--tests/regressiontests/staticfiles_tests/tests.py11
-rw-r--r--tests/regressiontests/string_lookup/tests.py6
-rw-r--r--tests/regressiontests/syndication/feeds.py10
-rw-r--r--tests/regressiontests/syndication/tests.py4
-rw-r--r--tests/regressiontests/templates/callables.py18
-rw-r--r--tests/regressiontests/templates/custom.py126
-rw-r--r--tests/regressiontests/templates/filters.py136
-rw-r--r--tests/regressiontests/templates/parser.py32
-rw-r--r--tests/regressiontests/templates/tests.py78
-rw-r--r--tests/regressiontests/templates/unicode.py10
-rw-r--r--tests/regressiontests/templates/urls.py6
-rw-r--r--tests/regressiontests/test_client_regress/tests.py24
-rw-r--r--tests/regressiontests/test_utils/tests.py10
-rw-r--r--tests/regressiontests/text/tests.py87
-rw-r--r--tests/regressiontests/utils/dateformat.py76
-rw-r--r--tests/regressiontests/utils/feedgenerator.py6
-rw-r--r--tests/regressiontests/utils/html.py20
-rw-r--r--tests/regressiontests/utils/ipv6.py20
-rw-r--r--tests/regressiontests/utils/jslex.py2
-rw-r--r--tests/regressiontests/utils/regex_helper.py16
-rw-r--r--tests/regressiontests/utils/simplelazyobject.py8
-rw-r--r--tests/regressiontests/utils/text.py84
-rw-r--r--tests/regressiontests/utils/timesince.py72
-rw-r--r--tests/regressiontests/views/__init__.py9
-rw-r--r--tests/regressiontests/views/generic_urls.py10
-rw-r--r--tests/regressiontests/views/tests/specials.py4
-rw-r--r--tests/regressiontests/wsgi/tests.py4
142 files changed, 2857 insertions, 2685 deletions
diff --git a/tests/regressiontests/admin_custom_urls/tests.py b/tests/regressiontests/admin_custom_urls/tests.py
index 6197827793..4a6235e7d5 100644
--- a/tests/regressiontests/admin_custom_urls/tests.py
+++ b/tests/regressiontests/admin_custom_urls/tests.py
@@ -1,4 +1,4 @@
-from __future__ import absolute_import
+from __future__ import absolute_import, unicode_literals
from django.core.urlresolvers import reverse
from django.template.response import TemplateResponse
@@ -39,9 +39,9 @@ class AdminCustomUrlsTest(TestCase):
A smoke test to ensure POST on add_view works.
"""
post_data = {
- '_popup': u'1',
- "name": u'Action added through a popup',
- "description": u"Description of added action",
+ '_popup': '1',
+ "name": 'Action added through a popup',
+ "description": "Description of added action",
}
response = self.client.post('/custom_urls/admin/admin_custom_urls/action/!add/', post_data)
self.assertEqual(response.status_code, 200)
diff --git a/tests/regressiontests/admin_filters/models.py b/tests/regressiontests/admin_filters/models.py
index deb8ee88c3..371c67061f 100644
--- a/tests/regressiontests/admin_filters/models.py
+++ b/tests/regressiontests/admin_filters/models.py
@@ -1,3 +1,5 @@
+from __future__ import unicode_literals
+
from django.contrib.auth.models import User
from django.db import models
@@ -9,7 +11,7 @@ class Book(models.Model):
contributors = models.ManyToManyField(User, verbose_name="Verbose Contributors", related_name='books_contributed', blank=True, null=True)
is_best_seller = models.NullBooleanField(default=0)
date_registered = models.DateField(null=True)
- no = models.IntegerField(verbose_name=u'number', blank=True, null=True) # This field is intentionally 2 characters long. See #16080.
+ no = models.IntegerField(verbose_name='number', blank=True, null=True) # This field is intentionally 2 characters long. See #16080.
def __unicode__(self):
return self.title
@@ -27,4 +29,4 @@ class Employee(models.Model):
name = models.CharField(max_length=100)
def __unicode__(self):
- return self.name \ No newline at end of file
+ return self.name
diff --git a/tests/regressiontests/admin_filters/tests.py b/tests/regressiontests/admin_filters/tests.py
index 8c9788b985..72cc5d7ee5 100644
--- a/tests/regressiontests/admin_filters/tests.py
+++ b/tests/regressiontests/admin_filters/tests.py
@@ -1,4 +1,4 @@
-from __future__ import absolute_import
+from __future__ import absolute_import, unicode_literals
import datetime
@@ -160,7 +160,7 @@ class ListFiltersTests(TestCase):
# Make sure the correct choice is selected
filterspec = changelist.get_filters(request)[0][4]
- self.assertEqual(force_unicode(filterspec.title), u'date registered')
+ self.assertEqual(force_unicode(filterspec.title), 'date registered')
choice = select_by(filterspec.choices(changelist), "display", "Today")
self.assertEqual(choice['selected'], True)
self.assertEqual(choice['query_string'], '?date_registered__gte=%s'
@@ -181,7 +181,7 @@ class ListFiltersTests(TestCase):
# Make sure the correct choice is selected
filterspec = changelist.get_filters(request)[0][4]
- self.assertEqual(force_unicode(filterspec.title), u'date registered')
+ self.assertEqual(force_unicode(filterspec.title), 'date registered')
choice = select_by(filterspec.choices(changelist), "display", "This month")
self.assertEqual(choice['selected'], True)
self.assertEqual(choice['query_string'], '?date_registered__gte=%s'
@@ -202,7 +202,7 @@ class ListFiltersTests(TestCase):
# Make sure the correct choice is selected
filterspec = changelist.get_filters(request)[0][4]
- self.assertEqual(force_unicode(filterspec.title), u'date registered')
+ self.assertEqual(force_unicode(filterspec.title), 'date registered')
choice = select_by(filterspec.choices(changelist), "display", "This year")
self.assertEqual(choice['selected'], True)
self.assertEqual(choice['query_string'], '?date_registered__gte=%s'
@@ -219,7 +219,7 @@ class ListFiltersTests(TestCase):
# Make sure the correct choice is selected
filterspec = changelist.get_filters(request)[0][4]
- self.assertEqual(force_unicode(filterspec.title), u'date registered')
+ self.assertEqual(force_unicode(filterspec.title), 'date registered')
choice = select_by(filterspec.choices(changelist), "display", "Past 7 days")
self.assertEqual(choice['selected'], True)
self.assertEqual(choice['query_string'], '?date_registered__gte=%s'
@@ -243,7 +243,7 @@ class ListFiltersTests(TestCase):
# Make sure the last choice is None and is selected
filterspec = changelist.get_filters(request)[0][0]
- self.assertEqual(force_unicode(filterspec.title), u'year')
+ self.assertEqual(force_unicode(filterspec.title), 'year')
choices = list(filterspec.choices(changelist))
self.assertEqual(choices[-1]['selected'], True)
self.assertEqual(choices[-1]['query_string'], '?year__isnull=True')
@@ -253,7 +253,7 @@ class ListFiltersTests(TestCase):
# Make sure the correct choice is selected
filterspec = changelist.get_filters(request)[0][0]
- self.assertEqual(force_unicode(filterspec.title), u'year')
+ self.assertEqual(force_unicode(filterspec.title), 'year')
choices = list(filterspec.choices(changelist))
self.assertEqual(choices[2]['selected'], True)
self.assertEqual(choices[2]['query_string'], '?year=2002')
@@ -270,7 +270,7 @@ class ListFiltersTests(TestCase):
# Make sure the last choice is None and is selected
filterspec = changelist.get_filters(request)[0][1]
- self.assertEqual(force_unicode(filterspec.title), u'Verbose Author')
+ self.assertEqual(force_unicode(filterspec.title), 'Verbose Author')
choices = list(filterspec.choices(changelist))
self.assertEqual(choices[-1]['selected'], True)
self.assertEqual(choices[-1]['query_string'], '?author__isnull=True')
@@ -280,7 +280,7 @@ class ListFiltersTests(TestCase):
# Make sure the correct choice is selected
filterspec = changelist.get_filters(request)[0][1]
- self.assertEqual(force_unicode(filterspec.title), u'Verbose Author')
+ self.assertEqual(force_unicode(filterspec.title), 'Verbose Author')
# order of choices depends on User model, which has no order
choice = select_by(filterspec.choices(changelist), "display", "alfred")
self.assertEqual(choice['selected'], True)
@@ -298,7 +298,7 @@ class ListFiltersTests(TestCase):
# Make sure the last choice is None and is selected
filterspec = changelist.get_filters(request)[0][2]
- self.assertEqual(force_unicode(filterspec.title), u'Verbose Contributors')
+ self.assertEqual(force_unicode(filterspec.title), 'Verbose Contributors')
choices = list(filterspec.choices(changelist))
self.assertEqual(choices[-1]['selected'], True)
self.assertEqual(choices[-1]['query_string'], '?contributors__isnull=True')
@@ -308,7 +308,7 @@ class ListFiltersTests(TestCase):
# Make sure the correct choice is selected
filterspec = changelist.get_filters(request)[0][2]
- self.assertEqual(force_unicode(filterspec.title), u'Verbose Contributors')
+ self.assertEqual(force_unicode(filterspec.title), 'Verbose Contributors')
choice = select_by(filterspec.choices(changelist), "display", "bob")
self.assertEqual(choice['selected'], True)
self.assertEqual(choice['query_string'], '?contributors__id__exact=%d' % self.bob.pk)
@@ -326,7 +326,7 @@ class ListFiltersTests(TestCase):
# Make sure the last choice is None and is selected
filterspec = changelist.get_filters(request)[0][0]
- self.assertEqual(force_unicode(filterspec.title), u'book')
+ self.assertEqual(force_unicode(filterspec.title), 'book')
choices = list(filterspec.choices(changelist))
self.assertEqual(choices[-1]['selected'], True)
self.assertEqual(choices[-1]['query_string'], '?books_authored__isnull=True')
@@ -336,7 +336,7 @@ class ListFiltersTests(TestCase):
# Make sure the correct choice is selected
filterspec = changelist.get_filters(request)[0][0]
- self.assertEqual(force_unicode(filterspec.title), u'book')
+ self.assertEqual(force_unicode(filterspec.title), 'book')
choice = select_by(filterspec.choices(changelist), "display", self.bio_book.title)
self.assertEqual(choice['selected'], True)
self.assertEqual(choice['query_string'], '?books_authored__id__exact=%d' % self.bio_book.pk)
@@ -351,7 +351,7 @@ class ListFiltersTests(TestCase):
# Make sure the last choice is None and is selected
filterspec = changelist.get_filters(request)[0][1]
- self.assertEqual(force_unicode(filterspec.title), u'book')
+ self.assertEqual(force_unicode(filterspec.title), 'book')
choices = list(filterspec.choices(changelist))
self.assertEqual(choices[-1]['selected'], True)
self.assertEqual(choices[-1]['query_string'], '?books_contributed__isnull=True')
@@ -361,7 +361,7 @@ class ListFiltersTests(TestCase):
# Make sure the correct choice is selected
filterspec = changelist.get_filters(request)[0][1]
- self.assertEqual(force_unicode(filterspec.title), u'book')
+ self.assertEqual(force_unicode(filterspec.title), 'book')
choice = select_by(filterspec.choices(changelist), "display", self.django_book.title)
self.assertEqual(choice['selected'], True)
self.assertEqual(choice['query_string'], '?books_contributed__id__exact=%d' % self.django_book.pk)
@@ -387,7 +387,7 @@ class ListFiltersTests(TestCase):
# Make sure the correct choice is selected
filterspec = changelist.get_filters(request)[0][3]
- self.assertEqual(force_unicode(filterspec.title), u'is best seller')
+ self.assertEqual(force_unicode(filterspec.title), 'is best seller')
choice = select_by(filterspec.choices(changelist), "display", "No")
self.assertEqual(choice['selected'], True)
self.assertEqual(choice['query_string'], '?is_best_seller__exact=0')
@@ -401,7 +401,7 @@ class ListFiltersTests(TestCase):
# Make sure the correct choice is selected
filterspec = changelist.get_filters(request)[0][3]
- self.assertEqual(force_unicode(filterspec.title), u'is best seller')
+ self.assertEqual(force_unicode(filterspec.title), 'is best seller')
choice = select_by(filterspec.choices(changelist), "display", "Yes")
self.assertEqual(choice['selected'], True)
self.assertEqual(choice['query_string'], '?is_best_seller__exact=1')
@@ -415,7 +415,7 @@ class ListFiltersTests(TestCase):
# Make sure the correct choice is selected
filterspec = changelist.get_filters(request)[0][3]
- self.assertEqual(force_unicode(filterspec.title), u'is best seller')
+ self.assertEqual(force_unicode(filterspec.title), 'is best seller')
choice = select_by(filterspec.choices(changelist), "display", "Unknown")
self.assertEqual(choice['selected'], True)
self.assertEqual(choice['query_string'], '?is_best_seller__isnull=True')
@@ -434,9 +434,9 @@ class ListFiltersTests(TestCase):
# Make sure the correct choice is selected
filterspec = changelist.get_filters(request)[0][1]
- self.assertEqual(force_unicode(filterspec.title), u'publication decade')
+ self.assertEqual(force_unicode(filterspec.title), 'publication decade')
choices = list(filterspec.choices(changelist))
- self.assertEqual(choices[0]['display'], u'All')
+ self.assertEqual(choices[0]['display'], 'All')
self.assertEqual(choices[0]['selected'], True)
self.assertEqual(choices[0]['query_string'], '?')
@@ -451,9 +451,9 @@ class ListFiltersTests(TestCase):
# Make sure the correct choice is selected
filterspec = changelist.get_filters(request)[0][1]
- self.assertEqual(force_unicode(filterspec.title), u'publication decade')
+ self.assertEqual(force_unicode(filterspec.title), 'publication decade')
choices = list(filterspec.choices(changelist))
- self.assertEqual(choices[1]['display'], u'the 1980\'s')
+ self.assertEqual(choices[1]['display'], 'the 1980\'s')
self.assertEqual(choices[1]['selected'], True)
self.assertEqual(choices[1]['query_string'], '?publication-decade=the+80s')
@@ -468,9 +468,9 @@ class ListFiltersTests(TestCase):
# Make sure the correct choice is selected
filterspec = changelist.get_filters(request)[0][1]
- self.assertEqual(force_unicode(filterspec.title), u'publication decade')
+ self.assertEqual(force_unicode(filterspec.title), 'publication decade')
choices = list(filterspec.choices(changelist))
- self.assertEqual(choices[2]['display'], u'the 1990\'s')
+ self.assertEqual(choices[2]['display'], 'the 1990\'s')
self.assertEqual(choices[2]['selected'], True)
self.assertEqual(choices[2]['query_string'], '?publication-decade=the+90s')
@@ -485,9 +485,9 @@ class ListFiltersTests(TestCase):
# Make sure the correct choice is selected
filterspec = changelist.get_filters(request)[0][1]
- self.assertEqual(force_unicode(filterspec.title), u'publication decade')
+ self.assertEqual(force_unicode(filterspec.title), 'publication decade')
choices = list(filterspec.choices(changelist))
- self.assertEqual(choices[3]['display'], u'the 2000\'s')
+ self.assertEqual(choices[3]['display'], 'the 2000\'s')
self.assertEqual(choices[3]['selected'], True)
self.assertEqual(choices[3]['query_string'], '?publication-decade=the+00s')
@@ -502,14 +502,14 @@ class ListFiltersTests(TestCase):
# Make sure the correct choices are selected
filterspec = changelist.get_filters(request)[0][1]
- self.assertEqual(force_unicode(filterspec.title), u'publication decade')
+ self.assertEqual(force_unicode(filterspec.title), 'publication decade')
choices = list(filterspec.choices(changelist))
- self.assertEqual(choices[3]['display'], u'the 2000\'s')
+ self.assertEqual(choices[3]['display'], 'the 2000\'s')
self.assertEqual(choices[3]['selected'], True)
self.assertEqual(choices[3]['query_string'], '?publication-decade=the+00s&author__id__exact=%s' % self.alfred.pk)
filterspec = changelist.get_filters(request)[0][0]
- self.assertEqual(force_unicode(filterspec.title), u'Verbose Author')
+ self.assertEqual(force_unicode(filterspec.title), 'Verbose Author')
choice = select_by(filterspec.choices(changelist), "display", "alfred")
self.assertEqual(choice['selected'], True)
self.assertEqual(choice['query_string'], '?publication-decade=the+00s&author__id__exact=%s' % self.alfred.pk)
@@ -561,19 +561,19 @@ class ListFiltersTests(TestCase):
changelist = self.get_changelist(request, Book, modeladmin)
filterspec = changelist.get_filters(request)[0][0]
- self.assertEqual(force_unicode(filterspec.title), u'publication decade')
+ self.assertEqual(force_unicode(filterspec.title), 'publication decade')
choices = list(filterspec.choices(changelist))
self.assertEqual(len(choices), 3)
- self.assertEqual(choices[0]['display'], u'All')
+ self.assertEqual(choices[0]['display'], 'All')
self.assertEqual(choices[0]['selected'], True)
self.assertEqual(choices[0]['query_string'], '?')
- self.assertEqual(choices[1]['display'], u'the 1990\'s')
+ self.assertEqual(choices[1]['display'], 'the 1990\'s')
self.assertEqual(choices[1]['selected'], False)
self.assertEqual(choices[1]['query_string'], '?publication-decade=the+90s')
- self.assertEqual(choices[2]['display'], u'the 2000\'s')
+ self.assertEqual(choices[2]['display'], 'the 2000\'s')
self.assertEqual(choices[2]['selected'], False)
self.assertEqual(choices[2]['query_string'], '?publication-decade=the+00s')
@@ -591,7 +591,7 @@ class ListFiltersTests(TestCase):
self.assertEqual(list(queryset), [self.bio_book])
filterspec = changelist.get_filters(request)[0][-1]
- self.assertEqual(force_unicode(filterspec.title), u'number')
+ self.assertEqual(force_unicode(filterspec.title), 'number')
choices = list(filterspec.choices(changelist))
self.assertEqual(choices[2]['selected'], True)
self.assertEqual(choices[2]['query_string'], '?no=207')
@@ -614,9 +614,9 @@ class ListFiltersTests(TestCase):
# Make sure the correct choice is selected
filterspec = changelist.get_filters(request)[0][0]
- self.assertEqual(force_unicode(filterspec.title), u'publication decade')
+ self.assertEqual(force_unicode(filterspec.title), 'publication decade')
choices = list(filterspec.choices(changelist))
- self.assertEqual(choices[2]['display'], u'the 1990\'s')
+ self.assertEqual(choices[2]['display'], 'the 1990\'s')
self.assertEqual(choices[2]['selected'], True)
self.assertEqual(choices[2]['query_string'], '?decade__in=the+90s')
@@ -631,9 +631,9 @@ class ListFiltersTests(TestCase):
# Make sure the correct choice is selected
filterspec = changelist.get_filters(request)[0][0]
- self.assertEqual(force_unicode(filterspec.title), u'publication decade')
+ self.assertEqual(force_unicode(filterspec.title), 'publication decade')
choices = list(filterspec.choices(changelist))
- self.assertEqual(choices[2]['display'], u'the 1990\'s')
+ self.assertEqual(choices[2]['display'], 'the 1990\'s')
self.assertEqual(choices[2]['selected'], True)
self.assertEqual(choices[2]['query_string'], '?decade__isnull=the+90s')
@@ -657,18 +657,18 @@ class ListFiltersTests(TestCase):
self.assertEqual(list(queryset), [jack, john])
filterspec = changelist.get_filters(request)[0][-1]
- self.assertEqual(force_unicode(filterspec.title), u'department')
+ self.assertEqual(force_unicode(filterspec.title), 'department')
choices = list(filterspec.choices(changelist))
- self.assertEqual(choices[0]['display'], u'All')
+ self.assertEqual(choices[0]['display'], 'All')
self.assertEqual(choices[0]['selected'], True)
self.assertEqual(choices[0]['query_string'], '?')
- self.assertEqual(choices[1]['display'], u'Development')
+ self.assertEqual(choices[1]['display'], 'Development')
self.assertEqual(choices[1]['selected'], False)
self.assertEqual(choices[1]['query_string'], '?department__code__exact=DEV')
- self.assertEqual(choices[2]['display'], u'Design')
+ self.assertEqual(choices[2]['display'], 'Design')
self.assertEqual(choices[2]['selected'], False)
self.assertEqual(choices[2]['query_string'], '?department__code__exact=DSN')
@@ -682,17 +682,17 @@ class ListFiltersTests(TestCase):
self.assertEqual(list(queryset), [john])
filterspec = changelist.get_filters(request)[0][-1]
- self.assertEqual(force_unicode(filterspec.title), u'department')
+ self.assertEqual(force_unicode(filterspec.title), 'department')
choices = list(filterspec.choices(changelist))
- self.assertEqual(choices[0]['display'], u'All')
+ self.assertEqual(choices[0]['display'], 'All')
self.assertEqual(choices[0]['selected'], False)
self.assertEqual(choices[0]['query_string'], '?')
- self.assertEqual(choices[1]['display'], u'Development')
+ self.assertEqual(choices[1]['display'], 'Development')
self.assertEqual(choices[1]['selected'], True)
self.assertEqual(choices[1]['query_string'], '?department__code__exact=DEV')
- self.assertEqual(choices[2]['display'], u'Design')
+ self.assertEqual(choices[2]['display'], 'Design')
self.assertEqual(choices[2]['selected'], False)
self.assertEqual(choices[2]['query_string'], '?department__code__exact=DSN')
diff --git a/tests/regressiontests/admin_inlines/models.py b/tests/regressiontests/admin_inlines/models.py
index f2add00288..d7526d6020 100644
--- a/tests/regressiontests/admin_inlines/models.py
+++ b/tests/regressiontests/admin_inlines/models.py
@@ -2,6 +2,8 @@
Testing of admin inline formsets.
"""
+from __future__ import unicode_literals
+
from django.db import models
from django.contrib.contenttypes.models import ContentType
from django.contrib.contenttypes import generic
@@ -30,7 +32,7 @@ class Child(models.Model):
parent = generic.GenericForeignKey()
def __unicode__(self):
- return u'I am %s, a child of %s' % (self.name, self.parent)
+ return 'I am %s, a child of %s' % (self.name, self.parent)
class Book(models.Model):
@@ -145,4 +147,4 @@ class ProfileCollection(models.Model):
class Profile(models.Model):
collection = models.ForeignKey(ProfileCollection, blank=True, null=True)
first_name = models.CharField(max_length=100)
- last_name = models.CharField(max_length=100) \ No newline at end of file
+ last_name = models.CharField(max_length=100)
diff --git a/tests/regressiontests/admin_inlines/tests.py b/tests/regressiontests/admin_inlines/tests.py
index 2cca67012f..94790af56c 100644
--- a/tests/regressiontests/admin_inlines/tests.py
+++ b/tests/regressiontests/admin_inlines/tests.py
@@ -1,4 +1,4 @@
-from __future__ import absolute_import
+from __future__ import absolute_import, unicode_literals
from django.contrib.admin.tests import AdminSeleniumWebDriverTestCase
from django.contrib.admin.helpers import InlineAdminForm
@@ -67,7 +67,7 @@ class TestInline(TestCase):
'shoppingweakness_set-TOTAL_FORMS': 1,
'shoppingweakness_set-INITIAL_FORMS': 0,
'shoppingweakness_set-MAX_NUM_FORMS': 0,
- '_save': u'Save',
+ '_save': 'Save',
'person': person.id,
'max_weight': 0,
'shoppingweakness_set-0-item': item.id,
@@ -85,7 +85,7 @@ class TestInline(TestCase):
'title_set-TOTAL_FORMS': 1,
'title_set-INITIAL_FORMS': 0,
'title_set-MAX_NUM_FORMS': 0,
- '_save': u'Save',
+ '_save': 'Save',
'title_set-0-title1': 'a title',
'title_set-0-title2': 'a different title',
}
@@ -235,8 +235,8 @@ class TestInlinePermissions(TestCase):
permission = Permission.objects.get(codename='change_holder2', content_type=self.holder_ct)
self.user.user_permissions.add(permission)
- author = Author.objects.create(pk=1, name=u'The Author')
- book = author.books.create(name=u'The inline Book')
+ author = Author.objects.create(pk=1, name='The Author')
+ book = author.books.create(name='The inline Book')
self.author_change_url = '/admin/admin_inlines/author/%i/' % author.id
# Get the ID of the automatically created intermediate model for thw Author-Book m2m
author_book_auto_m2m_intermediate = Author.books.through.objects.get(author=author, book=book)
diff --git a/tests/regressiontests/admin_ordering/tests.py b/tests/regressiontests/admin_ordering/tests.py
index b82f150f40..faae834f93 100644
--- a/tests/regressiontests/admin_ordering/tests.py
+++ b/tests/regressiontests/admin_ordering/tests.py
@@ -1,4 +1,4 @@
-from __future__ import absolute_import
+from __future__ import absolute_import, unicode_literals
from django.test import TestCase, RequestFactory
from django.contrib.admin.options import ModelAdmin
@@ -42,7 +42,7 @@ class TestAdminOrdering(TestCase):
"""
ma = ModelAdmin(Band, None)
names = [b.name for b in ma.queryset(request)]
- self.assertEqual([u'Aerosmith', u'Radiohead', u'Van Halen'], names)
+ self.assertEqual(['Aerosmith', 'Radiohead', 'Van Halen'], names)
def test_specified_ordering(self):
"""
@@ -53,7 +53,7 @@ class TestAdminOrdering(TestCase):
ordering = ('rank',) # default ordering is ('name',)
ma = BandAdmin(Band, None)
names = [b.name for b in ma.queryset(request)]
- self.assertEqual([u'Radiohead', u'Van Halen', u'Aerosmith'], names)
+ self.assertEqual(['Radiohead', 'Van Halen', 'Aerosmith'], names)
def test_dynamic_ordering(self):
"""
@@ -65,10 +65,10 @@ class TestAdminOrdering(TestCase):
request.user = super_user
ma = DynOrderingBandAdmin(Band, None)
names = [b.name for b in ma.queryset(request)]
- self.assertEqual([u'Radiohead', u'Van Halen', u'Aerosmith'], names)
+ self.assertEqual(['Radiohead', 'Van Halen', 'Aerosmith'], names)
request.user = other_user
names = [b.name for b in ma.queryset(request)]
- self.assertEqual([u'Aerosmith', u'Radiohead', u'Van Halen'], names)
+ self.assertEqual(['Aerosmith', 'Radiohead', 'Van Halen'], names)
class TestInlineModelAdminOrdering(TestCase):
@@ -95,7 +95,7 @@ class TestInlineModelAdminOrdering(TestCase):
"""
inline = SongInlineDefaultOrdering(self.b, None)
names = [s.name for s in inline.queryset(request)]
- self.assertEqual([u'Dude (Looks Like a Lady)', u'Jaded', u'Pink'], names)
+ self.assertEqual(['Dude (Looks Like a Lady)', 'Jaded', 'Pink'], names)
def test_specified_ordering(self):
"""
@@ -103,4 +103,4 @@ class TestInlineModelAdminOrdering(TestCase):
"""
inline = SongInlineNewOrdering(self.b, None)
names = [s.name for s in inline.queryset(request)]
- self.assertEqual([u'Jaded', u'Pink', u'Dude (Looks Like a Lady)'], names)
+ self.assertEqual(['Jaded', 'Pink', 'Dude (Looks Like a Lady)'], names)
diff --git a/tests/regressiontests/admin_util/tests.py b/tests/regressiontests/admin_util/tests.py
index 055f494dcd..ba2be363ca 100644
--- a/tests/regressiontests/admin_util/tests.py
+++ b/tests/regressiontests/admin_util/tests.py
@@ -1,4 +1,4 @@
-from __future__ import absolute_import
+from __future__ import absolute_import, unicode_literals
from datetime import datetime
@@ -138,7 +138,7 @@ class UtilTests(unittest.TestCase):
# Regression test for #13071: NullBooleanField has special
# handling.
display_value = display_for_field(None, models.NullBooleanField())
- expected = u'<img src="%sadmin/img/icon-unknown.gif" alt="None" />' % settings.STATIC_URL
+ expected = '<img src="%sadmin/img/icon-unknown.gif" alt="None" />' % settings.STATIC_URL
self.assertEqual(display_value, expected)
display_value = display_for_field(None, models.DecimalField())
diff --git a/tests/regressiontests/admin_views/admin.py b/tests/regressiontests/admin_views/admin.py
index d9607496c3..01a19e6373 100644
--- a/tests/regressiontests/admin_views/admin.py
+++ b/tests/regressiontests/admin_views/admin.py
@@ -1,5 +1,5 @@
# -*- coding: utf-8 -*-
-from __future__ import absolute_import
+from __future__ import absolute_import, unicode_literals
import tempfile
import os
@@ -171,12 +171,12 @@ class PersonAdmin(admin.ModelAdmin):
class FooAccount(Account):
"""A service-specific account of type Foo."""
- servicename = u'foo'
+ servicename = 'foo'
class BarAccount(Account):
"""A service-specific account of type Bar."""
- servicename = u'bar'
+ servicename = 'bar'
class FooAccountAdmin(admin.StackedInline):
diff --git a/tests/regressiontests/admin_views/models.py b/tests/regressiontests/admin_views/models.py
index 17533f9f80..5aa775656b 100644
--- a/tests/regressiontests/admin_views/models.py
+++ b/tests/regressiontests/admin_views/models.py
@@ -1,4 +1,6 @@
# -*- coding: utf-8 -*-
+from __future__ import unicode_literals
+
import datetime
import tempfile
import os
@@ -40,14 +42,14 @@ class Book(models.Model):
"""
A simple book that has chapters.
"""
- name = models.CharField(max_length=100, verbose_name=u'¿Name?')
+ name = models.CharField(max_length=100, verbose_name='¿Name?')
def __unicode__(self):
return self.name
class Promo(models.Model):
- name = models.CharField(max_length=100, verbose_name=u'¿Name?')
+ name = models.CharField(max_length=100, verbose_name='¿Name?')
book = models.ForeignKey(Book)
def __unicode__(self):
@@ -55,7 +57,7 @@ class Promo(models.Model):
class Chapter(models.Model):
- title = models.CharField(max_length=100, verbose_name=u'¿Title?')
+ title = models.CharField(max_length=100, verbose_name='¿Title?')
content = models.TextField()
book = models.ForeignKey(Book)
@@ -68,19 +70,19 @@ class Chapter(models.Model):
class ChapterXtra1(models.Model):
- chap = models.OneToOneField(Chapter, verbose_name=u'¿Chap?')
- xtra = models.CharField(max_length=100, verbose_name=u'¿Xtra?')
+ chap = models.OneToOneField(Chapter, verbose_name='¿Chap?')
+ xtra = models.CharField(max_length=100, verbose_name='¿Xtra?')
def __unicode__(self):
- return u'¿Xtra1: %s' % self.xtra
+ return '¿Xtra1: %s' % self.xtra
class ChapterXtra2(models.Model):
- chap = models.OneToOneField(Chapter, verbose_name=u'¿Chap?')
- xtra = models.CharField(max_length=100, verbose_name=u'¿Xtra?')
+ chap = models.OneToOneField(Chapter, verbose_name='¿Chap?')
+ xtra = models.CharField(max_length=100, verbose_name='¿Xtra?')
def __unicode__(self):
- return u'¿Xtra2: %s' % self.xtra
+ return '¿Xtra2: %s' % self.xtra
class RowLevelChangePermissionModel(models.Model):
@@ -130,7 +132,7 @@ class Inquisition(models.Model):
country = models.CharField(max_length=20)
def __unicode__(self):
- return u"by %s from %s" % (self.leader, self.country)
+ return "by %s from %s" % (self.leader, self.country)
class Sketch(models.Model):
@@ -187,7 +189,7 @@ class Account(models.Model):
"""
username = models.CharField(blank=False, max_length=80)
persona = models.ForeignKey(Persona, related_name="accounts")
- servicename = u'generic service'
+ servicename = 'generic service'
def __unicode__(self):
return "%s: %s" % (self.servicename, self.username)
@@ -195,12 +197,12 @@ class Account(models.Model):
class FooAccount(Account):
"""A service-specific account of type Foo."""
- servicename = u'foo'
+ servicename = 'foo'
class BarAccount(Account):
"""A service-specific account of type Bar."""
- servicename = u'bar'
+ servicename = 'bar'
class Subscriber(models.Model):
@@ -335,7 +337,7 @@ class Category(models.Model):
ordering = ('order',)
def __unicode__(self):
- return u'%s:o%s' % (self.id, self.order)
+ return '%s:o%s' % (self.id, self.order)
class Link(models.Model):
@@ -493,14 +495,14 @@ class Reservation(models.Model):
DRIVER_CHOICES = (
- (u'bill', 'Bill G'),
- (u'steve', 'Steve J'),
+ ('bill', 'Bill G'),
+ ('steve', 'Steve J'),
)
RESTAURANT_CHOICES = (
- (u'indian', u'A Taste of India'),
- (u'thai', u'Thai Pography'),
- (u'pizza', u'Pizza Mama'),
+ ('indian', 'A Taste of India'),
+ ('thai', 'Thai Pography'),
+ ('pizza', 'Pizza Mama'),
)
diff --git a/tests/regressiontests/admin_views/tests.py b/tests/regressiontests/admin_views/tests.py
index f9a9b15114..e220011fdc 100644
--- a/tests/regressiontests/admin_views/tests.py
+++ b/tests/regressiontests/admin_views/tests.py
@@ -1,5 +1,5 @@
# coding: utf-8
-from __future__ import absolute_import
+from __future__ import absolute_import, unicode_literals
import os
import re
@@ -119,11 +119,11 @@ class AdminViewBasicTest(TestCase):
A smoke test to ensure POST on add_view works.
"""
post_data = {
- "name": u"Another Section",
+ "name": "Another Section",
# inline data
- "article_set-TOTAL_FORMS": u"3",
- "article_set-INITIAL_FORMS": u"0",
- "article_set-MAX_NUM_FORMS": u"0",
+ "article_set-TOTAL_FORMS": "3",
+ "article_set-INITIAL_FORMS": "0",
+ "article_set-MAX_NUM_FORMS": "0",
}
response = self.client.post('/test_admin/%s/admin_views/section/add/' % self.urlbit, post_data)
self.assertEqual(response.status_code, 302) # redirect somewhere
@@ -133,56 +133,56 @@ class AdminViewBasicTest(TestCase):
Ensure http response from a popup is properly escaped.
"""
post_data = {
- '_popup': u'1',
- 'title': u'title with a new\nline',
- 'content': u'some content',
- 'date_0': u'2010-09-10',
- 'date_1': u'14:55:39',
+ '_popup': '1',
+ 'title': 'title with a new\nline',
+ 'content': 'some content',
+ 'date_0': '2010-09-10',
+ 'date_1': '14:55:39',
}
response = self.client.post('/test_admin/%s/admin_views/article/add/' % self.urlbit, post_data)
self.assertEqual(response.status_code, 200)
self.assertContains(response, 'dismissAddAnotherPopup')
- self.assertContains(response, 'title with a new\u000Aline')
+ self.assertContains(response, 'title with a new\\u000Aline')
# Post data for edit inline
inline_post_data = {
- "name": u"Test section",
+ "name": "Test section",
# inline data
- "article_set-TOTAL_FORMS": u"6",
- "article_set-INITIAL_FORMS": u"3",
- "article_set-MAX_NUM_FORMS": u"0",
- "article_set-0-id": u"1",
+ "article_set-TOTAL_FORMS": "6",
+ "article_set-INITIAL_FORMS": "3",
+ "article_set-MAX_NUM_FORMS": "0",
+ "article_set-0-id": "1",
# there is no title in database, give one here or formset will fail.
- "article_set-0-title": u"Norske bostaver æøå skaper problemer",
- "article_set-0-content": u"&lt;p&gt;Middle content&lt;/p&gt;",
- "article_set-0-date_0": u"2008-03-18",
- "article_set-0-date_1": u"11:54:58",
- "article_set-0-section": u"1",
- "article_set-1-id": u"2",
- "article_set-1-title": u"Need a title.",
- "article_set-1-content": u"&lt;p&gt;Oldest content&lt;/p&gt;",
- "article_set-1-date_0": u"2000-03-18",
- "article_set-1-date_1": u"11:54:58",
- "article_set-2-id": u"3",
- "article_set-2-title": u"Need a title.",
- "article_set-2-content": u"&lt;p&gt;Newest content&lt;/p&gt;",
- "article_set-2-date_0": u"2009-03-18",
- "article_set-2-date_1": u"11:54:58",
- "article_set-3-id": u"",
- "article_set-3-title": u"",
- "article_set-3-content": u"",
- "article_set-3-date_0": u"",
- "article_set-3-date_1": u"",
- "article_set-4-id": u"",
- "article_set-4-title": u"",
- "article_set-4-content": u"",
- "article_set-4-date_0": u"",
- "article_set-4-date_1": u"",
- "article_set-5-id": u"",
- "article_set-5-title": u"",
- "article_set-5-content": u"",
- "article_set-5-date_0": u"",
- "article_set-5-date_1": u"",
+ "article_set-0-title": "Norske bostaver æøå skaper problemer",
+ "article_set-0-content": "&lt;p&gt;Middle content&lt;/p&gt;",
+ "article_set-0-date_0": "2008-03-18",
+ "article_set-0-date_1": "11:54:58",
+ "article_set-0-section": "1",
+ "article_set-1-id": "2",
+ "article_set-1-title": "Need a title.",
+ "article_set-1-content": "&lt;p&gt;Oldest content&lt;/p&gt;",
+ "article_set-1-date_0": "2000-03-18",
+ "article_set-1-date_1": "11:54:58",
+ "article_set-2-id": "3",
+ "article_set-2-title": "Need a title.",
+ "article_set-2-content": "&lt;p&gt;Newest content&lt;/p&gt;",
+ "article_set-2-date_0": "2009-03-18",
+ "article_set-2-date_1": "11:54:58",
+ "article_set-3-id": "",
+ "article_set-3-title": "",
+ "article_set-3-content": "",
+ "article_set-3-date_0": "",
+ "article_set-3-date_1": "",
+ "article_set-4-id": "",
+ "article_set-4-title": "",
+ "article_set-4-content": "",
+ "article_set-4-date_0": "",
+ "article_set-4-date_1": "",
+ "article_set-5-id": "",
+ "article_set-5-title": "",
+ "article_set-5-content": "",
+ "article_set-5-date_0": "",
+ "article_set-5-date_1": "",
}
def testBasicEditPost(self):
@@ -198,12 +198,12 @@ class AdminViewBasicTest(TestCase):
"""
post_data = self.inline_post_data.copy()
post_data.update({
- '_saveasnew': u'Save+as+new',
- "article_set-1-section": u"1",
- "article_set-2-section": u"1",
- "article_set-3-section": u"1",
- "article_set-4-section": u"1",
- "article_set-5-section": u"1",
+ '_saveasnew': 'Save+as+new',
+ "article_set-1-section": "1",
+ "article_set-2-section": "1",
+ "article_set-3-section": "1",
+ "article_set-4-section": "1",
+ "article_set-5-section": "1",
})
response = self.client.post('/test_admin/%s/admin_views/section/1/' % self.urlbit, post_data)
self.assertEqual(response.status_code, 302) # redirect somewhere
@@ -1029,14 +1029,13 @@ class AdminViewPermissionsTest(TestCase):
# one error in form should produce singular error message, multiple errors plural
change_dict['title'] = ''
post = self.client.post('/test_admin/admin/admin_views/article/1/', change_dict)
- self.assertEqual(request.status_code, 200)
- self.assertTrue('Please correct the error below.' in post.content,
- 'Singular error message not found in response to post with one error.')
+ self.assertContains(post, 'Please correct the error below.',
+ msg_prefix='Singular error message not found in response to post with one error')
+
change_dict['content'] = ''
post = self.client.post('/test_admin/admin/admin_views/article/1/', change_dict)
- self.assertEqual(request.status_code, 200)
- self.assertTrue('Please correct the errors below.' in post.content,
- 'Plural error message not found in response to post with multiple errors.')
+ self.assertContains(post, 'Please correct the errors below.',
+ msg_prefix='Plural error message not found in response to post with multiple errors')
self.client.get('/test_admin/admin/logout/')
# Test redirection when using row-level change permissions. Refs #11513.
@@ -1167,7 +1166,7 @@ class AdminViewPermissionsTest(TestCase):
self.assertEqual(mail.outbox[0].subject, 'Greetings from a deleted object')
article_ct = ContentType.objects.get_for_model(Article)
logged = LogEntry.objects.get(content_type=article_ct, action_flag=DELETION)
- self.assertEqual(logged.object_id, u'1')
+ self.assertEqual(logged.object_id, '1')
self.client.get('/test_admin/admin/logout/')
def testDisabledPermissionsWhenLoggedIn(self):
@@ -1601,29 +1600,29 @@ class AdminViewUnicodeTest(TestCase):
A test to ensure that POST on edit_view handles non-ascii characters.
"""
post_data = {
- "name": u"Test lærdommer",
+ "name": "Test lærdommer",
# inline data
- "chapter_set-TOTAL_FORMS": u"6",
- "chapter_set-INITIAL_FORMS": u"3",
- "chapter_set-MAX_NUM_FORMS": u"0",
- "chapter_set-0-id": u"1",
- "chapter_set-0-title": u"Norske bostaver æøå skaper problemer",
- "chapter_set-0-content": u"&lt;p&gt;Svært frustrerende med UnicodeDecodeError&lt;/p&gt;",
- "chapter_set-1-id": u"2",
- "chapter_set-1-title": u"Kjærlighet.",
- "chapter_set-1-content": u"&lt;p&gt;La kjærligheten til de lidende seire.&lt;/p&gt;",
- "chapter_set-2-id": u"3",
- "chapter_set-2-title": u"Need a title.",
- "chapter_set-2-content": u"&lt;p&gt;Newest content&lt;/p&gt;",
- "chapter_set-3-id": u"",
- "chapter_set-3-title": u"",
- "chapter_set-3-content": u"",
- "chapter_set-4-id": u"",
- "chapter_set-4-title": u"",
- "chapter_set-4-content": u"",
- "chapter_set-5-id": u"",
- "chapter_set-5-title": u"",
- "chapter_set-5-content": u"",
+ "chapter_set-TOTAL_FORMS": "6",
+ "chapter_set-INITIAL_FORMS": "3",
+ "chapter_set-MAX_NUM_FORMS": "0",
+ "chapter_set-0-id": "1",
+ "chapter_set-0-title": "Norske bostaver æøå skaper problemer",
+ "chapter_set-0-content": "&lt;p&gt;Svært frustrerende med UnicodeDecodeError&lt;/p&gt;",
+ "chapter_set-1-id": "2",
+ "chapter_set-1-title": "Kjærlighet.",
+ "chapter_set-1-content": "&lt;p&gt;La kjærligheten til de lidende seire.&lt;/p&gt;",
+ "chapter_set-2-id": "3",
+ "chapter_set-2-title": "Need a title.",
+ "chapter_set-2-content": "&lt;p&gt;Newest content&lt;/p&gt;",
+ "chapter_set-3-id": "",
+ "chapter_set-3-title": "",
+ "chapter_set-3-content": "",
+ "chapter_set-4-id": "",
+ "chapter_set-4-title": "",
+ "chapter_set-4-content": "",
+ "chapter_set-5-id": "",
+ "chapter_set-5-title": "",
+ "chapter_set-5-content": "",
}
response = self.client.post('/test_admin/admin/admin_views/book/1/', post_data)
@@ -1940,8 +1939,8 @@ class AdminViewListEditable(TestCase):
"form-2-id": "3",
"index": "0",
- "_selected_action": [u'3'],
- "action": [u'', u'delete_selected'],
+ "_selected_action": ['3'],
+ "action": ['', 'delete_selected'],
}
self.client.post('/test_admin/admin/admin_views/person/', data)
@@ -1967,8 +1966,8 @@ class AdminViewListEditable(TestCase):
"form-2-id": "3",
"_save": "Save",
- "_selected_action": [u'1'],
- "action": [u'', u'delete_selected'],
+ "_selected_action": ['1'],
+ "action": ['', 'delete_selected'],
}
self.client.post('/test_admin/admin/admin_views/person/', data)
@@ -2077,8 +2076,8 @@ class AdminInheritedInlinesTest(TestCase):
def testInline(self):
"Ensure that inline models which inherit from a common parent are correctly handled by admin."
- foo_user = u"foo username"
- bar_user = u"bar username"
+ foo_user = "foo username"
+ bar_user = "bar username"
name_re = re.compile('name="(.*?)"')
@@ -2090,15 +2089,15 @@ class AdminInheritedInlinesTest(TestCase):
# test the add case
post_data = {
- "name": u"Test Name",
+ "name": "Test Name",
# inline data
- "accounts-TOTAL_FORMS": u"1",
- "accounts-INITIAL_FORMS": u"0",
- "accounts-MAX_NUM_FORMS": u"0",
+ "accounts-TOTAL_FORMS": "1",
+ "accounts-INITIAL_FORMS": "0",
+ "accounts-MAX_NUM_FORMS": "0",
"accounts-0-username": foo_user,
- "accounts-2-TOTAL_FORMS": u"1",
- "accounts-2-INITIAL_FORMS": u"0",
- "accounts-2-MAX_NUM_FORMS": u"0",
+ "accounts-2-TOTAL_FORMS": "1",
+ "accounts-2-INITIAL_FORMS": "0",
+ "accounts-2-MAX_NUM_FORMS": "0",
"accounts-2-0-username": bar_user,
}
@@ -2123,19 +2122,19 @@ class AdminInheritedInlinesTest(TestCase):
self.assertEqual(len(names), len(set(names)))
post_data = {
- "name": u"Test Name",
+ "name": "Test Name",
"accounts-TOTAL_FORMS": "2",
- "accounts-INITIAL_FORMS": u"1",
- "accounts-MAX_NUM_FORMS": u"0",
+ "accounts-INITIAL_FORMS": "1",
+ "accounts-MAX_NUM_FORMS": "0",
"accounts-0-username": "%s-1" % foo_user,
"accounts-0-account_ptr": str(foo_id),
"accounts-0-persona": str(persona_id),
- "accounts-2-TOTAL_FORMS": u"2",
- "accounts-2-INITIAL_FORMS": u"1",
- "accounts-2-MAX_NUM_FORMS": u"0",
+ "accounts-2-TOTAL_FORMS": "2",
+ "accounts-2-INITIAL_FORMS": "1",
+ "accounts-2-MAX_NUM_FORMS": "0",
"accounts-2-0-username": "%s-1" % bar_user,
"accounts-2-0-account_ptr": str(bar_id),
@@ -2387,7 +2386,7 @@ class TestCustomChangeList(TestCase):
Validate that a custom ChangeList class can be used (#9749)
"""
# Insert some data
- post_data = {"name": u"First Gadget"}
+ post_data = {"name": "First Gadget"}
response = self.client.post('/test_admin/%s/admin_views/gadget/add/' % self.urlbit, post_data)
self.assertEqual(response.status_code, 302) # redirect somewhere
# Hit the page once to get messages out of the queue message list
@@ -2444,12 +2443,12 @@ class AdminCustomQuerysetTest(TestCase):
def test_add_model_modeladmin_only_qs(self):
# only() is used in ModelAdmin.queryset()
- p = Paper.objects.create(title=u"My Paper Title")
+ p = Paper.objects.create(title="My Paper Title")
self.assertEqual(Paper.objects.count(), 1)
response = self.client.get('/test_admin/admin/admin_views/paper/%s/' % p.pk)
self.assertEqual(response.status_code, 200)
post_data = {
- "title": u"My Modified Paper Title",
+ "title": "My Modified Paper Title",
"_save": "Save",
}
response = self.client.post('/test_admin/admin/admin_views/paper/%s/' % p.pk,
@@ -2459,12 +2458,12 @@ class AdminCustomQuerysetTest(TestCase):
self.assertContains(response, '<li class="info">The paper &quot;Paper_Deferred_author object&quot; was changed successfully.</li>', html=True)
# defer() is used in ModelAdmin.queryset()
- cl = CoverLetter.objects.create(author=u"John Doe")
+ cl = CoverLetter.objects.create(author="John Doe")
self.assertEqual(CoverLetter.objects.count(), 1)
response = self.client.get('/test_admin/admin/admin_views/coverletter/%s/' % cl.pk)
self.assertEqual(response.status_code, 200)
post_data = {
- "author": u"John Doe II",
+ "author": "John Doe II",
"_save": "Save",
}
response = self.client.post('/test_admin/admin/admin_views/coverletter/%s/' % cl.pk,
@@ -2503,10 +2502,10 @@ class AdminInlineFileUploadTest(TestCase):
Test that inline file uploads correctly display prior data (#10002).
"""
post_data = {
- "name": u"Test Gallery",
- "pictures-TOTAL_FORMS": u"2",
- "pictures-INITIAL_FORMS": u"1",
- "pictures-MAX_NUM_FORMS": u"0",
+ "name": "Test Gallery",
+ "pictures-TOTAL_FORMS": "2",
+ "pictures-INITIAL_FORMS": "1",
+ "pictures-MAX_NUM_FORMS": "0",
"pictures-0-id": unicode(self.picture.id),
"pictures-0-gallery": unicode(self.gallery.id),
"pictures-0-name": "Test Picture",
@@ -2527,11 +2526,11 @@ class AdminInlineTests(TestCase):
def setUp(self):
self.post_data = {
- "name": u"Test Name",
+ "name": "Test Name",
"widget_set-TOTAL_FORMS": "3",
- "widget_set-INITIAL_FORMS": u"0",
- "widget_set-MAX_NUM_FORMS": u"0",
+ "widget_set-INITIAL_FORMS": "0",
+ "widget_set-MAX_NUM_FORMS": "0",
"widget_set-0-id": "",
"widget_set-0-owner": "1",
"widget_set-0-name": "",
@@ -2543,8 +2542,8 @@ class AdminInlineTests(TestCase):
"widget_set-2-name": "",
"doohickey_set-TOTAL_FORMS": "3",
- "doohickey_set-INITIAL_FORMS": u"0",
- "doohickey_set-MAX_NUM_FORMS": u"0",
+ "doohickey_set-INITIAL_FORMS": "0",
+ "doohickey_set-MAX_NUM_FORMS": "0",
"doohickey_set-0-owner": "1",
"doohickey_set-0-code": "",
"doohickey_set-0-name": "",
@@ -2556,8 +2555,8 @@ class AdminInlineTests(TestCase):
"doohickey_set-2-name": "",
"grommet_set-TOTAL_FORMS": "3",
- "grommet_set-INITIAL_FORMS": u"0",
- "grommet_set-MAX_NUM_FORMS": u"0",
+ "grommet_set-INITIAL_FORMS": "0",
+ "grommet_set-MAX_NUM_FORMS": "0",
"grommet_set-0-code": "",
"grommet_set-0-owner": "1",
"grommet_set-0-name": "",
@@ -2569,8 +2568,8 @@ class AdminInlineTests(TestCase):
"grommet_set-2-name": "",
"whatsit_set-TOTAL_FORMS": "3",
- "whatsit_set-INITIAL_FORMS": u"0",
- "whatsit_set-MAX_NUM_FORMS": u"0",
+ "whatsit_set-INITIAL_FORMS": "0",
+ "whatsit_set-MAX_NUM_FORMS": "0",
"whatsit_set-0-owner": "1",
"whatsit_set-0-index": "",
"whatsit_set-0-name": "",
@@ -2582,8 +2581,8 @@ class AdminInlineTests(TestCase):
"whatsit_set-2-name": "",
"fancydoodad_set-TOTAL_FORMS": "3",
- "fancydoodad_set-INITIAL_FORMS": u"0",
- "fancydoodad_set-MAX_NUM_FORMS": u"0",
+ "fancydoodad_set-INITIAL_FORMS": "0",
+ "fancydoodad_set-MAX_NUM_FORMS": "0",
"fancydoodad_set-0-doodad_ptr": "",
"fancydoodad_set-0-owner": "1",
"fancydoodad_set-0-name": "",
@@ -2969,7 +2968,7 @@ class SeleniumPrePopulatedFirefoxTests(AdminSeleniumWebDriverTestCase):
# Main form ----------------------------------------------------------
self.selenium.find_element_by_css_selector('#id_pubdate').send_keys('2012-02-18')
self.get_select_option('#id_status', 'option two').click()
- self.selenium.find_element_by_css_selector('#id_name').send_keys(u' this is the mAin nÀMë and it\'s awεšome')
+ self.selenium.find_element_by_css_selector('#id_name').send_keys(' this is the mAin nÀMë and it\'s awεšome')
slug1 = self.selenium.find_element_by_css_selector('#id_slug1').get_attribute('value')
slug2 = self.selenium.find_element_by_css_selector('#id_slug2').get_attribute('value')
self.assertEqual(slug1, 'main-name-and-its-awesome-2012-02-18')
@@ -2979,7 +2978,7 @@ class SeleniumPrePopulatedFirefoxTests(AdminSeleniumWebDriverTestCase):
# Initial inline
self.selenium.find_element_by_css_selector('#id_relatedprepopulated_set-0-pubdate').send_keys('2011-12-17')
self.get_select_option('#id_relatedprepopulated_set-0-status', 'option one').click()
- self.selenium.find_element_by_css_selector('#id_relatedprepopulated_set-0-name').send_keys(u' here is a sŤāÇkeð inline ! ')
+ self.selenium.find_element_by_css_selector('#id_relatedprepopulated_set-0-name').send_keys(' here is a sŤāÇkeð inline ! ')
slug1 = self.selenium.find_element_by_css_selector('#id_relatedprepopulated_set-0-slug1').get_attribute('value')
slug2 = self.selenium.find_element_by_css_selector('#id_relatedprepopulated_set-0-slug2').get_attribute('value')
self.assertEqual(slug1, 'here-stacked-inline-2011-12-17')
@@ -2989,7 +2988,7 @@ class SeleniumPrePopulatedFirefoxTests(AdminSeleniumWebDriverTestCase):
self.selenium.find_elements_by_link_text('Add another Related Prepopulated')[0].click()
self.selenium.find_element_by_css_selector('#id_relatedprepopulated_set-1-pubdate').send_keys('1999-01-25')
self.get_select_option('#id_relatedprepopulated_set-1-status', 'option two').click()
- self.selenium.find_element_by_css_selector('#id_relatedprepopulated_set-1-name').send_keys(u' now you haVe anöther sŤāÇkeð inline with a very ... loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooog text... ')
+ self.selenium.find_element_by_css_selector('#id_relatedprepopulated_set-1-name').send_keys(' now you haVe anöther sŤāÇkeð inline with a very ... loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooog text... ')
slug1 = self.selenium.find_element_by_css_selector('#id_relatedprepopulated_set-1-slug1').get_attribute('value')
slug2 = self.selenium.find_element_by_css_selector('#id_relatedprepopulated_set-1-slug2').get_attribute('value')
self.assertEqual(slug1, 'now-you-have-another-stacked-inline-very-loooooooo') # 50 characters maximum for slug1 field
@@ -2999,7 +2998,7 @@ class SeleniumPrePopulatedFirefoxTests(AdminSeleniumWebDriverTestCase):
# Initial inline
self.selenium.find_element_by_css_selector('#id_relatedprepopulated_set-2-0-pubdate').send_keys('1234-12-07')
self.get_select_option('#id_relatedprepopulated_set-2-0-status', 'option two').click()
- self.selenium.find_element_by_css_selector('#id_relatedprepopulated_set-2-0-name').send_keys(u'And now, with a tÃbűlaŘ inline !!!')
+ self.selenium.find_element_by_css_selector('#id_relatedprepopulated_set-2-0-name').send_keys('And now, with a tÃbűlaŘ inline !!!')
slug1 = self.selenium.find_element_by_css_selector('#id_relatedprepopulated_set-2-0-slug1').get_attribute('value')
slug2 = self.selenium.find_element_by_css_selector('#id_relatedprepopulated_set-2-0-slug2').get_attribute('value')
self.assertEqual(slug1, 'and-now-tabular-inline-1234-12-07')
@@ -3009,7 +3008,7 @@ class SeleniumPrePopulatedFirefoxTests(AdminSeleniumWebDriverTestCase):
self.selenium.find_elements_by_link_text('Add another Related Prepopulated')[1].click()
self.selenium.find_element_by_css_selector('#id_relatedprepopulated_set-2-1-pubdate').send_keys('1981-08-22')
self.get_select_option('#id_relatedprepopulated_set-2-1-status', 'option one').click()
- self.selenium.find_element_by_css_selector('#id_relatedprepopulated_set-2-1-name').send_keys(u'a tÃbűlaŘ inline with ignored ;"&*^\%$#@-/`~ characters')
+ self.selenium.find_element_by_css_selector('#id_relatedprepopulated_set-2-1-name').send_keys('a tÃbűlaŘ inline with ignored ;"&*^\%$#@-/`~ characters')
slug1 = self.selenium.find_element_by_css_selector('#id_relatedprepopulated_set-2-1-slug1').get_attribute('value')
slug2 = self.selenium.find_element_by_css_selector('#id_relatedprepopulated_set-2-1-slug2').get_attribute('value')
self.assertEqual(slug1, 'tabular-inline-ignored-characters-1981-08-22')
@@ -3029,7 +3028,7 @@ class SeleniumPrePopulatedFirefoxTests(AdminSeleniumWebDriverTestCase):
self.assertEqual(MainPrepopulated.objects.all().count(), 1)
MainPrepopulated.objects.get(
- name=u' this is the mAin nÀMë and it\'s awεšome',
+ name=' this is the mAin nÀMë and it\'s awεšome',
pubdate='2012-02-18',
status='option two',
slug1='main-name-and-its-awesome-2012-02-18',
@@ -3037,28 +3036,28 @@ class SeleniumPrePopulatedFirefoxTests(AdminSeleniumWebDriverTestCase):
)
self.assertEqual(RelatedPrepopulated.objects.all().count(), 4)
RelatedPrepopulated.objects.get(
- name=u' here is a sŤāÇkeð inline ! ',
+ name=' here is a sŤāÇkeð inline ! ',
pubdate='2011-12-17',
status='option one',
slug1='here-stacked-inline-2011-12-17',
slug2='option-one-here-stacked-inline',
)
RelatedPrepopulated.objects.get(
- name=u' now you haVe anöther sŤāÇkeð inline with a very ... loooooooooooooooooo', # 75 characters in name field
+ name=' now you haVe anöther sŤāÇkeð inline with a very ... loooooooooooooooooo', # 75 characters in name field
pubdate='1999-01-25',
status='option two',
slug1='now-you-have-another-stacked-inline-very-loooooooo',
slug2='option-two-now-you-have-another-stacked-inline-very-looooooo',
)
RelatedPrepopulated.objects.get(
- name=u'And now, with a tÃbűlaŘ inline !!!',
+ name='And now, with a tÃbűlaŘ inline !!!',
pubdate='1234-12-07',
status='option two',
slug1='and-now-tabular-inline-1234-12-07',
slug2='option-two-and-now-tabular-inline',
)
RelatedPrepopulated.objects.get(
- name=u'a tÃbűlaŘ inline with ignored ;"&*^\%$#@-/`~ characters',
+ name='a tÃbűlaŘ inline with ignored ;"&*^\%$#@-/`~ characters',
pubdate='1981-08-22',
status='option one',
slug1='tabular-inline-ignored-characters-1981-08-22',
@@ -3230,7 +3229,7 @@ class UserAdminTest(TestCase):
adminform = response.context['adminform']
self.assertTrue('password' not in adminform.form.errors)
self.assertEqual(adminform.form.errors['password2'],
- [u"The two password fields didn't match."])
+ ["The two password fields didn't match."])
def test_user_fk_popup(self):
"""Quick user addition in a FK popup shouldn't invoke view for further user customization"""
@@ -3569,7 +3568,7 @@ class AdminCustomSaveRelatedTests(TestCase):
children_names = list(Child.objects.order_by('name').values_list('name', flat=True))
self.assertEqual('Josh Stone', Parent.objects.latest('id').name)
- self.assertEqual([u'Catherine Stone', u'Paul Stone'], children_names)
+ self.assertEqual(['Catherine Stone', 'Paul Stone'], children_names)
def test_should_be_able_to_edit_related_objects_on_change_view(self):
parent = Parent.objects.create(name='Josh Stone')
@@ -3589,7 +3588,7 @@ class AdminCustomSaveRelatedTests(TestCase):
children_names = list(Child.objects.order_by('name').values_list('name', flat=True))
self.assertEqual('Josh Stone', Parent.objects.latest('id').name)
- self.assertEqual([u'Catherine Stone', u'Paul Stone'], children_names)
+ self.assertEqual(['Catherine Stone', 'Paul Stone'], children_names)
def test_should_be_able_to_edit_related_objects_on_changelist_view(self):
parent = Parent.objects.create(name='Josh Rock')
@@ -3608,7 +3607,7 @@ class AdminCustomSaveRelatedTests(TestCase):
children_names = list(Child.objects.order_by('name').values_list('name', flat=True))
self.assertEqual('Josh Stone', Parent.objects.latest('id').name)
- self.assertEqual([u'Catherine Stone', u'Paul Stone'], children_names)
+ self.assertEqual(['Catherine Stone', 'Paul Stone'], children_names)
@override_settings(PASSWORD_HASHERS=('django.contrib.auth.hashers.SHA1PasswordHasher',))
diff --git a/tests/regressiontests/admin_widgets/models.py b/tests/regressiontests/admin_widgets/models.py
index 1973d5069f..81a4ec7aba 100644
--- a/tests/regressiontests/admin_widgets/models.py
+++ b/tests/regressiontests/admin_widgets/models.py
@@ -1,3 +1,5 @@
+from __future__ import unicode_literals
+
from django.db import models
from django.contrib.auth.models import User
@@ -60,7 +62,7 @@ class Car(models.Model):
model = models.CharField(max_length=30)
def __unicode__(self):
- return u"%s %s" % (self.make, self.model)
+ return "%s %s" % (self.make, self.model)
class CarTire(models.Model):
"""
diff --git a/tests/regressiontests/admin_widgets/tests.py b/tests/regressiontests/admin_widgets/tests.py
index be1d294051..4b115431c1 100644
--- a/tests/regressiontests/admin_widgets/tests.py
+++ b/tests/regressiontests/admin_widgets/tests.py
@@ -1,5 +1,5 @@
# encoding: utf-8
-from __future__ import absolute_import
+from __future__ import absolute_import, unicode_literals
from datetime import datetime
@@ -169,7 +169,7 @@ class AdminForeignKeyRawIdWidget(DjangoTestCase):
pk = band.pk
band.delete()
post_data = {
- "band": u'%s' % pk,
+ "band": '%s' % pk,
}
# Try posting with a non-existent pk in a raw id field: this
# should result in an error message, not a server exception.
@@ -379,10 +379,10 @@ class ManyToManyRawIdWidgetTest(DjangoTestCase):
self.assertEqual(w._has_changed(None, None), False)
self.assertEqual(w._has_changed([], None), False)
- self.assertEqual(w._has_changed(None, [u'1']), True)
- self.assertEqual(w._has_changed([1, 2], [u'1', u'2']), False)
- self.assertEqual(w._has_changed([1, 2], [u'1']), True)
- self.assertEqual(w._has_changed([1, 2], [u'1', u'3']), True)
+ self.assertEqual(w._has_changed(None, ['1']), True)
+ self.assertEqual(w._has_changed([1, 2], ['1', '2']), False)
+ self.assertEqual(w._has_changed([1, 2], ['1']), True)
+ self.assertEqual(w._has_changed([1, 2], ['1', '3']), True)
def test_m2m_related_model_not_in_admin(self):
# M2M relationship with model not registered with admin site. Raw ID
diff --git a/tests/regressiontests/aggregation_regress/tests.py b/tests/regressiontests/aggregation_regress/tests.py
index 36a54c0b17..e5f12e5781 100644
--- a/tests/regressiontests/aggregation_regress/tests.py
+++ b/tests/regressiontests/aggregation_regress/tests.py
@@ -1,4 +1,4 @@
-from __future__ import absolute_import
+from __future__ import absolute_import, unicode_literals
import datetime
import pickle
@@ -119,7 +119,7 @@ class AggregationTests(TestCase):
self.assertObjectAttrs(obj,
contact_id=3,
id=2,
- isbn=u'067232959',
+ isbn='067232959',
mean_auth_age=45.0,
name='Sams Teach Yourself Django in 24 Hours',
pages=528,
@@ -136,9 +136,9 @@ class AggregationTests(TestCase):
self.assertObjectAttrs(obj,
contact_id=3,
id=2,
- isbn=u'067232959',
+ isbn='067232959',
mean_auth_age=45.0,
- name=u'Sams Teach Yourself Django in 24 Hours',
+ name='Sams Teach Yourself Django in 24 Hours',
pages=528,
price=Decimal("23.09"),
pubdate=datetime.date(2008, 3, 3),
@@ -156,9 +156,9 @@ class AggregationTests(TestCase):
self.assertEqual(obj, {
"contact_id": 3,
"id": 2,
- "isbn": u"067232959",
+ "isbn": "067232959",
"mean_auth_age": 45.0,
- "name": u"Sams Teach Yourself Django in 24 Hours",
+ "name": "Sams Teach Yourself Django in 24 Hours",
"pages": 528,
"price": Decimal("23.09"),
"pubdate": datetime.date(2008, 3, 3),
@@ -175,9 +175,9 @@ class AggregationTests(TestCase):
self.assertEqual(obj, {
'contact_id': 3,
'id': 2,
- 'isbn': u'067232959',
+ 'isbn': '067232959',
'mean_auth_age': 45.0,
- 'name': u'Sams Teach Yourself Django in 24 Hours',
+ 'name': 'Sams Teach Yourself Django in 24 Hours',
'pages': 528,
'price': Decimal("23.09"),
'pubdate': datetime.date(2008, 3, 3),
@@ -189,13 +189,13 @@ class AggregationTests(TestCase):
# unless it is explicitly named
obj = Book.objects.annotate(mean_auth_age=Avg('authors__age')).extra(select={'price_per_page' : 'price / pages'}).values('name').get(pk=1)
self.assertEqual(obj, {
- "name": u'The Definitive Guide to Django: Web Development Done Right',
+ "name": 'The Definitive Guide to Django: Web Development Done Right',
})
obj = Book.objects.annotate(mean_auth_age=Avg('authors__age')).extra(select={'price_per_page' : 'price / pages'}).values('name','mean_auth_age').get(pk=1)
self.assertEqual(obj, {
'mean_auth_age': 34.5,
- 'name': u'The Definitive Guide to Django: Web Development Done Right',
+ 'name': 'The Definitive Guide to Django: Web Development Done Right',
})
# If an annotation isn't included in the values, it can still be used
@@ -203,7 +203,7 @@ class AggregationTests(TestCase):
qs = Book.objects.annotate(n_authors=Count('authors')).values('name').filter(n_authors__gt=2)
self.assertQuerysetEqual(
qs, [
- {"name": u'Python Web Development with Django'}
+ {"name": 'Python Web Development with Django'}
],
lambda b: b,
)
@@ -213,7 +213,7 @@ class AggregationTests(TestCase):
obj = Book.objects.values('name').annotate(mean_auth_age=Avg('authors__age')).extra(select={'price_per_page' : 'price / pages'}).get(pk=1)
self.assertEqual(obj, {
'mean_auth_age': 34.5,
- 'name': u'The Definitive Guide to Django: Web Development Done Right',
+ 'name': 'The Definitive Guide to Django: Web Development Done Right',
})
# Check that all of the objects are getting counted (allow_nulls) and
@@ -298,8 +298,8 @@ class AggregationTests(TestCase):
self.assertEqual(obj, {
'contact_id': 8,
'id': 5,
- 'isbn': u'013790395',
- 'name': u'Artificial Intelligence: A Modern Approach',
+ 'isbn': '013790395',
+ 'name': 'Artificial Intelligence: A Modern Approach',
'num_authors': 2,
'pages': 1132,
'price': Decimal("82.8"),
@@ -338,8 +338,8 @@ class AggregationTests(TestCase):
qs = Publisher.objects.annotate(num_books=Count('book')).filter(num_books__lt=F('num_awards')/2).order_by('name').values('name','num_books','num_awards')
self.assertQuerysetEqual(
qs, [
- {'num_books': 1, 'name': u'Morgan Kaufmann', 'num_awards': 9},
- {'num_books': 2, 'name': u'Prentice Hall', 'num_awards': 7}
+ {'num_books': 1, 'name': 'Morgan Kaufmann', 'num_awards': 9},
+ {'num_books': 2, 'name': 'Prentice Hall', 'num_awards': 7}
],
lambda p: p,
)
@@ -347,9 +347,9 @@ class AggregationTests(TestCase):
qs = Publisher.objects.annotate(num_books=Count('book')).exclude(num_books__lt=F('num_awards')/2).order_by('name').values('name','num_books','num_awards')
self.assertQuerysetEqual(
qs, [
- {'num_books': 2, 'name': u'Apress', 'num_awards': 3},
- {'num_books': 0, 'name': u"Jonno's House of Books", 'num_awards': 0},
- {'num_books': 1, 'name': u'Sams', 'num_awards': 1}
+ {'num_books': 2, 'name': 'Apress', 'num_awards': 3},
+ {'num_books': 0, 'name': "Jonno's House of Books", 'num_awards': 0},
+ {'num_books': 1, 'name': 'Sams', 'num_awards': 1}
],
lambda p: p,
)
@@ -358,8 +358,8 @@ class AggregationTests(TestCase):
qs = Publisher.objects.annotate(num_books=Count('book')).filter(num_awards__gt=2*F('num_books')).order_by('name').values('name','num_books','num_awards')
self.assertQuerysetEqual(
qs, [
- {'num_books': 1, 'name': u'Morgan Kaufmann', 'num_awards': 9},
- {'num_books': 2, 'name': u'Prentice Hall', 'num_awards': 7}
+ {'num_books': 1, 'name': 'Morgan Kaufmann', 'num_awards': 9},
+ {'num_books': 2, 'name': 'Prentice Hall', 'num_awards': 7}
],
lambda p: p,
)
@@ -367,9 +367,9 @@ class AggregationTests(TestCase):
qs = Publisher.objects.annotate(num_books=Count('book')).exclude(num_books__lt=F('num_awards')/2).order_by('name').values('name','num_books','num_awards')
self.assertQuerysetEqual(
qs, [
- {'num_books': 2, 'name': u'Apress', 'num_awards': 3},
- {'num_books': 0, 'name': u"Jonno's House of Books", 'num_awards': 0},
- {'num_books': 1, 'name': u'Sams', 'num_awards': 1}
+ {'num_books': 2, 'name': 'Apress', 'num_awards': 3},
+ {'num_books': 0, 'name': "Jonno's House of Books", 'num_awards': 0},
+ {'num_books': 1, 'name': 'Sams', 'num_awards': 1}
],
lambda p: p,
)
@@ -399,7 +399,7 @@ class AggregationTests(TestCase):
qs = Publisher.objects.filter(pk=5).annotate(num_authors=Count('book__authors'), avg_authors=Avg('book__authors'), max_authors=Max('book__authors'), max_price=Max('book__price'), max_rating=Max('book__rating')).values()
self.assertQuerysetEqual(
qs, [
- {'max_authors': None, 'name': u"Jonno's House of Books", 'num_awards': 0, 'max_price': None, 'num_authors': 0, 'max_rating': None, 'id': 5, 'avg_authors': None}
+ {'max_authors': None, 'name': "Jonno's House of Books", 'num_awards': 0, 'max_price': None, 'num_authors': 0, 'max_rating': None, 'id': 5, 'avg_authors': None}
],
lambda p: p
)
@@ -424,10 +424,10 @@ class AggregationTests(TestCase):
qs = Book.objects.filter(rating__lt=4.5).select_related().annotate(Avg('authors__age'))
self.assertQuerysetEqual(
qs, [
- (u'Artificial Intelligence: A Modern Approach', 51.5, u'Prentice Hall', u'Peter Norvig'),
- (u'Practical Django Projects', 29.0, u'Apress', u'James Bennett'),
- (u'Python Web Development with Django', Approximate(30.333, places=2), u'Prentice Hall', u'Jeffrey Forcier'),
- (u'Sams Teach Yourself Django in 24 Hours', 45.0, u'Sams', u'Brad Dayley')
+ ('Artificial Intelligence: A Modern Approach', 51.5, 'Prentice Hall', 'Peter Norvig'),
+ ('Practical Django Projects', 29.0, 'Apress', 'James Bennett'),
+ ('Python Web Development with Django', Approximate(30.333, places=2), 'Prentice Hall', 'Jeffrey Forcier'),
+ ('Sams Teach Yourself Django in 24 Hours', 45.0, 'Sams', 'Brad Dayley')
],
lambda b: (b.name, b.authors__age__avg, b.publisher.name, b.contact.name)
)
@@ -491,19 +491,19 @@ class AggregationTests(TestCase):
# But age isn't included in the ValuesQuerySet, so it is.
results = Author.objects.values('name').annotate(age=Count('book_contact_set')).order_by('name')
self.assertEqual(len(results), 9)
- self.assertEqual(results[0]['name'], u'Adrian Holovaty')
+ self.assertEqual(results[0]['name'], 'Adrian Holovaty')
self.assertEqual(results[0]['age'], 1)
# Same problem, but aggregating over m2m fields
results = Author.objects.values('name').annotate(age=Avg('friends__age')).order_by('name')
self.assertEqual(len(results), 9)
- self.assertEqual(results[0]['name'], u'Adrian Holovaty')
+ self.assertEqual(results[0]['name'], 'Adrian Holovaty')
self.assertEqual(results[0]['age'], 32.0)
# Same problem, but colliding with an m2m field
results = Author.objects.values('name').annotate(friends=Count('friends')).order_by('name')
self.assertEqual(len(results), 9)
- self.assertEqual(results[0]['name'], u'Adrian Holovaty')
+ self.assertEqual(results[0]['name'], 'Adrian Holovaty')
self.assertEqual(results[0]['friends'], 2)
def test_reverse_relation_name_conflict(self):
@@ -531,12 +531,12 @@ class AggregationTests(TestCase):
books.aggregate(Avg("authors__age"))
self.assertQuerysetEqual(
books.all(), [
- u'Artificial Intelligence: A Modern Approach',
- u'Paradigms of Artificial Intelligence Programming: Case Studies in Common Lisp',
- u'Practical Django Projects',
- u'Python Web Development with Django',
- u'Sams Teach Yourself Django in 24 Hours',
- u'The Definitive Guide to Django: Web Development Done Right'
+ 'Artificial Intelligence: A Modern Approach',
+ 'Paradigms of Artificial Intelligence Programming: Case Studies in Common Lisp',
+ 'Practical Django Projects',
+ 'Python Web Development with Django',
+ 'Sams Teach Yourself Django in 24 Hours',
+ 'The Definitive Guide to Django: Web Development Done Right'
],
lambda b: b.name
)
@@ -632,8 +632,8 @@ class AggregationTests(TestCase):
qs = HardbackBook.objects.annotate(n_authors=Count('book_ptr__authors')).values('name', 'n_authors')
self.assertQuerysetEqual(
qs, [
- {'n_authors': 2, 'name': u'Artificial Intelligence: A Modern Approach'},
- {'n_authors': 1, 'name': u'Paradigms of Artificial Intelligence Programming: Case Studies in Common Lisp'}
+ {'n_authors': 2, 'name': 'Artificial Intelligence: A Modern Approach'},
+ {'n_authors': 1, 'name': 'Paradigms of Artificial Intelligence Programming: Case Studies in Common Lisp'}
],
lambda h: h
)
@@ -641,8 +641,8 @@ class AggregationTests(TestCase):
qs = HardbackBook.objects.annotate(n_authors=Count('authors')).values('name', 'n_authors')
self.assertQuerysetEqual(
qs, [
- {'n_authors': 2, 'name': u'Artificial Intelligence: A Modern Approach'},
- {'n_authors': 1, 'name': u'Paradigms of Artificial Intelligence Programming: Case Studies in Common Lisp'}
+ {'n_authors': 2, 'name': 'Artificial Intelligence: A Modern Approach'},
+ {'n_authors': 1, 'name': 'Paradigms of Artificial Intelligence Programming: Case Studies in Common Lisp'}
],
lambda h: h,
)
diff --git a/tests/regressiontests/backends/models.py b/tests/regressiontests/backends/models.py
index 1a78a87eca..af4952dce8 100644
--- a/tests/regressiontests/backends/models.py
+++ b/tests/regressiontests/backends/models.py
@@ -1,3 +1,5 @@
+from __future__ import unicode_literals
+
from django.contrib.contenttypes import generic
from django.contrib.contenttypes.models import ContentType
from django.db import models, connection
@@ -16,7 +18,7 @@ class Person(models.Model):
last_name = models.CharField(max_length=20)
def __unicode__(self):
- return u'%s %s' % (self.first_name, self.last_name)
+ return '%s %s' % (self.first_name, self.last_name)
class SchoolClass(models.Model):
@@ -58,7 +60,7 @@ class Reporter(models.Model):
last_name = models.CharField(max_length=30)
def __unicode__(self):
- return u"%s %s" % (self.first_name, self.last_name)
+ return "%s %s" % (self.first_name, self.last_name)
class Article(models.Model):
diff --git a/tests/regressiontests/backends/tests.py b/tests/regressiontests/backends/tests.py
index 109e1a5bcc..2569a3236f 100644
--- a/tests/regressiontests/backends/tests.py
+++ b/tests/regressiontests/backends/tests.py
@@ -1,6 +1,6 @@
# -*- coding: utf-8 -*-
# Unit and doctests for specific database backends.
-from __future__ import absolute_import
+from __future__ import absolute_import, unicode_literals
import datetime
import threading
@@ -393,9 +393,9 @@ class BackendTestCase(TestCase):
qn(f3.column)))
cursor = connection.cursor()
cursor.execute(query2)
- self.assertEqual(cursor.fetchone(), (u'Clark', u'Kent'))
- self.assertEqual(list(cursor.fetchmany(2)), [(u'Jane', u'Doe'), (u'John', u'Doe')])
- self.assertEqual(list(cursor.fetchall()), [(u'Mary', u'Agnelline'), (u'Peter', u'Parker')])
+ self.assertEqual(cursor.fetchone(), ('Clark', 'Kent'))
+ self.assertEqual(list(cursor.fetchmany(2)), [('Jane', 'Doe'), ('John', 'Doe')])
+ self.assertEqual(list(cursor.fetchall()), [('Mary', 'Agnelline'), ('Peter', 'Parker')])
def test_database_operations_helper_class(self):
# Ticket #13630
diff --git a/tests/regressiontests/cache/tests.py b/tests/regressiontests/cache/tests.py
index 88fe5471cf..264ef74abd 100644
--- a/tests/regressiontests/cache/tests.py
+++ b/tests/regressiontests/cache/tests.py
@@ -2,7 +2,7 @@
# Unit tests for cache framework
# Uses whatever cache backend is set in the test settings file.
-from __future__ import absolute_import
+from __future__ import absolute_import, unicode_literals
import hashlib
import os
@@ -139,10 +139,10 @@ class DummyCacheTests(unittest.TestCase):
def test_unicode(self):
"Unicode values are ignored by the dummy cache"
stuff = {
- u'ascii': u'ascii_value',
- u'unicode_ascii': u'Iñtërnâtiônàlizætiøn1',
- u'Iñtërnâtiônàlizætiøn': u'Iñtërnâtiônàlizætiøn2',
- u'ascii2': {u'x' : 1 }
+ 'ascii': 'ascii_value',
+ 'unicode_ascii': 'Iñtërnâtiônàlizætiøn1',
+ 'Iñtërnâtiônàlizætiøn': 'Iñtërnâtiônàlizætiøn2',
+ 'ascii2': {'x' : 1 }
}
for (key, value) in stuff.items():
self.cache.set(key, value)
@@ -337,10 +337,10 @@ class BaseCacheTests(object):
def test_unicode(self):
# Unicode values can be cached
stuff = {
- u'ascii': u'ascii_value',
- u'unicode_ascii': u'Iñtërnâtiônàlizætiøn1',
- u'Iñtërnâtiônàlizætiøn': u'Iñtërnâtiônàlizætiøn2',
- u'ascii2': {u'x' : 1 }
+ 'ascii': 'ascii_value',
+ 'unicode_ascii': 'Iñtërnâtiônàlizætiøn1',
+ 'Iñtërnâtiônàlizætiøn': 'Iñtërnâtiônàlizætiøn2',
+ 'ascii2': {'x' : 1 }
}
# Test `set`
for (key, value) in stuff.items():
@@ -1337,12 +1337,12 @@ class CacheI18nTest(TestCase):
request = self._get_request()
response = HttpResponse()
with timezone.override(CustomTzName()):
- CustomTzName.name = 'Hora estándar de Argentina' # UTF-8 string
+ CustomTzName.name = 'Hora estándar de Argentina'.encode('UTF-8') # UTF-8 string
sanitized_name = 'Hora_estndar_de_Argentina'
self.assertIn(sanitized_name, learn_cache_key(request, response),
"Cache keys should include the time zone name when time zones are active")
- CustomTzName.name = u'Hora estándar de Argentina' # unicode
+ CustomTzName.name = 'Hora estándar de Argentina' # unicode
sanitized_name = 'Hora_estndar_de_Argentina'
self.assertIn(sanitized_name, learn_cache_key(request, response),
"Cache keys should include the time zone name when time zones are active")
diff --git a/tests/regressiontests/comment_tests/tests/comment_view_tests.py b/tests/regressiontests/comment_tests/tests/comment_view_tests.py
index 5edc58fe2d..429f3b2bf2 100644
--- a/tests/regressiontests/comment_tests/tests/comment_view_tests.py
+++ b/tests/regressiontests/comment_tests/tests/comment_view_tests.py
@@ -1,4 +1,4 @@
-from __future__ import absolute_import
+from __future__ import absolute_import, unicode_literals
import re
@@ -54,7 +54,7 @@ class CommentViewTests(CommentTestCase):
a = Article.objects.get(pk=1)
data = self.getValidData(a)
data["comment"] = "This is another comment"
- data["object_pk"] = u'\ufffd'
+ data["object_pk"] = '\ufffd'
response = self.client.post("/post/", data)
self.assertEqual(response.status_code, 400)
@@ -258,7 +258,7 @@ class CommentViewTests(CommentTestCase):
data["comment"] = "This is another comment"
response = self.client.post("/post/", data)
location = response["Location"]
- broken_location = location + u"\ufffd"
+ broken_location = location + "\ufffd"
response = self.client.get(broken_location)
self.assertEqual(response.status_code, 200)
diff --git a/tests/regressiontests/csrf_tests/tests.py b/tests/regressiontests/csrf_tests/tests.py
index 2d9b4f755f..52fd3ea1c7 100644
--- a/tests/regressiontests/csrf_tests/tests.py
+++ b/tests/regressiontests/csrf_tests/tests.py
@@ -1,4 +1,5 @@
# -*- coding: utf-8 -*-
+from __future__ import unicode_literals
from django.conf import settings
from django.core.context_processors import csrf
@@ -11,7 +12,7 @@ from django.views.decorators.csrf import csrf_exempt, requires_csrf_token, ensur
# Response/views used for CsrfResponseMiddleware and CsrfViewMiddleware tests
def post_form_response():
- resp = HttpResponse(content=u"""
+ resp = HttpResponse(content="""
<html><body><h1>\u00a1Unicode!<form method="post"><input type="text" /></form></body></html>
""", mimetype="text/html")
return resp
@@ -215,18 +216,18 @@ class CsrfViewMiddlewareTest(TestCase):
"""
req = self._get_GET_no_csrf_cookie_request()
resp = token_view(req)
- self.assertEqual(u"", resp.content)
+ self.assertEqual("", resp.content)
def test_token_node_empty_csrf_cookie(self):
"""
Check that we get a new token if the csrf_cookie is the empty string
"""
req = self._get_GET_no_csrf_cookie_request()
- req.COOKIES[settings.CSRF_COOKIE_NAME] = ""
+ req.COOKIES[settings.CSRF_COOKIE_NAME] = b""
CsrfViewMiddleware().process_view(req, token_view, (), {})
resp = token_view(req)
- self.assertNotEqual(u"", resp.content)
+ self.assertNotEqual("", resp.content)
def test_token_node_with_csrf_cookie(self):
"""
diff --git a/tests/regressiontests/custom_columns_regress/models.py b/tests/regressiontests/custom_columns_regress/models.py
index fcb5a4be44..c768c12772 100644
--- a/tests/regressiontests/custom_columns_regress/models.py
+++ b/tests/regressiontests/custom_columns_regress/models.py
@@ -5,6 +5,7 @@ Checks some pathological column naming to make sure it doesn't break
table creation or queries.
"""
+from __future__ import unicode_literals
from django.db import models
@@ -27,7 +28,7 @@ class Author(models.Model):
last_name = models.CharField(max_length=30, db_column='last name')
def __unicode__(self):
- return u'%s %s' % (self.first_name, self.last_name)
+ return '%s %s' % (self.first_name, self.last_name)
class Meta:
db_table = 'my author table'
diff --git a/tests/regressiontests/datatypes/tests.py b/tests/regressiontests/datatypes/tests.py
index fb94e831ba..f8f6802041 100644
--- a/tests/regressiontests/datatypes/tests.py
+++ b/tests/regressiontests/datatypes/tests.py
@@ -1,4 +1,4 @@
-from __future__ import absolute_import
+from __future__ import absolute_import, unicode_literals
import datetime
@@ -62,7 +62,7 @@ class DataTypesTestCase(TestCase):
d2 = Donut.objects.create(name='Apple Fritter',
consumed_at = datetime.datetime(year=2007, month=4, day=20, hour=16, minute=19, second=59))
- self.assertEqual([u'Apple Fritter', u'Date Test 2007'],
+ self.assertEqual(['Apple Fritter', 'Date Test 2007'],
list(Donut.objects.filter(consumed_at__year=2007).order_by('name').values_list('name', flat=True)))
self.assertEqual(0, Donut.objects.filter(consumed_at__year=2005).count())
@@ -71,7 +71,7 @@ class DataTypesTestCase(TestCase):
def test_textfields_unicode(self):
"""Regression test for #10238: TextField values returned from the
database should be unicode."""
- d = Donut.objects.create(name=u'Jelly Donut', review=u'Outstanding')
+ d = Donut.objects.create(name='Jelly Donut', review='Outstanding')
newd = Donut.objects.get(id=d.id)
self.assertTrue(isinstance(newd.review, unicode))
diff --git a/tests/regressiontests/defaultfilters/tests.py b/tests/regressiontests/defaultfilters/tests.py
index 7d0b8d61b6..ffa0a01132 100644
--- a/tests/regressiontests/defaultfilters/tests.py
+++ b/tests/regressiontests/defaultfilters/tests.py
@@ -1,4 +1,5 @@
# -*- coding: utf-8 -*-
+from __future__ import unicode_literals
import datetime
import decimal
@@ -12,39 +13,39 @@ from django.utils.safestring import SafeData
class DefaultFiltersTests(TestCase):
def test_floatformat(self):
- self.assertEqual(floatformat(7.7), u'7.7')
- self.assertEqual(floatformat(7.0), u'7')
- self.assertEqual(floatformat(0.7), u'0.7')
- self.assertEqual(floatformat(0.07), u'0.1')
- self.assertEqual(floatformat(0.007), u'0.0')
- self.assertEqual(floatformat(0.0), u'0')
- self.assertEqual(floatformat(7.7, 3), u'7.700')
- self.assertEqual(floatformat(6.000000, 3), u'6.000')
- self.assertEqual(floatformat(6.200000, 3), u'6.200')
- self.assertEqual(floatformat(6.200000, -3), u'6.200')
- self.assertEqual(floatformat(13.1031, -3), u'13.103')
- self.assertEqual(floatformat(11.1197, -2), u'11.12')
- self.assertEqual(floatformat(11.0000, -2), u'11')
- self.assertEqual(floatformat(11.000001, -2), u'11.00')
- self.assertEqual(floatformat(8.2798, 3), u'8.280')
- self.assertEqual(floatformat(5555.555, 2), u'5555.56')
- self.assertEqual(floatformat(001.3000, 2), u'1.30')
- self.assertEqual(floatformat(0.12345, 2), u'0.12')
- self.assertEqual(floatformat(decimal.Decimal('555.555'), 2), u'555.56')
- self.assertEqual(floatformat(decimal.Decimal('09.000')), u'9')
- self.assertEqual(floatformat(u'foo'), u'')
- self.assertEqual(floatformat(13.1031, u'bar'), u'13.1031')
- self.assertEqual(floatformat(18.125, 2), u'18.13')
- self.assertEqual(floatformat(u'foo', u'bar'), u'')
- self.assertEqual(floatformat(u'¿Cómo esta usted?'), u'')
- self.assertEqual(floatformat(None), u'')
+ self.assertEqual(floatformat(7.7), '7.7')
+ self.assertEqual(floatformat(7.0), '7')
+ self.assertEqual(floatformat(0.7), '0.7')
+ self.assertEqual(floatformat(0.07), '0.1')
+ self.assertEqual(floatformat(0.007), '0.0')
+ self.assertEqual(floatformat(0.0), '0')
+ self.assertEqual(floatformat(7.7, 3), '7.700')
+ self.assertEqual(floatformat(6.000000, 3), '6.000')
+ self.assertEqual(floatformat(6.200000, 3), '6.200')
+ self.assertEqual(floatformat(6.200000, -3), '6.200')
+ self.assertEqual(floatformat(13.1031, -3), '13.103')
+ self.assertEqual(floatformat(11.1197, -2), '11.12')
+ self.assertEqual(floatformat(11.0000, -2), '11')
+ self.assertEqual(floatformat(11.000001, -2), '11.00')
+ self.assertEqual(floatformat(8.2798, 3), '8.280')
+ self.assertEqual(floatformat(5555.555, 2), '5555.56')
+ self.assertEqual(floatformat(001.3000, 2), '1.30')
+ self.assertEqual(floatformat(0.12345, 2), '0.12')
+ self.assertEqual(floatformat(decimal.Decimal('555.555'), 2), '555.56')
+ self.assertEqual(floatformat(decimal.Decimal('09.000')), '9')
+ self.assertEqual(floatformat('foo'), '')
+ self.assertEqual(floatformat(13.1031, 'bar'), '13.1031')
+ self.assertEqual(floatformat(18.125, 2), '18.13')
+ self.assertEqual(floatformat('foo', 'bar'), '')
+ self.assertEqual(floatformat('¿Cómo esta usted?'), '')
+ self.assertEqual(floatformat(None), '')
# Check that we're not converting to scientific notation.
- self.assertEqual(floatformat(0, 6), u'0.000000')
- self.assertEqual(floatformat(0, 7), u'0.0000000')
- self.assertEqual(floatformat(0, 10), u'0.0000000000')
+ self.assertEqual(floatformat(0, 6), '0.000000')
+ self.assertEqual(floatformat(0, 7), '0.0000000')
+ self.assertEqual(floatformat(0, 10), '0.0000000000')
self.assertEqual(floatformat(0.000000000000000000015, 20),
- u'0.00000000000000000002')
+ '0.00000000000000000002')
pos_inf = float(1e30000)
self.assertEqual(floatformat(pos_inf), unicode(pos_inf))
@@ -61,18 +62,18 @@ class DefaultFiltersTests(TestCase):
def __float__(self):
return self.value
- self.assertEqual(floatformat(FloatWrapper(11.000001), -2), u'11.00')
+ self.assertEqual(floatformat(FloatWrapper(11.000001), -2), '11.00')
# Regression for #15789
decimal_ctx = decimal.getcontext()
old_prec, decimal_ctx.prec = decimal_ctx.prec, 2
try:
- self.assertEqual(floatformat(1.2345, 2), u'1.23')
- self.assertEqual(floatformat(15.2042, -3), u'15.204')
- self.assertEqual(floatformat(1.2345, '2'), u'1.23')
- self.assertEqual(floatformat(15.2042, '-3'), u'15.204')
- self.assertEqual(floatformat(decimal.Decimal('1.2345'), 2), u'1.23')
- self.assertEqual(floatformat(decimal.Decimal('15.2042'), -3), u'15.204')
+ self.assertEqual(floatformat(1.2345, 2), '1.23')
+ self.assertEqual(floatformat(15.2042, -3), '15.204')
+ self.assertEqual(floatformat(1.2345, '2'), '1.23')
+ self.assertEqual(floatformat(15.2042, '-3'), '15.204')
+ self.assertEqual(floatformat(decimal.Decimal('1.2345'), 2), '1.23')
+ self.assertEqual(floatformat(decimal.Decimal('15.2042'), -3), '15.204')
finally:
decimal_ctx.prec = old_prec
@@ -82,290 +83,290 @@ class DefaultFiltersTests(TestCase):
# unicode or Decimal.
@unittest.expectedFailure
def test_floatformat_fail(self):
- self.assertEqual(floatformat(1.00000000000000015, 16), u'1.0000000000000002')
+ self.assertEqual(floatformat(1.00000000000000015, 16), '1.0000000000000002')
def test_addslashes(self):
- self.assertEqual(addslashes(u'"double quotes" and \'single quotes\''),
- u'\\"double quotes\\" and \\\'single quotes\\\'')
+ self.assertEqual(addslashes('"double quotes" and \'single quotes\''),
+ '\\"double quotes\\" and \\\'single quotes\\\'')
- self.assertEqual(addslashes(ur'\ : backslashes, too'),
- u'\\\\ : backslashes, too')
+ self.assertEqual(addslashes(r'\ : backslashes, too'),
+ '\\\\ : backslashes, too')
def test_capfirst(self):
- self.assertEqual(capfirst(u'hello world'), u'Hello world')
+ self.assertEqual(capfirst('hello world'), 'Hello world')
def test_escapejs(self):
- self.assertEqual(escapejs_filter(u'"double quotes" and \'single quotes\''),
- u'\\u0022double quotes\\u0022 and \\u0027single quotes\\u0027')
- self.assertEqual(escapejs_filter(ur'\ : backslashes, too'),
- u'\\u005C : backslashes, too')
- self.assertEqual(escapejs_filter(u'and lots of whitespace: \r\n\t\v\f\b'),
- u'and lots of whitespace: \\u000D\\u000A\\u0009\\u000B\\u000C\\u0008')
- self.assertEqual(escapejs_filter(ur'<script>and this</script>'),
- u'\\u003Cscript\\u003Eand this\\u003C/script\\u003E')
+ self.assertEqual(escapejs_filter('"double quotes" and \'single quotes\''),
+ '\\u0022double quotes\\u0022 and \\u0027single quotes\\u0027')
+ self.assertEqual(escapejs_filter(r'\ : backslashes, too'),
+ '\\u005C : backslashes, too')
+ self.assertEqual(escapejs_filter('and lots of whitespace: \r\n\t\v\f\b'),
+ 'and lots of whitespace: \\u000D\\u000A\\u0009\\u000B\\u000C\\u0008')
+ self.assertEqual(escapejs_filter(r'<script>and this</script>'),
+ '\\u003Cscript\\u003Eand this\\u003C/script\\u003E')
self.assertEqual(
- escapejs_filter(u'paragraph separator:\u2029and line separator:\u2028'),
- u'paragraph separator:\\u2029and line separator:\\u2028')
+ escapejs_filter('paragraph separator:\u2029and line separator:\u2028'),
+ 'paragraph separator:\\u2029and line separator:\\u2028')
def test_fix_ampersands(self):
- self.assertEqual(fix_ampersands_filter(u'Jack & Jill & Jeroboam'),
- u'Jack &amp; Jill &amp; Jeroboam')
+ self.assertEqual(fix_ampersands_filter('Jack & Jill & Jeroboam'),
+ 'Jack &amp; Jill &amp; Jeroboam')
def test_linenumbers(self):
- self.assertEqual(linenumbers(u'line 1\nline 2'),
- u'1. line 1\n2. line 2')
- self.assertEqual(linenumbers(u'\n'.join([u'x'] * 10)),
- u'01. x\n02. x\n03. x\n04. x\n05. x\n06. x\n07. '\
- u'x\n08. x\n09. x\n10. x')
+ self.assertEqual(linenumbers('line 1\nline 2'),
+ '1. line 1\n2. line 2')
+ self.assertEqual(linenumbers('\n'.join(['x'] * 10)),
+ '01. x\n02. x\n03. x\n04. x\n05. x\n06. x\n07. '\
+ 'x\n08. x\n09. x\n10. x')
def test_lower(self):
- self.assertEqual(lower('TEST'), u'test')
+ self.assertEqual(lower('TEST'), 'test')
# uppercase E umlaut
- self.assertEqual(lower(u'\xcb'), u'\xeb')
+ self.assertEqual(lower('\xcb'), '\xeb')
def test_make_list(self):
- self.assertEqual(make_list('abc'), [u'a', u'b', u'c'])
- self.assertEqual(make_list(1234), [u'1', u'2', u'3', u'4'])
+ self.assertEqual(make_list('abc'), ['a', 'b', 'c'])
+ self.assertEqual(make_list(1234), ['1', '2', '3', '4'])
def test_slugify(self):
self.assertEqual(slugify(' Jack & Jill like numbers 1,2,3 and 4 and'\
' silly characters ?%.$!/'),
- u'jack-jill-like-numbers-123-and-4-and-silly-characters')
+ 'jack-jill-like-numbers-123-and-4-and-silly-characters')
- self.assertEqual(slugify(u"Un \xe9l\xe9phant \xe0 l'or\xe9e du bois"),
- u'un-elephant-a-loree-du-bois')
+ self.assertEqual(slugify("Un \xe9l\xe9phant \xe0 l'or\xe9e du bois"),
+ 'un-elephant-a-loree-du-bois')
def test_stringformat(self):
- self.assertEqual(stringformat(1, u'03d'), u'001')
- self.assertEqual(stringformat(1, u'z'), u'')
+ self.assertEqual(stringformat(1, '03d'), '001')
+ self.assertEqual(stringformat(1, 'z'), '')
def test_title(self):
self.assertEqual(title('a nice title, isn\'t it?'),
- u"A Nice Title, Isn't It?")
- self.assertEqual(title(u'discoth\xe8que'), u'Discoth\xe8que')
+ "A Nice Title, Isn't It?")
+ self.assertEqual(title('discoth\xe8que'), 'Discoth\xe8que')
def test_truncatewords(self):
self.assertEqual(
- truncatewords(u'A sentence with a few words in it', 1), u'A ...')
+ truncatewords('A sentence with a few words in it', 1), 'A ...')
self.assertEqual(
- truncatewords(u'A sentence with a few words in it', 5),
- u'A sentence with a few ...')
+ truncatewords('A sentence with a few words in it', 5),
+ 'A sentence with a few ...')
self.assertEqual(
- truncatewords(u'A sentence with a few words in it', 100),
- u'A sentence with a few words in it')
+ truncatewords('A sentence with a few words in it', 100),
+ 'A sentence with a few words in it')
self.assertEqual(
- truncatewords(u'A sentence with a few words in it',
- 'not a number'), u'A sentence with a few words in it')
+ truncatewords('A sentence with a few words in it',
+ 'not a number'), 'A sentence with a few words in it')
def test_truncatewords_html(self):
self.assertEqual(truncatewords_html(
- u'<p>one <a href="#">two - three <br>four</a> five</p>', 0), u'')
- self.assertEqual(truncatewords_html(u'<p>one <a href="#">two - '\
- u'three <br>four</a> five</p>', 2),
- u'<p>one <a href="#">two ...</a></p>')
+ '<p>one <a href="#">two - three <br>four</a> five</p>', 0), '')
+ self.assertEqual(truncatewords_html('<p>one <a href="#">two - '\
+ 'three <br>four</a> five</p>', 2),
+ '<p>one <a href="#">two ...</a></p>')
self.assertEqual(truncatewords_html(
- u'<p>one <a href="#">two - three <br>four</a> five</p>', 4),
- u'<p>one <a href="#">two - three <br>four ...</a></p>')
+ '<p>one <a href="#">two - three <br>four</a> five</p>', 4),
+ '<p>one <a href="#">two - three <br>four ...</a></p>')
self.assertEqual(truncatewords_html(
- u'<p>one <a href="#">two - three <br>four</a> five</p>', 5),
- u'<p>one <a href="#">two - three <br>four</a> five</p>')
+ '<p>one <a href="#">two - three <br>four</a> five</p>', 5),
+ '<p>one <a href="#">two - three <br>four</a> five</p>')
self.assertEqual(truncatewords_html(
- u'<p>one <a href="#">two - three <br>four</a> five</p>', 100),
- u'<p>one <a href="#">two - three <br>four</a> five</p>')
+ '<p>one <a href="#">two - three <br>four</a> five</p>', 100),
+ '<p>one <a href="#">two - three <br>four</a> five</p>')
self.assertEqual(truncatewords_html(
- u'\xc5ngstr\xf6m was here', 1), u'\xc5ngstr\xf6m ...')
+ '\xc5ngstr\xf6m was here', 1), '\xc5ngstr\xf6m ...')
def test_upper(self):
- self.assertEqual(upper(u'Mixed case input'), u'MIXED CASE INPUT')
+ self.assertEqual(upper('Mixed case input'), 'MIXED CASE INPUT')
# lowercase e umlaut
- self.assertEqual(upper(u'\xeb'), u'\xcb')
+ self.assertEqual(upper('\xeb'), '\xcb')
def test_urlencode(self):
- self.assertEqual(urlencode(u'fran\xe7ois & jill'),
- u'fran%C3%A7ois%20%26%20jill')
- self.assertEqual(urlencode(1), u'1')
+ self.assertEqual(urlencode('fran\xe7ois & jill'),
+ 'fran%C3%A7ois%20%26%20jill')
+ self.assertEqual(urlencode(1), '1')
def test_iriencode(self):
- self.assertEqual(iriencode(u'S\xf8r-Tr\xf8ndelag'),
- u'S%C3%B8r-Tr%C3%B8ndelag')
- self.assertEqual(iriencode(urlencode(u'fran\xe7ois & jill')),
- u'fran%C3%A7ois%20%26%20jill')
+ self.assertEqual(iriencode('S\xf8r-Tr\xf8ndelag'),
+ 'S%C3%B8r-Tr%C3%B8ndelag')
+ self.assertEqual(iriencode(urlencode('fran\xe7ois & jill')),
+ 'fran%C3%A7ois%20%26%20jill')
def test_urlizetrunc(self):
- self.assertEqual(urlizetrunc(u'http://short.com/', 20), u'<a href='\
- u'"http://short.com/" rel="nofollow">http://short.com/</a>')
+ self.assertEqual(urlizetrunc('http://short.com/', 20), '<a href='\
+ '"http://short.com/" rel="nofollow">http://short.com/</a>')
- self.assertEqual(urlizetrunc(u'http://www.google.co.uk/search?hl=en'\
- u'&q=some+long+url&btnG=Search&meta=', 20), u'<a href="http://'\
- u'www.google.co.uk/search?hl=en&q=some+long+url&btnG=Search&'\
- u'meta=" rel="nofollow">http://www.google...</a>')
+ self.assertEqual(urlizetrunc('http://www.google.co.uk/search?hl=en'\
+ '&q=some+long+url&btnG=Search&meta=', 20), '<a href="http://'\
+ 'www.google.co.uk/search?hl=en&q=some+long+url&btnG=Search&'\
+ 'meta=" rel="nofollow">http://www.google...</a>')
self.assertEqual(urlizetrunc('http://www.google.co.uk/search?hl=en'\
- u'&q=some+long+url&btnG=Search&meta=', 20), u'<a href="http://'\
- u'www.google.co.uk/search?hl=en&q=some+long+url&btnG=Search'\
- u'&meta=" rel="nofollow">http://www.google...</a>')
+ '&q=some+long+url&btnG=Search&meta=', 20), '<a href="http://'\
+ 'www.google.co.uk/search?hl=en&q=some+long+url&btnG=Search'\
+ '&meta=" rel="nofollow">http://www.google...</a>')
# Check truncating of URIs which are the exact length
uri = 'http://31characteruri.com/test/'
self.assertEqual(len(uri), 31)
self.assertEqual(urlizetrunc(uri, 31),
- u'<a href="http://31characteruri.com/test/" rel="nofollow">'\
- u'http://31characteruri.com/test/</a>')
+ '<a href="http://31characteruri.com/test/" rel="nofollow">'\
+ 'http://31characteruri.com/test/</a>')
self.assertEqual(urlizetrunc(uri, 30),
- u'<a href="http://31characteruri.com/test/" rel="nofollow">'\
- u'http://31characteruri.com/t...</a>')
+ '<a href="http://31characteruri.com/test/" rel="nofollow">'\
+ 'http://31characteruri.com/t...</a>')
self.assertEqual(urlizetrunc(uri, 2),
- u'<a href="http://31characteruri.com/test/"'\
- u' rel="nofollow">...</a>')
+ '<a href="http://31characteruri.com/test/"'\
+ ' rel="nofollow">...</a>')
def test_urlize(self):
# Check normal urlize
self.assertEqual(urlize('http://google.com'),
- u'<a href="http://google.com" rel="nofollow">http://google.com</a>')
+ '<a href="http://google.com" rel="nofollow">http://google.com</a>')
self.assertEqual(urlize('http://google.com/'),
- u'<a href="http://google.com/" rel="nofollow">http://google.com/</a>')
+ '<a href="http://google.com/" rel="nofollow">http://google.com/</a>')
self.assertEqual(urlize('www.google.com'),
- u'<a href="http://www.google.com" rel="nofollow">www.google.com</a>')
+ '<a href="http://www.google.com" rel="nofollow">www.google.com</a>')
self.assertEqual(urlize('djangoproject.org'),
- u'<a href="http://djangoproject.org" rel="nofollow">djangoproject.org</a>')
+ '<a href="http://djangoproject.org" rel="nofollow">djangoproject.org</a>')
self.assertEqual(urlize('info@djangoproject.org'),
- u'<a href="mailto:info@djangoproject.org">info@djangoproject.org</a>')
+ '<a href="mailto:info@djangoproject.org">info@djangoproject.org</a>')
# Check urlize with https addresses
self.assertEqual(urlize('https://google.com'),
- u'<a href="https://google.com" rel="nofollow">https://google.com</a>')
+ '<a href="https://google.com" rel="nofollow">https://google.com</a>')
# Check urlize doesn't overquote already quoted urls - see #9655
self.assertEqual(urlize('http://hi.baidu.com/%D6%D8%D0%C2%BF'),
- u'<a href="http://hi.baidu.com/%D6%D8%D0%C2%BF" rel="nofollow">'
- u'http://hi.baidu.com/%D6%D8%D0%C2%BF</a>')
+ '<a href="http://hi.baidu.com/%D6%D8%D0%C2%BF" rel="nofollow">'
+ 'http://hi.baidu.com/%D6%D8%D0%C2%BF</a>')
self.assertEqual(urlize('www.mystore.com/30%OffCoupons!'),
- u'<a href="http://www.mystore.com/30%25OffCoupons!" rel="nofollow">'
- u'www.mystore.com/30%OffCoupons!</a>')
+ '<a href="http://www.mystore.com/30%25OffCoupons!" rel="nofollow">'
+ 'www.mystore.com/30%OffCoupons!</a>')
self.assertEqual(urlize('http://en.wikipedia.org/wiki/Caf%C3%A9'),
- u'<a href="http://en.wikipedia.org/wiki/Caf%C3%A9" rel="nofollow">'
- u'http://en.wikipedia.org/wiki/Caf%C3%A9</a>')
+ '<a href="http://en.wikipedia.org/wiki/Caf%C3%A9" rel="nofollow">'
+ 'http://en.wikipedia.org/wiki/Caf%C3%A9</a>')
self.assertEqual(urlize('http://en.wikipedia.org/wiki/Café'),
- u'<a href="http://en.wikipedia.org/wiki/Caf%C3%A9" rel="nofollow">'
- u'http://en.wikipedia.org/wiki/Café</a>')
+ '<a href="http://en.wikipedia.org/wiki/Caf%C3%A9" rel="nofollow">'
+ 'http://en.wikipedia.org/wiki/Café</a>')
# Check urlize keeps balanced parentheses - see #11911
self.assertEqual(urlize('http://en.wikipedia.org/wiki/Django_(web_framework)'),
- u'<a href="http://en.wikipedia.org/wiki/Django_(web_framework)" rel="nofollow">'
- u'http://en.wikipedia.org/wiki/Django_(web_framework)</a>')
+ '<a href="http://en.wikipedia.org/wiki/Django_(web_framework)" rel="nofollow">'
+ 'http://en.wikipedia.org/wiki/Django_(web_framework)</a>')
self.assertEqual(urlize('(see http://en.wikipedia.org/wiki/Django_(web_framework))'),
- u'(see <a href="http://en.wikipedia.org/wiki/Django_(web_framework)" rel="nofollow">'
- u'http://en.wikipedia.org/wiki/Django_(web_framework)</a>)')
+ '(see <a href="http://en.wikipedia.org/wiki/Django_(web_framework)" rel="nofollow">'
+ 'http://en.wikipedia.org/wiki/Django_(web_framework)</a>)')
# Check urlize adds nofollow properly - see #12183
self.assertEqual(urlize('foo@bar.com or www.bar.com'),
- u'<a href="mailto:foo@bar.com">foo@bar.com</a> or '
- u'<a href="http://www.bar.com" rel="nofollow">www.bar.com</a>')
+ '<a href="mailto:foo@bar.com">foo@bar.com</a> or '
+ '<a href="http://www.bar.com" rel="nofollow">www.bar.com</a>')
# Check urlize handles IDN correctly - see #13704
self.assertEqual(urlize('http://c✶.ws'),
- u'<a href="http://xn--c-lgq.ws" rel="nofollow">http://c✶.ws</a>')
+ '<a href="http://xn--c-lgq.ws" rel="nofollow">http://c✶.ws</a>')
self.assertEqual(urlize('www.c✶.ws'),
- u'<a href="http://www.xn--c-lgq.ws" rel="nofollow">www.c✶.ws</a>')
+ '<a href="http://www.xn--c-lgq.ws" rel="nofollow">www.c✶.ws</a>')
self.assertEqual(urlize('c✶.org'),
- u'<a href="http://xn--c-lgq.org" rel="nofollow">c✶.org</a>')
+ '<a href="http://xn--c-lgq.org" rel="nofollow">c✶.org</a>')
self.assertEqual(urlize('info@c✶.org'),
- u'<a href="mailto:info@xn--c-lgq.org">info@c✶.org</a>')
+ '<a href="mailto:info@xn--c-lgq.org">info@c✶.org</a>')
# Check urlize doesn't highlight malformed URIs - see #16395
self.assertEqual(urlize('http:///www.google.com'),
- u'http:///www.google.com')
+ 'http:///www.google.com')
self.assertEqual(urlize('http://.google.com'),
- u'http://.google.com')
+ 'http://.google.com')
self.assertEqual(urlize('http://@foo.com'),
- u'http://@foo.com')
+ 'http://@foo.com')
# Check urlize accepts more TLDs - see #16656
self.assertEqual(urlize('usa.gov'),
- u'<a href="http://usa.gov" rel="nofollow">usa.gov</a>')
+ '<a href="http://usa.gov" rel="nofollow">usa.gov</a>')
# Check urlize don't crash on invalid email with dot-starting domain - see #17592
self.assertEqual(urlize('email@.stream.ru'),
- u'email@.stream.ru')
+ 'email@.stream.ru')
# Check urlize accepts uppercased URL schemes - see #18071
self.assertEqual(urlize('HTTPS://github.com/'),
- u'<a href="https://github.com/" rel="nofollow">HTTPS://github.com/</a>')
+ '<a href="https://github.com/" rel="nofollow">HTTPS://github.com/</a>')
def test_wordcount(self):
self.assertEqual(wordcount(''), 0)
- self.assertEqual(wordcount(u'oneword'), 1)
- self.assertEqual(wordcount(u'lots of words'), 3)
+ self.assertEqual(wordcount('oneword'), 1)
+ self.assertEqual(wordcount('lots of words'), 3)
- self.assertEqual(wordwrap(u'this is a long paragraph of text that '\
- u'really needs to be wrapped I\'m afraid', 14),
- u"this is a long\nparagraph of\ntext that\nreally needs\nto be "\
- u"wrapped\nI'm afraid")
+ self.assertEqual(wordwrap('this is a long paragraph of text that '\
+ 'really needs to be wrapped I\'m afraid', 14),
+ "this is a long\nparagraph of\ntext that\nreally needs\nto be "\
+ "wrapped\nI'm afraid")
- self.assertEqual(wordwrap(u'this is a short paragraph of text.\n '\
- u'But this line should be indented', 14),
- u'this is a\nshort\nparagraph of\ntext.\n But this\nline '\
- u'should be\nindented')
+ self.assertEqual(wordwrap('this is a short paragraph of text.\n '\
+ 'But this line should be indented', 14),
+ 'this is a\nshort\nparagraph of\ntext.\n But this\nline '\
+ 'should be\nindented')
- self.assertEqual(wordwrap(u'this is a short paragraph of text.\n '\
- u'But this line should be indented',15), u'this is a short\n'\
- u'paragraph of\ntext.\n But this line\nshould be\nindented')
+ self.assertEqual(wordwrap('this is a short paragraph of text.\n '\
+ 'But this line should be indented',15), 'this is a short\n'\
+ 'paragraph of\ntext.\n But this line\nshould be\nindented')
def test_rjust(self):
- self.assertEqual(ljust(u'test', 10), u'test ')
- self.assertEqual(ljust(u'test', 3), u'test')
- self.assertEqual(rjust(u'test', 10), u' test')
- self.assertEqual(rjust(u'test', 3), u'test')
+ self.assertEqual(ljust('test', 10), 'test ')
+ self.assertEqual(ljust('test', 3), 'test')
+ self.assertEqual(rjust('test', 10), ' test')
+ self.assertEqual(rjust('test', 3), 'test')
def test_center(self):
- self.assertEqual(center(u'test', 6), u' test ')
+ self.assertEqual(center('test', 6), ' test ')
def test_cut(self):
- self.assertEqual(cut(u'a string to be mangled', 'a'),
- u' string to be mngled')
- self.assertEqual(cut(u'a string to be mangled', 'ng'),
- u'a stri to be maled')
- self.assertEqual(cut(u'a string to be mangled', 'strings'),
- u'a string to be mangled')
+ self.assertEqual(cut('a string to be mangled', 'a'),
+ ' string to be mngled')
+ self.assertEqual(cut('a string to be mangled', 'ng'),
+ 'a stri to be maled')
+ self.assertEqual(cut('a string to be mangled', 'strings'),
+ 'a string to be mangled')
def test_force_escape(self):
- escaped = force_escape(u'<some html & special characters > here')
+ escaped = force_escape('<some html & special characters > here')
self.assertEqual(
- escaped, u'&lt;some html &amp; special characters &gt; here')
+ escaped, '&lt;some html &amp; special characters &gt; here')
self.assertTrue(isinstance(escaped, SafeData))
self.assertEqual(
- force_escape(u'<some html & special characters > here ĐÅ€£'),
- u'&lt;some html &amp; special characters &gt; here'\
- u' \u0110\xc5\u20ac\xa3')
+ force_escape('<some html & special characters > here ĐÅ€£'),
+ '&lt;some html &amp; special characters &gt; here'\
+ ' \u0110\xc5\u20ac\xa3')
def test_linebreaks(self):
- self.assertEqual(linebreaks_filter(u'line 1'), u'<p>line 1</p>')
- self.assertEqual(linebreaks_filter(u'line 1\nline 2'),
- u'<p>line 1<br />line 2</p>')
- self.assertEqual(linebreaks_filter(u'line 1\rline 2'),
- u'<p>line 1<br />line 2</p>')
- self.assertEqual(linebreaks_filter(u'line 1\r\nline 2'),
- u'<p>line 1<br />line 2</p>')
+ self.assertEqual(linebreaks_filter('line 1'), '<p>line 1</p>')
+ self.assertEqual(linebreaks_filter('line 1\nline 2'),
+ '<p>line 1<br />line 2</p>')
+ self.assertEqual(linebreaks_filter('line 1\rline 2'),
+ '<p>line 1<br />line 2</p>')
+ self.assertEqual(linebreaks_filter('line 1\r\nline 2'),
+ '<p>line 1<br />line 2</p>')
def test_linebreaksbr(self):
- self.assertEqual(linebreaksbr(u'line 1\nline 2'),
- u'line 1<br />line 2')
- self.assertEqual(linebreaksbr(u'line 1\rline 2'),
- u'line 1<br />line 2')
- self.assertEqual(linebreaksbr(u'line 1\r\nline 2'),
- u'line 1<br />line 2')
+ self.assertEqual(linebreaksbr('line 1\nline 2'),
+ 'line 1<br />line 2')
+ self.assertEqual(linebreaksbr('line 1\rline 2'),
+ 'line 1<br />line 2')
+ self.assertEqual(linebreaksbr('line 1\r\nline 2'),
+ 'line 1<br />line 2')
def test_removetags(self):
- self.assertEqual(removetags(u'some <b>html</b> with <script>alert'\
- u'("You smell")</script> disallowed <img /> tags', 'script img'),
- u'some <b>html</b> with alert("You smell") disallowed tags')
- self.assertEqual(striptags(u'some <b>html</b> with <script>alert'\
- u'("You smell")</script> disallowed <img /> tags'),
- u'some html with alert("You smell") disallowed tags')
+ self.assertEqual(removetags('some <b>html</b> with <script>alert'\
+ '("You smell")</script> disallowed <img /> tags', 'script img'),
+ 'some <b>html</b> with alert("You smell") disallowed tags')
+ self.assertEqual(striptags('some <b>html</b> with <script>alert'\
+ '("You smell")</script> disallowed <img /> tags'),
+ 'some html with alert("You smell") disallowed tags')
def test_dictsort(self):
sorted_dicts = dictsort([{'age': 23, 'name': 'Barbara-Ann'},
@@ -404,81 +405,81 @@ class DefaultFiltersTests(TestCase):
def test_first(self):
self.assertEqual(first([0,1,2]), 0)
- self.assertEqual(first(u''), u'')
- self.assertEqual(first(u'test'), u't')
+ self.assertEqual(first(''), '')
+ self.assertEqual(first('test'), 't')
def test_join(self):
- self.assertEqual(join([0,1,2], u'glue'), u'0glue1glue2')
+ self.assertEqual(join([0,1,2], 'glue'), '0glue1glue2')
def test_length(self):
- self.assertEqual(length(u'1234'), 4)
+ self.assertEqual(length('1234'), 4)
self.assertEqual(length([1,2,3,4]), 4)
self.assertEqual(length_is([], 0), True)
self.assertEqual(length_is([], 1), False)
self.assertEqual(length_is('a', 1), True)
- self.assertEqual(length_is(u'a', 10), False)
+ self.assertEqual(length_is('a', 10), False)
def test_slice(self):
- self.assertEqual(slice_filter(u'abcdefg', u'0'), u'')
- self.assertEqual(slice_filter(u'abcdefg', u'1'), u'a')
- self.assertEqual(slice_filter(u'abcdefg', u'-1'), u'abcdef')
- self.assertEqual(slice_filter(u'abcdefg', u'1:2'), u'b')
- self.assertEqual(slice_filter(u'abcdefg', u'1:3'), u'bc')
- self.assertEqual(slice_filter(u'abcdefg', u'0::2'), u'aceg')
+ self.assertEqual(slice_filter('abcdefg', '0'), '')
+ self.assertEqual(slice_filter('abcdefg', '1'), 'a')
+ self.assertEqual(slice_filter('abcdefg', '-1'), 'abcdef')
+ self.assertEqual(slice_filter('abcdefg', '1:2'), 'b')
+ self.assertEqual(slice_filter('abcdefg', '1:3'), 'bc')
+ self.assertEqual(slice_filter('abcdefg', '0::2'), 'aceg')
def test_unordered_list(self):
- self.assertEqual(unordered_list([u'item 1', u'item 2']),
- u'\t<li>item 1</li>\n\t<li>item 2</li>')
- self.assertEqual(unordered_list([u'item 1', [u'item 1.1']]),
- u'\t<li>item 1\n\t<ul>\n\t\t<li>item 1.1</li>\n\t</ul>\n\t</li>')
+ self.assertEqual(unordered_list(['item 1', 'item 2']),
+ '\t<li>item 1</li>\n\t<li>item 2</li>')
+ self.assertEqual(unordered_list(['item 1', ['item 1.1']]),
+ '\t<li>item 1\n\t<ul>\n\t\t<li>item 1.1</li>\n\t</ul>\n\t</li>')
self.assertEqual(
- unordered_list([u'item 1', [u'item 1.1', u'item1.2'], u'item 2']),
- u'\t<li>item 1\n\t<ul>\n\t\t<li>item 1.1</li>\n\t\t<li>item1.2'\
- u'</li>\n\t</ul>\n\t</li>\n\t<li>item 2</li>')
+ unordered_list(['item 1', ['item 1.1', 'item1.2'], 'item 2']),
+ '\t<li>item 1\n\t<ul>\n\t\t<li>item 1.1</li>\n\t\t<li>item1.2'\
+ '</li>\n\t</ul>\n\t</li>\n\t<li>item 2</li>')
self.assertEqual(
- unordered_list([u'item 1', [u'item 1.1', [u'item 1.1.1',
- [u'item 1.1.1.1']]]]),
- u'\t<li>item 1\n\t<ul>\n\t\t<li>item 1.1\n\t\t<ul>\n\t\t\t<li>'\
- u'item 1.1.1\n\t\t\t<ul>\n\t\t\t\t<li>item 1.1.1.1</li>\n\t\t\t'\
- u'</ul>\n\t\t\t</li>\n\t\t</ul>\n\t\t</li>\n\t</ul>\n\t</li>')
+ unordered_list(['item 1', ['item 1.1', ['item 1.1.1',
+ ['item 1.1.1.1']]]]),
+ '\t<li>item 1\n\t<ul>\n\t\t<li>item 1.1\n\t\t<ul>\n\t\t\t<li>'\
+ 'item 1.1.1\n\t\t\t<ul>\n\t\t\t\t<li>item 1.1.1.1</li>\n\t\t\t'\
+ '</ul>\n\t\t\t</li>\n\t\t</ul>\n\t\t</li>\n\t</ul>\n\t</li>')
self.assertEqual(unordered_list(
['States', ['Kansas', ['Lawrence', 'Topeka'], 'Illinois']]),
- u'\t<li>States\n\t<ul>\n\t\t<li>Kansas\n\t\t<ul>\n\t\t\t<li>'\
- u'Lawrence</li>\n\t\t\t<li>Topeka</li>\n\t\t</ul>\n\t\t</li>'\
- u'\n\t\t<li>Illinois</li>\n\t</ul>\n\t</li>')
+ '\t<li>States\n\t<ul>\n\t\t<li>Kansas\n\t\t<ul>\n\t\t\t<li>'\
+ 'Lawrence</li>\n\t\t\t<li>Topeka</li>\n\t\t</ul>\n\t\t</li>'\
+ '\n\t\t<li>Illinois</li>\n\t</ul>\n\t</li>')
class ULItem(object):
def __init__(self, title):
self.title = title
def __unicode__(self):
- return u'ulitem-%s' % str(self.title)
+ return 'ulitem-%s' % str(self.title)
a = ULItem('a')
b = ULItem('b')
self.assertEqual(unordered_list([a,b]),
- u'\t<li>ulitem-a</li>\n\t<li>ulitem-b</li>')
+ '\t<li>ulitem-a</li>\n\t<li>ulitem-b</li>')
# Old format for unordered lists should still work
- self.assertEqual(unordered_list([u'item 1', []]), u'\t<li>item 1</li>')
+ self.assertEqual(unordered_list(['item 1', []]), '\t<li>item 1</li>')
- self.assertEqual(unordered_list([u'item 1', [[u'item 1.1', []]]]),
- u'\t<li>item 1\n\t<ul>\n\t\t<li>item 1.1</li>\n\t</ul>\n\t</li>')
+ self.assertEqual(unordered_list(['item 1', [['item 1.1', []]]]),
+ '\t<li>item 1\n\t<ul>\n\t\t<li>item 1.1</li>\n\t</ul>\n\t</li>')
- self.assertEqual(unordered_list([u'item 1', [[u'item 1.1', []],
- [u'item 1.2', []]]]), u'\t<li>item 1\n\t<ul>\n\t\t<li>item 1.1'\
- u'</li>\n\t\t<li>item 1.2</li>\n\t</ul>\n\t</li>')
+ self.assertEqual(unordered_list(['item 1', [['item 1.1', []],
+ ['item 1.2', []]]]), '\t<li>item 1\n\t<ul>\n\t\t<li>item 1.1'\
+ '</li>\n\t\t<li>item 1.2</li>\n\t</ul>\n\t</li>')
self.assertEqual(unordered_list(['States', [['Kansas', [['Lawrence',
- []], ['Topeka', []]]], ['Illinois', []]]]), u'\t<li>States\n\t'\
- u'<ul>\n\t\t<li>Kansas\n\t\t<ul>\n\t\t\t<li>Lawrence</li>'\
- u'\n\t\t\t<li>Topeka</li>\n\t\t</ul>\n\t\t</li>\n\t\t<li>'\
- u'Illinois</li>\n\t</ul>\n\t</li>')
+ []], ['Topeka', []]]], ['Illinois', []]]]), '\t<li>States\n\t'\
+ '<ul>\n\t\t<li>Kansas\n\t\t<ul>\n\t\t\t<li>Lawrence</li>'\
+ '\n\t\t\t<li>Topeka</li>\n\t\t</ul>\n\t\t</li>\n\t\t<li>'\
+ 'Illinois</li>\n\t</ul>\n\t</li>')
def test_add(self):
- self.assertEqual(add(u'1', u'2'), 3)
+ self.assertEqual(add('1', '2'), 3)
def test_get_digit(self):
self.assertEqual(get_digit(123, 1), 3)
@@ -486,148 +487,148 @@ class DefaultFiltersTests(TestCase):
self.assertEqual(get_digit(123, 3), 1)
self.assertEqual(get_digit(123, 4), 0)
self.assertEqual(get_digit(123, 0), 123)
- self.assertEqual(get_digit(u'xyz', 0), u'xyz')
+ self.assertEqual(get_digit('xyz', 0), 'xyz')
def test_date(self):
# real testing of date() is in dateformat.py
- self.assertEqual(date(datetime.datetime(2005, 12, 29), u"d F Y"),
- u'29 December 2005')
- self.assertEqual(date(datetime.datetime(2005, 12, 29), ur'jS \o\f F'),
- u'29th of December')
+ self.assertEqual(date(datetime.datetime(2005, 12, 29), "d F Y"),
+ '29 December 2005')
+ self.assertEqual(date(datetime.datetime(2005, 12, 29), r'jS \o\f F'),
+ '29th of December')
def test_time(self):
# real testing of time() is done in dateformat.py
- self.assertEqual(time(datetime.time(13), u"h"), u'01')
- self.assertEqual(time(datetime.time(0), u"h"), u'12')
+ self.assertEqual(time(datetime.time(13), "h"), '01')
+ self.assertEqual(time(datetime.time(0), "h"), '12')
def test_timesince(self):
# real testing is done in timesince.py, where we can provide our own 'now'
self.assertEqual(
timesince_filter(datetime.datetime.now() - datetime.timedelta(1)),
- u'1 day')
+ '1 day')
self.assertEqual(
timesince_filter(datetime.datetime(2005, 12, 29),
datetime.datetime(2005, 12, 30)),
- u'1 day')
+ '1 day')
def test_timeuntil(self):
self.assertEqual(
timeuntil_filter(datetime.datetime.now() + datetime.timedelta(1, 1)),
- u'1 day')
+ '1 day')
self.assertEqual(
timeuntil_filter(datetime.datetime(2005, 12, 30),
datetime.datetime(2005, 12, 29)),
- u'1 day')
+ '1 day')
def test_default(self):
- self.assertEqual(default(u"val", u"default"), u'val')
- self.assertEqual(default(None, u"default"), u'default')
- self.assertEqual(default(u'', u"default"), u'default')
+ self.assertEqual(default("val", "default"), 'val')
+ self.assertEqual(default(None, "default"), 'default')
+ self.assertEqual(default('', "default"), 'default')
def test_if_none(self):
- self.assertEqual(default_if_none(u"val", u"default"), u'val')
- self.assertEqual(default_if_none(None, u"default"), u'default')
- self.assertEqual(default_if_none(u'', u"default"), u'')
+ self.assertEqual(default_if_none("val", "default"), 'val')
+ self.assertEqual(default_if_none(None, "default"), 'default')
+ self.assertEqual(default_if_none('', "default"), '')
def test_divisibleby(self):
self.assertEqual(divisibleby(4, 2), True)
self.assertEqual(divisibleby(4, 3), False)
def test_yesno(self):
- self.assertEqual(yesno(True), u'yes')
- self.assertEqual(yesno(False), u'no')
- self.assertEqual(yesno(None), u'maybe')
- self.assertEqual(yesno(True, u'certainly,get out of town,perhaps'),
- u'certainly')
- self.assertEqual(yesno(False, u'certainly,get out of town,perhaps'),
- u'get out of town')
- self.assertEqual(yesno(None, u'certainly,get out of town,perhaps'),
- u'perhaps')
- self.assertEqual(yesno(None, u'certainly,get out of town'),
- u'get out of town')
+ self.assertEqual(yesno(True), 'yes')
+ self.assertEqual(yesno(False), 'no')
+ self.assertEqual(yesno(None), 'maybe')
+ self.assertEqual(yesno(True, 'certainly,get out of town,perhaps'),
+ 'certainly')
+ self.assertEqual(yesno(False, 'certainly,get out of town,perhaps'),
+ 'get out of town')
+ self.assertEqual(yesno(None, 'certainly,get out of town,perhaps'),
+ 'perhaps')
+ self.assertEqual(yesno(None, 'certainly,get out of town'),
+ 'get out of town')
def test_filesizeformat(self):
- self.assertEqual(filesizeformat(1023), u'1023 bytes')
- self.assertEqual(filesizeformat(1024), u'1.0 KB')
- self.assertEqual(filesizeformat(10*1024), u'10.0 KB')
- self.assertEqual(filesizeformat(1024*1024-1), u'1024.0 KB')
- self.assertEqual(filesizeformat(1024*1024), u'1.0 MB')
- self.assertEqual(filesizeformat(1024*1024*50), u'50.0 MB')
- self.assertEqual(filesizeformat(1024*1024*1024-1), u'1024.0 MB')
- self.assertEqual(filesizeformat(1024*1024*1024), u'1.0 GB')
- self.assertEqual(filesizeformat(1024*1024*1024*1024), u'1.0 TB')
- self.assertEqual(filesizeformat(1024*1024*1024*1024*1024), u'1.0 PB')
+ self.assertEqual(filesizeformat(1023), '1023 bytes')
+ self.assertEqual(filesizeformat(1024), '1.0 KB')
+ self.assertEqual(filesizeformat(10*1024), '10.0 KB')
+ self.assertEqual(filesizeformat(1024*1024-1), '1024.0 KB')
+ self.assertEqual(filesizeformat(1024*1024), '1.0 MB')
+ self.assertEqual(filesizeformat(1024*1024*50), '50.0 MB')
+ self.assertEqual(filesizeformat(1024*1024*1024-1), '1024.0 MB')
+ self.assertEqual(filesizeformat(1024*1024*1024), '1.0 GB')
+ self.assertEqual(filesizeformat(1024*1024*1024*1024), '1.0 TB')
+ self.assertEqual(filesizeformat(1024*1024*1024*1024*1024), '1.0 PB')
self.assertEqual(filesizeformat(1024*1024*1024*1024*1024*2000),
- u'2000.0 PB')
- self.assertEqual(filesizeformat(complex(1,-1)), u'0 bytes')
- self.assertEqual(filesizeformat(""), u'0 bytes')
- self.assertEqual(filesizeformat(u"\N{GREEK SMALL LETTER ALPHA}"),
- u'0 bytes')
+ '2000.0 PB')
+ self.assertEqual(filesizeformat(complex(1,-1)), '0 bytes')
+ self.assertEqual(filesizeformat(""), '0 bytes')
+ self.assertEqual(filesizeformat("\N{GREEK SMALL LETTER ALPHA}"),
+ '0 bytes')
def test_localized_filesizeformat(self):
with self.settings(USE_L10N=True):
with translation.override('de', deactivate=True):
- self.assertEqual(filesizeformat(1023), u'1023 Bytes')
- self.assertEqual(filesizeformat(1024), u'1,0 KB')
- self.assertEqual(filesizeformat(10*1024), u'10,0 KB')
- self.assertEqual(filesizeformat(1024*1024-1), u'1024,0 KB')
- self.assertEqual(filesizeformat(1024*1024), u'1,0 MB')
- self.assertEqual(filesizeformat(1024*1024*50), u'50,0 MB')
- self.assertEqual(filesizeformat(1024*1024*1024-1), u'1024,0 MB')
- self.assertEqual(filesizeformat(1024*1024*1024), u'1,0 GB')
- self.assertEqual(filesizeformat(1024*1024*1024*1024), u'1,0 TB')
+ self.assertEqual(filesizeformat(1023), '1023 Bytes')
+ self.assertEqual(filesizeformat(1024), '1,0 KB')
+ self.assertEqual(filesizeformat(10*1024), '10,0 KB')
+ self.assertEqual(filesizeformat(1024*1024-1), '1024,0 KB')
+ self.assertEqual(filesizeformat(1024*1024), '1,0 MB')
+ self.assertEqual(filesizeformat(1024*1024*50), '50,0 MB')
+ self.assertEqual(filesizeformat(1024*1024*1024-1), '1024,0 MB')
+ self.assertEqual(filesizeformat(1024*1024*1024), '1,0 GB')
+ self.assertEqual(filesizeformat(1024*1024*1024*1024), '1,0 TB')
self.assertEqual(filesizeformat(1024*1024*1024*1024*1024),
- u'1,0 PB')
+ '1,0 PB')
self.assertEqual(filesizeformat(1024*1024*1024*1024*1024*2000),
- u'2000,0 PB')
- self.assertEqual(filesizeformat(complex(1,-1)), u'0 Bytes')
- self.assertEqual(filesizeformat(""), u'0 Bytes')
- self.assertEqual(filesizeformat(u"\N{GREEK SMALL LETTER ALPHA}"),
- u'0 Bytes')
+ '2000,0 PB')
+ self.assertEqual(filesizeformat(complex(1,-1)), '0 Bytes')
+ self.assertEqual(filesizeformat(""), '0 Bytes')
+ self.assertEqual(filesizeformat("\N{GREEK SMALL LETTER ALPHA}"),
+ '0 Bytes')
def test_pluralize(self):
- self.assertEqual(pluralize(1), u'')
- self.assertEqual(pluralize(0), u's')
- self.assertEqual(pluralize(2), u's')
- self.assertEqual(pluralize([1]), u'')
- self.assertEqual(pluralize([]), u's')
- self.assertEqual(pluralize([1,2,3]), u's')
- self.assertEqual(pluralize(1,u'es'), u'')
- self.assertEqual(pluralize(0,u'es'), u'es')
- self.assertEqual(pluralize(2,u'es'), u'es')
- self.assertEqual(pluralize(1,u'y,ies'), u'y')
- self.assertEqual(pluralize(0,u'y,ies'), u'ies')
- self.assertEqual(pluralize(2,u'y,ies'), u'ies')
- self.assertEqual(pluralize(0,u'y,ies,error'), u'')
+ self.assertEqual(pluralize(1), '')
+ self.assertEqual(pluralize(0), 's')
+ self.assertEqual(pluralize(2), 's')
+ self.assertEqual(pluralize([1]), '')
+ self.assertEqual(pluralize([]), 's')
+ self.assertEqual(pluralize([1,2,3]), 's')
+ self.assertEqual(pluralize(1,'es'), '')
+ self.assertEqual(pluralize(0,'es'), 'es')
+ self.assertEqual(pluralize(2,'es'), 'es')
+ self.assertEqual(pluralize(1,'y,ies'), 'y')
+ self.assertEqual(pluralize(0,'y,ies'), 'ies')
+ self.assertEqual(pluralize(2,'y,ies'), 'ies')
+ self.assertEqual(pluralize(0,'y,ies,error'), '')
def test_phone2numeric(self):
- self.assertEqual(phone2numeric_filter(u'0800 flowers'), u'0800 3569377')
+ self.assertEqual(phone2numeric_filter('0800 flowers'), '0800 3569377')
def test_non_string_input(self):
# Filters shouldn't break if passed non-strings
- self.assertEqual(addslashes(123), u'123')
- self.assertEqual(linenumbers(123), u'1. 123')
- self.assertEqual(lower(123), u'123')
- self.assertEqual(make_list(123), [u'1', u'2', u'3'])
- self.assertEqual(slugify(123), u'123')
- self.assertEqual(title(123), u'123')
- self.assertEqual(truncatewords(123, 2), u'123')
- self.assertEqual(upper(123), u'123')
- self.assertEqual(urlencode(123), u'123')
- self.assertEqual(urlize(123), u'123')
- self.assertEqual(urlizetrunc(123, 1), u'123')
+ self.assertEqual(addslashes(123), '123')
+ self.assertEqual(linenumbers(123), '1. 123')
+ self.assertEqual(lower(123), '123')
+ self.assertEqual(make_list(123), ['1', '2', '3'])
+ self.assertEqual(slugify(123), '123')
+ self.assertEqual(title(123), '123')
+ self.assertEqual(truncatewords(123, 2), '123')
+ self.assertEqual(upper(123), '123')
+ self.assertEqual(urlencode(123), '123')
+ self.assertEqual(urlize(123), '123')
+ self.assertEqual(urlizetrunc(123, 1), '123')
self.assertEqual(wordcount(123), 1)
- self.assertEqual(wordwrap(123, 2), u'123')
- self.assertEqual(ljust('123', 4), u'123 ')
- self.assertEqual(rjust('123', 4), u' 123')
- self.assertEqual(center('123', 5), u' 123 ')
- self.assertEqual(center('123', 6), u' 123 ')
- self.assertEqual(cut(123, '2'), u'13')
- self.assertEqual(escape(123), u'123')
- self.assertEqual(linebreaks_filter(123), u'<p>123</p>')
- self.assertEqual(linebreaksbr(123), u'123')
- self.assertEqual(removetags(123, 'a'), u'123')
- self.assertEqual(striptags(123), u'123')
+ self.assertEqual(wordwrap(123, 2), '123')
+ self.assertEqual(ljust('123', 4), '123 ')
+ self.assertEqual(rjust('123', 4), ' 123')
+ self.assertEqual(center('123', 5), ' 123 ')
+ self.assertEqual(center('123', 6), ' 123 ')
+ self.assertEqual(cut(123, '2'), '13')
+ self.assertEqual(escape(123), '123')
+ self.assertEqual(linebreaks_filter(123), '<p>123</p>')
+ self.assertEqual(linebreaksbr(123), '123')
+ self.assertEqual(removetags(123, 'a'), '123')
+ self.assertEqual(striptags(123), '123')
diff --git a/tests/regressiontests/expressions_regress/models.py b/tests/regressiontests/expressions_regress/models.py
index 0ebccb5084..f3b6999377 100644
--- a/tests/regressiontests/expressions_regress/models.py
+++ b/tests/regressiontests/expressions_regress/models.py
@@ -1,3 +1,4 @@
+from __future__ import unicode_literals
"""
Model for testing arithmetic expressions.
"""
@@ -9,7 +10,7 @@ class Number(models.Model):
float = models.FloatField(null=True, db_column='the_float')
def __unicode__(self):
- return u'%i, %.3f' % (self.integer, self.float)
+ return '%i, %.3f' % (self.integer, self.float)
class Experiment(models.Model):
name = models.CharField(max_length=24)
diff --git a/tests/regressiontests/extra_regress/models.py b/tests/regressiontests/extra_regress/models.py
index 868331e508..7d2a6fab34 100644
--- a/tests/regressiontests/extra_regress/models.py
+++ b/tests/regressiontests/extra_regress/models.py
@@ -1,3 +1,5 @@
+from __future__ import unicode_literals
+
import copy
import datetime
@@ -11,7 +13,7 @@ class RevisionableModel(models.Model):
when = models.DateTimeField(default=datetime.datetime.now)
def __unicode__(self):
- return u"%s (%s, %s)" % (self.title, self.id, self.base.id)
+ return "%s (%s, %s)" % (self.title, self.id, self.base.id)
def save(self, *args, **kwargs):
super(RevisionableModel, self).save(*args, **kwargs)
@@ -36,5 +38,5 @@ class TestObject(models.Model):
third = models.CharField(max_length=20)
def __unicode__(self):
- return u'TestObject: %s,%s,%s' % (self.first,self.second,self.third)
+ return 'TestObject: %s,%s,%s' % (self.first,self.second,self.third)
diff --git a/tests/regressiontests/extra_regress/tests.py b/tests/regressiontests/extra_regress/tests.py
index 3fcafef5de..f591900afe 100644
--- a/tests/regressiontests/extra_regress/tests.py
+++ b/tests/regressiontests/extra_regress/tests.py
@@ -1,4 +1,4 @@
-from __future__ import absolute_import
+from __future__ import absolute_import, unicode_literals
import datetime
@@ -178,100 +178,100 @@ class ExtraRegressTests(TestCase):
self.assertEqual(
list(TestObject.objects.extra(select=SortedDict((('foo','first'), ('bar','second'), ('whiz','third')))).values()),
- [{'bar': u'second', 'third': u'third', 'second': u'second', 'whiz': u'third', 'foo': u'first', 'id': obj.pk, 'first': u'first'}]
+ [{'bar': 'second', 'third': 'third', 'second': 'second', 'whiz': 'third', 'foo': 'first', 'id': obj.pk, 'first': 'first'}]
)
# Extra clauses after an empty values clause are still included
self.assertEqual(
list(TestObject.objects.values().extra(select=SortedDict((('foo','first'), ('bar','second'), ('whiz','third'))))),
- [{'bar': u'second', 'third': u'third', 'second': u'second', 'whiz': u'third', 'foo': u'first', 'id': obj.pk, 'first': u'first'}]
+ [{'bar': 'second', 'third': 'third', 'second': 'second', 'whiz': 'third', 'foo': 'first', 'id': obj.pk, 'first': 'first'}]
)
# Extra columns are ignored if not mentioned in the values() clause
self.assertEqual(
list(TestObject.objects.extra(select=SortedDict((('foo','first'), ('bar','second'), ('whiz','third')))).values('first', 'second')),
- [{'second': u'second', 'first': u'first'}]
+ [{'second': 'second', 'first': 'first'}]
)
# Extra columns after a non-empty values() clause are ignored
self.assertEqual(
list(TestObject.objects.values('first', 'second').extra(select=SortedDict((('foo','first'), ('bar','second'), ('whiz','third'))))),
- [{'second': u'second', 'first': u'first'}]
+ [{'second': 'second', 'first': 'first'}]
)
# Extra columns can be partially returned
self.assertEqual(
list(TestObject.objects.extra(select=SortedDict((('foo','first'), ('bar','second'), ('whiz','third')))).values('first', 'second', 'foo')),
- [{'second': u'second', 'foo': u'first', 'first': u'first'}]
+ [{'second': 'second', 'foo': 'first', 'first': 'first'}]
)
# Also works if only extra columns are included
self.assertEqual(
list(TestObject.objects.extra(select=SortedDict((('foo','first'), ('bar','second'), ('whiz','third')))).values('foo', 'whiz')),
- [{'foo': u'first', 'whiz': u'third'}]
+ [{'foo': 'first', 'whiz': 'third'}]
)
# Values list works the same way
# All columns are returned for an empty values_list()
self.assertEqual(
list(TestObject.objects.extra(select=SortedDict((('foo','first'), ('bar','second'), ('whiz','third')))).values_list()),
- [(u'first', u'second', u'third', obj.pk, u'first', u'second', u'third')]
+ [('first', 'second', 'third', obj.pk, 'first', 'second', 'third')]
)
# Extra columns after an empty values_list() are still included
self.assertEqual(
list(TestObject.objects.values_list().extra(select=SortedDict((('foo','first'), ('bar','second'), ('whiz','third'))))),
- [(u'first', u'second', u'third', obj.pk, u'first', u'second', u'third')]
+ [('first', 'second', 'third', obj.pk, 'first', 'second', 'third')]
)
# Extra columns ignored completely if not mentioned in values_list()
self.assertEqual(
list(TestObject.objects.extra(select=SortedDict((('foo','first'), ('bar','second'), ('whiz','third')))).values_list('first', 'second')),
- [(u'first', u'second')]
+ [('first', 'second')]
)
# Extra columns after a non-empty values_list() clause are ignored completely
self.assertEqual(
list(TestObject.objects.values_list('first', 'second').extra(select=SortedDict((('foo','first'), ('bar','second'), ('whiz','third'))))),
- [(u'first', u'second')]
+ [('first', 'second')]
)
self.assertEqual(
list(TestObject.objects.extra(select=SortedDict((('foo','first'), ('bar','second'), ('whiz','third')))).values_list('second', flat=True)),
- [u'second']
+ ['second']
)
# Only the extra columns specified in the values_list() are returned
self.assertEqual(
list(TestObject.objects.extra(select=SortedDict((('foo','first'), ('bar','second'), ('whiz','third')))).values_list('first', 'second', 'whiz')),
- [(u'first', u'second', u'third')]
+ [('first', 'second', 'third')]
)
# ...also works if only extra columns are included
self.assertEqual(
list(TestObject.objects.extra(select=SortedDict((('foo','first'), ('bar','second'), ('whiz','third')))).values_list('foo','whiz')),
- [(u'first', u'third')]
+ [('first', 'third')]
)
self.assertEqual(
list(TestObject.objects.extra(select=SortedDict((('foo','first'), ('bar','second'), ('whiz','third')))).values_list('whiz', flat=True)),
- [u'third']
+ ['third']
)
# ... and values are returned in the order they are specified
self.assertEqual(
list(TestObject.objects.extra(select=SortedDict((('foo','first'), ('bar','second'), ('whiz','third')))).values_list('whiz','foo')),
- [(u'third', u'first')]
+ [('third', 'first')]
)
self.assertEqual(
list(TestObject.objects.extra(select=SortedDict((('foo','first'), ('bar','second'), ('whiz','third')))).values_list('first','id')),
- [(u'first', obj.pk)]
+ [('first', obj.pk)]
)
self.assertEqual(
list(TestObject.objects.extra(select=SortedDict((('foo','first'), ('bar','second'), ('whiz','third')))).values_list('whiz', 'first', 'bar', 'id')),
- [(u'third', u'first', u'second', obj.pk)]
+ [('third', 'first', 'second', obj.pk)]
)
def test_regression_10847(self):
diff --git a/tests/regressiontests/file_storage/tests.py b/tests/regressiontests/file_storage/tests.py
index 87035d96d7..51b2207867 100644
--- a/tests/regressiontests/file_storage/tests.py
+++ b/tests/regressiontests/file_storage/tests.py
@@ -1,5 +1,5 @@
# -*- coding: utf-8 -*-
-from __future__ import absolute_import
+from __future__ import absolute_import, unicode_literals
import errno
import os
@@ -251,9 +251,9 @@ class FileStorageTests(unittest.TestCase):
os.mkdir(os.path.join(self.temp_dir, 'storage_dir_1'))
dirs, files = self.storage.listdir('')
- self.assertEqual(set(dirs), set([u'storage_dir_1']))
+ self.assertEqual(set(dirs), set(['storage_dir_1']))
self.assertEqual(set(files),
- set([u'storage_test_1', u'storage_test_2']))
+ set(['storage_test_1', 'storage_test_2']))
self.storage.delete('storage_test_1')
self.storage.delete('storage_test_2')
@@ -388,7 +388,7 @@ class UnicodeFileNameTests(unittest.TestCase):
out the encoding situation between doctest and this file, but the actual
repr doesn't matter; it just shouldn't return a unicode object.
"""
- uf = UploadedFile(name=u'¿Cómo?',content_type='text')
+ uf = UploadedFile(name='¿Cómo?',content_type='text')
self.assertEqual(type(uf.__repr__()), str)
# Tests for a race condition on file saving (#4948).
diff --git a/tests/regressiontests/file_uploads/tests.py b/tests/regressiontests/file_uploads/tests.py
index c8de8035f9..a7424639b4 100644
--- a/tests/regressiontests/file_uploads/tests.py
+++ b/tests/regressiontests/file_uploads/tests.py
@@ -1,6 +1,5 @@
#! -*- coding: utf-8 -*-
-
-from __future__ import absolute_import
+from __future__ import absolute_import, unicode_literals
import base64
import errno
@@ -20,7 +19,7 @@ from . import uploadhandler
from .models import FileModel, temp_storage, UPLOAD_TO
-UNICODE_FILENAME = u'test-0123456789_中文_Orléans.jpg'
+UNICODE_FILENAME = 'test-0123456789_中文_Orléans.jpg'
class FileUploadTests(TestCase):
def test_simple_upload(self):
@@ -71,7 +70,7 @@ class FileUploadTests(TestCase):
base64.b64encode(test_string),
'--' + client.BOUNDARY + '--',
'',
- ])
+ ]).encode('utf-8')
r = {
'CONTENT_LENGTH': len(payload),
'CONTENT_TYPE': client.MULTIPART_CONTENT,
@@ -140,7 +139,7 @@ class FileUploadTests(TestCase):
'',
])
- payload = "\r\n".join(payload)
+ payload = "\r\n".join(payload).encode('utf-8')
r = {
'CONTENT_LENGTH': len(payload),
'CONTENT_TYPE': client.MULTIPART_CONTENT,
@@ -167,7 +166,7 @@ class FileUploadTests(TestCase):
'Oops.'
'--' + client.BOUNDARY + '--',
'',
- ])
+ ]).encode('utf-8')
r = {
'CONTENT_LENGTH': len(payload),
'CONTENT_TYPE': client.MULTIPART_CONTENT,
@@ -192,7 +191,7 @@ class FileUploadTests(TestCase):
'file contents'
'--' + client.BOUNDARY + '--',
'',
- ])
+ ]).encode('utf-8')
payload = payload[:-10]
r = {
'CONTENT_LENGTH': len(payload),
@@ -268,11 +267,11 @@ class FileUploadTests(TestCase):
response = self.client.post('/file_uploads/getlist_count/', {
'file1': file1,
- 'field1': u'test',
- 'field2': u'test3',
- 'field3': u'test5',
- 'field4': u'test6',
- 'field5': u'test7',
+ 'field1': 'test',
+ 'field2': 'test3',
+ 'field3': 'test5',
+ 'field4': 'test6',
+ 'field5': 'test7',
'file2': (file2, file2a)
})
got = json.loads(response.content)
diff --git a/tests/regressiontests/file_uploads/views.py b/tests/regressiontests/file_uploads/views.py
index ae6842d0a7..73b09cbcff 100644
--- a/tests/regressiontests/file_uploads/views.py
+++ b/tests/regressiontests/file_uploads/views.py
@@ -1,4 +1,4 @@
-from __future__ import absolute_import
+from __future__ import absolute_import, unicode_literals
import hashlib
import json
@@ -67,7 +67,7 @@ def file_upload_unicode_name(request):
# through file save.
uni_named_file = request.FILES['file_unicode']
obj = FileModel.objects.create(testfile=uni_named_file)
- full_name = u'%s/%s' % (UPLOAD_TO, uni_named_file.name)
+ full_name = '%s/%s' % (UPLOAD_TO, uni_named_file.name)
if not os.path.exists(full_name):
response = HttpResponseServerError()
diff --git a/tests/regressiontests/fixtures_regress/models.py b/tests/regressiontests/fixtures_regress/models.py
index 5a16f175a1..5d23a21dcd 100644
--- a/tests/regressiontests/fixtures_regress/models.py
+++ b/tests/regressiontests/fixtures_regress/models.py
@@ -1,4 +1,4 @@
-from __future__ import absolute_import
+from __future__ import absolute_import, unicode_literals
from django.contrib.auth.models import User
from django.db import models
@@ -29,7 +29,7 @@ class Stuff(models.Model):
owner = models.ForeignKey(User, null=True)
def __unicode__(self):
- return unicode(self.name) + u' is owned by ' + unicode(self.owner)
+ return unicode(self.name) + ' is owned by ' + unicode(self.owner)
class Absolute(models.Model):
@@ -128,7 +128,7 @@ class Book(models.Model):
ordering = ('name',)
def __unicode__(self):
- return u'%s by %s (available at %s)' % (
+ return '%s by %s (available at %s)' % (
self.name,
self.author.name,
', '.join(s.name for s in self.stores.all())
@@ -148,7 +148,7 @@ class NKChild(Parent):
return self.data
def __unicode__(self):
- return u'NKChild %s:%s' % (self.name, self.data)
+ return 'NKChild %s:%s' % (self.name, self.data)
class RefToNKChild(models.Model):
@@ -157,7 +157,7 @@ class RefToNKChild(models.Model):
nk_m2m = models.ManyToManyField(NKChild, related_name='ref_m2ms')
def __unicode__(self):
- return u'%s: Reference to %s [%s]' % (
+ return '%s: Reference to %s [%s]' % (
self.text,
self.nk_fk,
', '.join(str(o) for o in self.nk_m2m.all())
diff --git a/tests/regressiontests/fixtures_regress/tests.py b/tests/regressiontests/fixtures_regress/tests.py
index c0b811bea2..405c566826 100644
--- a/tests/regressiontests/fixtures_regress/tests.py
+++ b/tests/regressiontests/fixtures_regress/tests.py
@@ -1,6 +1,6 @@
# -*- coding: utf-8 -*-
# Unittests for fixtures.
-from __future__ import absolute_import
+from __future__ import absolute_import, unicode_literals
import os
import re
@@ -85,7 +85,7 @@ class TestFixtures(TestCase):
verbosity=0,
commit=False
)
- self.assertEqual(Stuff.objects.all()[0].name, u'')
+ self.assertEqual(Stuff.objects.all()[0].name, '')
self.assertEqual(Stuff.objects.all()[0].owner, None)
def test_absolute_path(self):
diff --git a/tests/regressiontests/forms/models.py b/tests/regressiontests/forms/models.py
index 939055785a..18e6ddce6d 100644
--- a/tests/regressiontests/forms/models.py
+++ b/tests/regressiontests/forms/models.py
@@ -1,4 +1,6 @@
# -*- coding: utf-8 -*-
+from __future__ import unicode_literals
+
import os
import datetime
import tempfile
@@ -43,7 +45,7 @@ class ChoiceOptionModel(models.Model):
ordering = ('name',)
def __unicode__(self):
- return u'ChoiceOption %d' % self.pk
+ return 'ChoiceOption %d' % self.pk
class ChoiceFieldModel(models.Model):
@@ -68,7 +70,7 @@ class Group(models.Model):
name = models.CharField(max_length=10)
def __unicode__(self):
- return u'%s' % self.name
+ return '%s' % self.name
class Cheese(models.Model):
diff --git a/tests/regressiontests/forms/tests/error_messages.py b/tests/regressiontests/forms/tests/error_messages.py
index 7153a3b0a6..f69b419483 100644
--- a/tests/regressiontests/forms/tests/error_messages.py
+++ b/tests/regressiontests/forms/tests/error_messages.py
@@ -1,6 +1,5 @@
# -*- coding: utf-8 -*-
-
-from __future__ import absolute_import
+from __future__ import absolute_import, unicode_literals
from django.core.files.uploadedfile import SimpleUploadedFile
from django.forms import *
@@ -24,9 +23,9 @@ class FormsErrorMessagesTestCase(TestCase, AssertFormErrorsMixin):
'max_length': 'LENGTH %(show_value)s, MAX LENGTH %(limit_value)s',
}
f = CharField(min_length=5, max_length=10, error_messages=e)
- self.assertFormErrors([u'REQUIRED'], f.clean, '')
- self.assertFormErrors([u'LENGTH 4, MIN LENGTH 5'], f.clean, '1234')
- self.assertFormErrors([u'LENGTH 11, MAX LENGTH 10'], f.clean, '12345678901')
+ self.assertFormErrors(['REQUIRED'], f.clean, '')
+ self.assertFormErrors(['LENGTH 4, MIN LENGTH 5'], f.clean, '1234')
+ self.assertFormErrors(['LENGTH 11, MAX LENGTH 10'], f.clean, '12345678901')
def test_integerfield(self):
e = {
@@ -36,10 +35,10 @@ class FormsErrorMessagesTestCase(TestCase, AssertFormErrorsMixin):
'max_value': 'MAX VALUE IS %(limit_value)s',
}
f = IntegerField(min_value=5, max_value=10, error_messages=e)
- self.assertFormErrors([u'REQUIRED'], f.clean, '')
- self.assertFormErrors([u'INVALID'], f.clean, 'abc')
- self.assertFormErrors([u'MIN VALUE IS 5'], f.clean, '4')
- self.assertFormErrors([u'MAX VALUE IS 10'], f.clean, '11')
+ self.assertFormErrors(['REQUIRED'], f.clean, '')
+ self.assertFormErrors(['INVALID'], f.clean, 'abc')
+ self.assertFormErrors(['MIN VALUE IS 5'], f.clean, '4')
+ self.assertFormErrors(['MAX VALUE IS 10'], f.clean, '11')
def test_floatfield(self):
e = {
@@ -49,10 +48,10 @@ class FormsErrorMessagesTestCase(TestCase, AssertFormErrorsMixin):
'max_value': 'MAX VALUE IS %(limit_value)s',
}
f = FloatField(min_value=5, max_value=10, error_messages=e)
- self.assertFormErrors([u'REQUIRED'], f.clean, '')
- self.assertFormErrors([u'INVALID'], f.clean, 'abc')
- self.assertFormErrors([u'MIN VALUE IS 5'], f.clean, '4')
- self.assertFormErrors([u'MAX VALUE IS 10'], f.clean, '11')
+ self.assertFormErrors(['REQUIRED'], f.clean, '')
+ self.assertFormErrors(['INVALID'], f.clean, 'abc')
+ self.assertFormErrors(['MIN VALUE IS 5'], f.clean, '4')
+ self.assertFormErrors(['MAX VALUE IS 10'], f.clean, '11')
def test_decimalfield(self):
e = {
@@ -65,15 +64,15 @@ class FormsErrorMessagesTestCase(TestCase, AssertFormErrorsMixin):
'max_whole_digits': 'MAX DIGITS BEFORE DP IS %s',
}
f = DecimalField(min_value=5, max_value=10, error_messages=e)
- self.assertFormErrors([u'REQUIRED'], f.clean, '')
- self.assertFormErrors([u'INVALID'], f.clean, 'abc')
- self.assertFormErrors([u'MIN VALUE IS 5'], f.clean, '4')
- self.assertFormErrors([u'MAX VALUE IS 10'], f.clean, '11')
+ self.assertFormErrors(['REQUIRED'], f.clean, '')
+ self.assertFormErrors(['INVALID'], f.clean, 'abc')
+ self.assertFormErrors(['MIN VALUE IS 5'], f.clean, '4')
+ self.assertFormErrors(['MAX VALUE IS 10'], f.clean, '11')
f2 = DecimalField(max_digits=4, decimal_places=2, error_messages=e)
- self.assertFormErrors([u'MAX DIGITS IS 4'], f2.clean, '123.45')
- self.assertFormErrors([u'MAX DP IS 2'], f2.clean, '1.234')
- self.assertFormErrors([u'MAX DIGITS BEFORE DP IS 2'], f2.clean, '123.4')
+ self.assertFormErrors(['MAX DIGITS IS 4'], f2.clean, '123.45')
+ self.assertFormErrors(['MAX DP IS 2'], f2.clean, '1.234')
+ self.assertFormErrors(['MAX DIGITS BEFORE DP IS 2'], f2.clean, '123.4')
def test_datefield(self):
e = {
@@ -81,8 +80,8 @@ class FormsErrorMessagesTestCase(TestCase, AssertFormErrorsMixin):
'invalid': 'INVALID',
}
f = DateField(error_messages=e)
- self.assertFormErrors([u'REQUIRED'], f.clean, '')
- self.assertFormErrors([u'INVALID'], f.clean, 'abc')
+ self.assertFormErrors(['REQUIRED'], f.clean, '')
+ self.assertFormErrors(['INVALID'], f.clean, 'abc')
def test_timefield(self):
e = {
@@ -90,8 +89,8 @@ class FormsErrorMessagesTestCase(TestCase, AssertFormErrorsMixin):
'invalid': 'INVALID',
}
f = TimeField(error_messages=e)
- self.assertFormErrors([u'REQUIRED'], f.clean, '')
- self.assertFormErrors([u'INVALID'], f.clean, 'abc')
+ self.assertFormErrors(['REQUIRED'], f.clean, '')
+ self.assertFormErrors(['INVALID'], f.clean, 'abc')
def test_datetimefield(self):
e = {
@@ -99,8 +98,8 @@ class FormsErrorMessagesTestCase(TestCase, AssertFormErrorsMixin):
'invalid': 'INVALID',
}
f = DateTimeField(error_messages=e)
- self.assertFormErrors([u'REQUIRED'], f.clean, '')
- self.assertFormErrors([u'INVALID'], f.clean, 'abc')
+ self.assertFormErrors(['REQUIRED'], f.clean, '')
+ self.assertFormErrors(['INVALID'], f.clean, 'abc')
def test_regexfield(self):
e = {
@@ -110,10 +109,10 @@ class FormsErrorMessagesTestCase(TestCase, AssertFormErrorsMixin):
'max_length': 'LENGTH %(show_value)s, MAX LENGTH %(limit_value)s',
}
f = RegexField(r'^\d+$', min_length=5, max_length=10, error_messages=e)
- self.assertFormErrors([u'REQUIRED'], f.clean, '')
- self.assertFormErrors([u'INVALID'], f.clean, 'abcde')
- self.assertFormErrors([u'LENGTH 4, MIN LENGTH 5'], f.clean, '1234')
- self.assertFormErrors([u'LENGTH 11, MAX LENGTH 10'], f.clean, '12345678901')
+ self.assertFormErrors(['REQUIRED'], f.clean, '')
+ self.assertFormErrors(['INVALID'], f.clean, 'abcde')
+ self.assertFormErrors(['LENGTH 4, MIN LENGTH 5'], f.clean, '1234')
+ self.assertFormErrors(['LENGTH 11, MAX LENGTH 10'], f.clean, '12345678901')
def test_emailfield(self):
e = {
@@ -123,10 +122,10 @@ class FormsErrorMessagesTestCase(TestCase, AssertFormErrorsMixin):
'max_length': 'LENGTH %(show_value)s, MAX LENGTH %(limit_value)s',
}
f = EmailField(min_length=8, max_length=10, error_messages=e)
- self.assertFormErrors([u'REQUIRED'], f.clean, '')
- self.assertFormErrors([u'INVALID'], f.clean, 'abcdefgh')
- self.assertFormErrors([u'LENGTH 7, MIN LENGTH 8'], f.clean, 'a@b.com')
- self.assertFormErrors([u'LENGTH 11, MAX LENGTH 10'], f.clean, 'aye@bee.com')
+ self.assertFormErrors(['REQUIRED'], f.clean, '')
+ self.assertFormErrors(['INVALID'], f.clean, 'abcdefgh')
+ self.assertFormErrors(['LENGTH 7, MIN LENGTH 8'], f.clean, 'a@b.com')
+ self.assertFormErrors(['LENGTH 11, MAX LENGTH 10'], f.clean, 'aye@bee.com')
def test_filefield(self):
e = {
@@ -136,10 +135,10 @@ class FormsErrorMessagesTestCase(TestCase, AssertFormErrorsMixin):
'empty': 'EMPTY FILE',
}
f = FileField(error_messages=e)
- self.assertFormErrors([u'REQUIRED'], f.clean, '')
- self.assertFormErrors([u'INVALID'], f.clean, 'abc')
- self.assertFormErrors([u'EMPTY FILE'], f.clean, SimpleUploadedFile('name', None))
- self.assertFormErrors([u'EMPTY FILE'], f.clean, SimpleUploadedFile('name', ''))
+ self.assertFormErrors(['REQUIRED'], f.clean, '')
+ self.assertFormErrors(['INVALID'], f.clean, 'abc')
+ self.assertFormErrors(['EMPTY FILE'], f.clean, SimpleUploadedFile('name', None))
+ self.assertFormErrors(['EMPTY FILE'], f.clean, SimpleUploadedFile('name', ''))
def test_urlfield(self):
e = {
@@ -147,15 +146,15 @@ class FormsErrorMessagesTestCase(TestCase, AssertFormErrorsMixin):
'invalid': 'INVALID',
}
f = URLField(error_messages=e)
- self.assertFormErrors([u'REQUIRED'], f.clean, '')
- self.assertFormErrors([u'INVALID'], f.clean, 'abc.c')
+ self.assertFormErrors(['REQUIRED'], f.clean, '')
+ self.assertFormErrors(['INVALID'], f.clean, 'abc.c')
def test_booleanfield(self):
e = {
'required': 'REQUIRED',
}
f = BooleanField(error_messages=e)
- self.assertFormErrors([u'REQUIRED'], f.clean, '')
+ self.assertFormErrors(['REQUIRED'], f.clean, '')
def test_choicefield(self):
e = {
@@ -163,8 +162,8 @@ class FormsErrorMessagesTestCase(TestCase, AssertFormErrorsMixin):
'invalid_choice': '%(value)s IS INVALID CHOICE',
}
f = ChoiceField(choices=[('a', 'aye')], error_messages=e)
- self.assertFormErrors([u'REQUIRED'], f.clean, '')
- self.assertFormErrors([u'b IS INVALID CHOICE'], f.clean, 'b')
+ self.assertFormErrors(['REQUIRED'], f.clean, '')
+ self.assertFormErrors(['b IS INVALID CHOICE'], f.clean, 'b')
def test_multiplechoicefield(self):
e = {
@@ -173,9 +172,9 @@ class FormsErrorMessagesTestCase(TestCase, AssertFormErrorsMixin):
'invalid_list': 'NOT A LIST',
}
f = MultipleChoiceField(choices=[('a', 'aye')], error_messages=e)
- self.assertFormErrors([u'REQUIRED'], f.clean, '')
- self.assertFormErrors([u'NOT A LIST'], f.clean, 'b')
- self.assertFormErrors([u'b IS INVALID CHOICE'], f.clean, ['b'])
+ self.assertFormErrors(['REQUIRED'], f.clean, '')
+ self.assertFormErrors(['NOT A LIST'], f.clean, 'b')
+ self.assertFormErrors(['b IS INVALID CHOICE'], f.clean, ['b'])
def test_splitdatetimefield(self):
e = {
@@ -184,8 +183,8 @@ class FormsErrorMessagesTestCase(TestCase, AssertFormErrorsMixin):
'invalid_time': 'INVALID TIME',
}
f = SplitDateTimeField(error_messages=e)
- self.assertFormErrors([u'REQUIRED'], f.clean, '')
- self.assertFormErrors([u'INVALID DATE', u'INVALID TIME'], f.clean, ['a', 'b'])
+ self.assertFormErrors(['REQUIRED'], f.clean, '')
+ self.assertFormErrors(['INVALID DATE', 'INVALID TIME'], f.clean, ['a', 'b'])
def test_ipaddressfield(self):
e = {
@@ -193,8 +192,8 @@ class FormsErrorMessagesTestCase(TestCase, AssertFormErrorsMixin):
'invalid': 'INVALID IP ADDRESS',
}
f = IPAddressField(error_messages=e)
- self.assertFormErrors([u'REQUIRED'], f.clean, '')
- self.assertFormErrors([u'INVALID IP ADDRESS'], f.clean, '127.0.0')
+ self.assertFormErrors(['REQUIRED'], f.clean, '')
+ self.assertFormErrors(['INVALID IP ADDRESS'], f.clean, '127.0.0')
def test_generic_ipaddressfield(self):
e = {
@@ -202,8 +201,8 @@ class FormsErrorMessagesTestCase(TestCase, AssertFormErrorsMixin):
'invalid': 'INVALID IP ADDRESS',
}
f = GenericIPAddressField(error_messages=e)
- self.assertFormErrors([u'REQUIRED'], f.clean, '')
- self.assertFormErrors([u'INVALID IP ADDRESS'], f.clean, '127.0.0')
+ self.assertFormErrors(['REQUIRED'], f.clean, '')
+ self.assertFormErrors(['INVALID IP ADDRESS'], f.clean, '127.0.0')
def test_subclassing_errorlist(self):
class TestForm(Form):
@@ -219,8 +218,8 @@ class FormsErrorMessagesTestCase(TestCase, AssertFormErrorsMixin):
return self.as_divs()
def as_divs(self):
- if not self: return u''
- return mark_safe(u'<div class="error">%s</div>' % ''.join([u'<p>%s</p>' % e for e in self]))
+ if not self: return ''
+ return mark_safe('<div class="error">%s</div>' % ''.join(['<p>%s</p>' % e for e in self]))
# This form should print errors the default way.
form1 = TestForm({'first_name': 'John'})
@@ -247,8 +246,8 @@ class ModelChoiceFieldErrorMessagesTestCase(TestCase, AssertFormErrorsMixin):
'invalid_choice': 'INVALID CHOICE',
}
f = ModelChoiceField(queryset=ChoiceModel.objects.all(), error_messages=e)
- self.assertFormErrors([u'REQUIRED'], f.clean, '')
- self.assertFormErrors([u'INVALID CHOICE'], f.clean, '4')
+ self.assertFormErrors(['REQUIRED'], f.clean, '')
+ self.assertFormErrors(['INVALID CHOICE'], f.clean, '4')
# ModelMultipleChoiceField
e = {
@@ -257,6 +256,6 @@ class ModelChoiceFieldErrorMessagesTestCase(TestCase, AssertFormErrorsMixin):
'list': 'NOT A LIST OF VALUES',
}
f = ModelMultipleChoiceField(queryset=ChoiceModel.objects.all(), error_messages=e)
- self.assertFormErrors([u'REQUIRED'], f.clean, '')
- self.assertFormErrors([u'NOT A LIST OF VALUES'], f.clean, '3')
- self.assertFormErrors([u'4 IS INVALID CHOICE'], f.clean, ['4'])
+ self.assertFormErrors(['REQUIRED'], f.clean, '')
+ self.assertFormErrors(['NOT A LIST OF VALUES'], f.clean, '3')
+ self.assertFormErrors(['4 IS INVALID CHOICE'], f.clean, ['4'])
diff --git a/tests/regressiontests/forms/tests/extra.py b/tests/regressiontests/forms/tests/extra.py
index c873af7a8c..25b21123c4 100644
--- a/tests/regressiontests/forms/tests/extra.py
+++ b/tests/regressiontests/forms/tests/extra.py
@@ -1,6 +1,5 @@
# -*- coding: utf-8 -*-
-
-from __future__ import absolute_import
+from __future__ import absolute_import, unicode_literals
import datetime
@@ -366,7 +365,7 @@ class FormsExtraTestCase(TestCase, AssertFormErrorsMixin):
# Invalid dates shouldn't be allowed
c = GetDate({'mydate_month':'2', 'mydate_day':'31', 'mydate_year':'2010'})
self.assertFalse(c.is_valid())
- self.assertEqual(c.errors, {'mydate': [u'Enter a valid date.']})
+ self.assertEqual(c.errors, {'mydate': ['Enter a valid date.']})
# label tag is correctly associated with month dropdown
d = GetDate({'mydate_month':'1', 'mydate_day':'1', 'mydate_year':'2010'})
@@ -395,7 +394,7 @@ class FormsExtraTestCase(TestCase, AssertFormErrorsMixin):
return [None, None, None]
def format_output(self, rendered_widgets):
- return u'\n'.join(rendered_widgets)
+ return '\n'.join(rendered_widgets)
w = ComplexMultiWidget()
self.assertHTMLEqual(w.render('name', 'some text,JP,2007-04-25 06:24:00'), """<input type="text" name="name_0" value="some text" />
@@ -422,11 +421,11 @@ class FormsExtraTestCase(TestCase, AssertFormErrorsMixin):
return None
f = ComplexField(widget=w)
- self.assertEqual(f.clean(['some text', ['J','P'], ['2007-04-25','6:24:00']]), u'some text,JP,2007-04-25 06:24:00')
- self.assertFormErrors([u'Select a valid choice. X is not one of the available choices.'], f.clean, ['some text',['X'], ['2007-04-25','6:24:00']])
+ self.assertEqual(f.clean(['some text', ['J','P'], ['2007-04-25','6:24:00']]), 'some text,JP,2007-04-25 06:24:00')
+ self.assertFormErrors(['Select a valid choice. X is not one of the available choices.'], f.clean, ['some text',['X'], ['2007-04-25','6:24:00']])
# If insufficient data is provided, None is substituted
- self.assertFormErrors([u'This field is required.'], f.clean, ['some text',['JP']])
+ self.assertFormErrors(['This field is required.'], f.clean, ['some text',['JP']])
class ComplexFieldForm(Form):
field1 = ComplexField(widget=w)
@@ -451,26 +450,26 @@ class FormsExtraTestCase(TestCase, AssertFormErrorsMixin):
</select>
<input type="text" name="field1_2_0" value="2007-04-25" id="id_field1_2_0" /><input type="text" name="field1_2_1" value="06:24:00" id="id_field1_2_1" /></td></tr>""")
- self.assertEqual(f.cleaned_data['field1'], u'some text,JP,2007-04-25 06:24:00')
+ self.assertEqual(f.cleaned_data['field1'], 'some text,JP,2007-04-25 06:24:00')
def test_ipaddress(self):
f = IPAddressField()
- self.assertFormErrors([u'This field is required.'], f.clean, '')
- self.assertFormErrors([u'This field is required.'], f.clean, None)
- self.assertEqual(f.clean('127.0.0.1'), u'127.0.0.1')
- self.assertFormErrors([u'Enter a valid IPv4 address.'], f.clean, 'foo')
- self.assertFormErrors([u'Enter a valid IPv4 address.'], f.clean, '127.0.0.')
- self.assertFormErrors([u'Enter a valid IPv4 address.'], f.clean, '1.2.3.4.5')
- self.assertFormErrors([u'Enter a valid IPv4 address.'], f.clean, '256.125.1.5')
+ self.assertFormErrors(['This field is required.'], f.clean, '')
+ self.assertFormErrors(['This field is required.'], f.clean, None)
+ self.assertEqual(f.clean('127.0.0.1'), '127.0.0.1')
+ self.assertFormErrors(['Enter a valid IPv4 address.'], f.clean, 'foo')
+ self.assertFormErrors(['Enter a valid IPv4 address.'], f.clean, '127.0.0.')
+ self.assertFormErrors(['Enter a valid IPv4 address.'], f.clean, '1.2.3.4.5')
+ self.assertFormErrors(['Enter a valid IPv4 address.'], f.clean, '256.125.1.5')
f = IPAddressField(required=False)
- self.assertEqual(f.clean(''), u'')
- self.assertEqual(f.clean(None), u'')
- self.assertEqual(f.clean('127.0.0.1'), u'127.0.0.1')
- self.assertFormErrors([u'Enter a valid IPv4 address.'], f.clean, 'foo')
- self.assertFormErrors([u'Enter a valid IPv4 address.'], f.clean, '127.0.0.')
- self.assertFormErrors([u'Enter a valid IPv4 address.'], f.clean, '1.2.3.4.5')
- self.assertFormErrors([u'Enter a valid IPv4 address.'], f.clean, '256.125.1.5')
+ self.assertEqual(f.clean(''), '')
+ self.assertEqual(f.clean(None), '')
+ self.assertEqual(f.clean('127.0.0.1'), '127.0.0.1')
+ self.assertFormErrors(['Enter a valid IPv4 address.'], f.clean, 'foo')
+ self.assertFormErrors(['Enter a valid IPv4 address.'], f.clean, '127.0.0.')
+ self.assertFormErrors(['Enter a valid IPv4 address.'], f.clean, '1.2.3.4.5')
+ self.assertFormErrors(['Enter a valid IPv4 address.'], f.clean, '256.125.1.5')
def test_generic_ipaddress_invalid_arguments(self):
self.assertRaises(ValueError, GenericIPAddressField, protocol="hamster")
@@ -480,93 +479,93 @@ class FormsExtraTestCase(TestCase, AssertFormErrorsMixin):
# The edge cases of the IPv6 validation code are not deeply tested
# here, they are covered in the tests for django.utils.ipv6
f = GenericIPAddressField()
- self.assertFormErrors([u'This field is required.'], f.clean, '')
- self.assertFormErrors([u'This field is required.'], f.clean, None)
- self.assertEqual(f.clean('127.0.0.1'), u'127.0.0.1')
- self.assertFormErrors([u'Enter a valid IPv4 or IPv6 address.'], f.clean, 'foo')
- self.assertFormErrors([u'Enter a valid IPv4 or IPv6 address.'], f.clean, '127.0.0.')
- self.assertFormErrors([u'Enter a valid IPv4 or IPv6 address.'], f.clean, '1.2.3.4.5')
- self.assertFormErrors([u'Enter a valid IPv4 or IPv6 address.'], f.clean, '256.125.1.5')
- self.assertEqual(f.clean('fe80::223:6cff:fe8a:2e8a'), u'fe80::223:6cff:fe8a:2e8a')
- self.assertEqual(f.clean('2a02::223:6cff:fe8a:2e8a'), u'2a02::223:6cff:fe8a:2e8a')
- self.assertFormErrors([u'Enter a valid IPv4 or IPv6 address.'], f.clean, '12345:2:3:4')
- self.assertFormErrors([u'Enter a valid IPv4 or IPv6 address.'], f.clean, '1::2:3::4')
- self.assertFormErrors([u'Enter a valid IPv4 or IPv6 address.'], f.clean, 'foo::223:6cff:fe8a:2e8a')
- self.assertFormErrors([u'Enter a valid IPv4 or IPv6 address.'], f.clean, '1::2:3:4:5:6:7:8')
- self.assertFormErrors([u'Enter a valid IPv4 or IPv6 address.'], f.clean, '1:2')
+ self.assertFormErrors(['This field is required.'], f.clean, '')
+ self.assertFormErrors(['This field is required.'], f.clean, None)
+ self.assertEqual(f.clean('127.0.0.1'), '127.0.0.1')
+ self.assertFormErrors(['Enter a valid IPv4 or IPv6 address.'], f.clean, 'foo')
+ self.assertFormErrors(['Enter a valid IPv4 or IPv6 address.'], f.clean, '127.0.0.')
+ self.assertFormErrors(['Enter a valid IPv4 or IPv6 address.'], f.clean, '1.2.3.4.5')
+ self.assertFormErrors(['Enter a valid IPv4 or IPv6 address.'], f.clean, '256.125.1.5')
+ self.assertEqual(f.clean('fe80::223:6cff:fe8a:2e8a'), 'fe80::223:6cff:fe8a:2e8a')
+ self.assertEqual(f.clean('2a02::223:6cff:fe8a:2e8a'), '2a02::223:6cff:fe8a:2e8a')
+ self.assertFormErrors(['Enter a valid IPv4 or IPv6 address.'], f.clean, '12345:2:3:4')
+ self.assertFormErrors(['Enter a valid IPv4 or IPv6 address.'], f.clean, '1::2:3::4')
+ self.assertFormErrors(['Enter a valid IPv4 or IPv6 address.'], f.clean, 'foo::223:6cff:fe8a:2e8a')
+ self.assertFormErrors(['Enter a valid IPv4 or IPv6 address.'], f.clean, '1::2:3:4:5:6:7:8')
+ self.assertFormErrors(['Enter a valid IPv4 or IPv6 address.'], f.clean, '1:2')
def test_generic_ipaddress_as_ipv4_only(self):
f = GenericIPAddressField(protocol="IPv4")
- self.assertFormErrors([u'This field is required.'], f.clean, '')
- self.assertFormErrors([u'This field is required.'], f.clean, None)
- self.assertEqual(f.clean('127.0.0.1'), u'127.0.0.1')
- self.assertFormErrors([u'Enter a valid IPv4 address.'], f.clean, 'foo')
- self.assertFormErrors([u'Enter a valid IPv4 address.'], f.clean, '127.0.0.')
- self.assertFormErrors([u'Enter a valid IPv4 address.'], f.clean, '1.2.3.4.5')
- self.assertFormErrors([u'Enter a valid IPv4 address.'], f.clean, '256.125.1.5')
- self.assertFormErrors([u'Enter a valid IPv4 address.'], f.clean, 'fe80::223:6cff:fe8a:2e8a')
- self.assertFormErrors([u'Enter a valid IPv4 address.'], f.clean, '2a02::223:6cff:fe8a:2e8a')
+ self.assertFormErrors(['This field is required.'], f.clean, '')
+ self.assertFormErrors(['This field is required.'], f.clean, None)
+ self.assertEqual(f.clean('127.0.0.1'), '127.0.0.1')
+ self.assertFormErrors(['Enter a valid IPv4 address.'], f.clean, 'foo')
+ self.assertFormErrors(['Enter a valid IPv4 address.'], f.clean, '127.0.0.')
+ self.assertFormErrors(['Enter a valid IPv4 address.'], f.clean, '1.2.3.4.5')
+ self.assertFormErrors(['Enter a valid IPv4 address.'], f.clean, '256.125.1.5')
+ self.assertFormErrors(['Enter a valid IPv4 address.'], f.clean, 'fe80::223:6cff:fe8a:2e8a')
+ self.assertFormErrors(['Enter a valid IPv4 address.'], f.clean, '2a02::223:6cff:fe8a:2e8a')
def test_generic_ipaddress_as_ipv6_only(self):
f = GenericIPAddressField(protocol="IPv6")
- self.assertFormErrors([u'This field is required.'], f.clean, '')
- self.assertFormErrors([u'This field is required.'], f.clean, None)
- self.assertFormErrors([u'Enter a valid IPv6 address.'], f.clean, '127.0.0.1')
- self.assertFormErrors([u'Enter a valid IPv6 address.'], f.clean, 'foo')
- self.assertFormErrors([u'Enter a valid IPv6 address.'], f.clean, '127.0.0.')
- self.assertFormErrors([u'Enter a valid IPv6 address.'], f.clean, '1.2.3.4.5')
- self.assertFormErrors([u'Enter a valid IPv6 address.'], f.clean, '256.125.1.5')
- self.assertEqual(f.clean('fe80::223:6cff:fe8a:2e8a'), u'fe80::223:6cff:fe8a:2e8a')
- self.assertEqual(f.clean('2a02::223:6cff:fe8a:2e8a'), u'2a02::223:6cff:fe8a:2e8a')
- self.assertFormErrors([u'Enter a valid IPv6 address.'], f.clean, '12345:2:3:4')
- self.assertFormErrors([u'Enter a valid IPv6 address.'], f.clean, '1::2:3::4')
- self.assertFormErrors([u'Enter a valid IPv6 address.'], f.clean, 'foo::223:6cff:fe8a:2e8a')
- self.assertFormErrors([u'Enter a valid IPv6 address.'], f.clean, '1::2:3:4:5:6:7:8')
- self.assertFormErrors([u'Enter a valid IPv6 address.'], f.clean, '1:2')
+ self.assertFormErrors(['This field is required.'], f.clean, '')
+ self.assertFormErrors(['This field is required.'], f.clean, None)
+ self.assertFormErrors(['Enter a valid IPv6 address.'], f.clean, '127.0.0.1')
+ self.assertFormErrors(['Enter a valid IPv6 address.'], f.clean, 'foo')
+ self.assertFormErrors(['Enter a valid IPv6 address.'], f.clean, '127.0.0.')
+ self.assertFormErrors(['Enter a valid IPv6 address.'], f.clean, '1.2.3.4.5')
+ self.assertFormErrors(['Enter a valid IPv6 address.'], f.clean, '256.125.1.5')
+ self.assertEqual(f.clean('fe80::223:6cff:fe8a:2e8a'), 'fe80::223:6cff:fe8a:2e8a')
+ self.assertEqual(f.clean('2a02::223:6cff:fe8a:2e8a'), '2a02::223:6cff:fe8a:2e8a')
+ self.assertFormErrors(['Enter a valid IPv6 address.'], f.clean, '12345:2:3:4')
+ self.assertFormErrors(['Enter a valid IPv6 address.'], f.clean, '1::2:3::4')
+ self.assertFormErrors(['Enter a valid IPv6 address.'], f.clean, 'foo::223:6cff:fe8a:2e8a')
+ self.assertFormErrors(['Enter a valid IPv6 address.'], f.clean, '1::2:3:4:5:6:7:8')
+ self.assertFormErrors(['Enter a valid IPv6 address.'], f.clean, '1:2')
def test_generic_ipaddress_as_generic_not_required(self):
f = GenericIPAddressField(required=False)
- self.assertEqual(f.clean(''), u'')
- self.assertEqual(f.clean(None), u'')
- self.assertEqual(f.clean('127.0.0.1'), u'127.0.0.1')
- self.assertFormErrors([u'Enter a valid IPv4 or IPv6 address.'], f.clean, 'foo')
- self.assertFormErrors([u'Enter a valid IPv4 or IPv6 address.'], f.clean, '127.0.0.')
- self.assertFormErrors([u'Enter a valid IPv4 or IPv6 address.'], f.clean, '1.2.3.4.5')
- self.assertFormErrors([u'Enter a valid IPv4 or IPv6 address.'], f.clean, '256.125.1.5')
- self.assertEqual(f.clean('fe80::223:6cff:fe8a:2e8a'), u'fe80::223:6cff:fe8a:2e8a')
- self.assertEqual(f.clean('2a02::223:6cff:fe8a:2e8a'), u'2a02::223:6cff:fe8a:2e8a')
- self.assertFormErrors([u'Enter a valid IPv4 or IPv6 address.'], f.clean, '12345:2:3:4')
- self.assertFormErrors([u'Enter a valid IPv4 or IPv6 address.'], f.clean, '1::2:3::4')
- self.assertFormErrors([u'Enter a valid IPv4 or IPv6 address.'], f.clean, 'foo::223:6cff:fe8a:2e8a')
- self.assertFormErrors([u'Enter a valid IPv4 or IPv6 address.'], f.clean, '1::2:3:4:5:6:7:8')
- self.assertFormErrors([u'Enter a valid IPv4 or IPv6 address.'], f.clean, '1:2')
+ self.assertEqual(f.clean(''), '')
+ self.assertEqual(f.clean(None), '')
+ self.assertEqual(f.clean('127.0.0.1'), '127.0.0.1')
+ self.assertFormErrors(['Enter a valid IPv4 or IPv6 address.'], f.clean, 'foo')
+ self.assertFormErrors(['Enter a valid IPv4 or IPv6 address.'], f.clean, '127.0.0.')
+ self.assertFormErrors(['Enter a valid IPv4 or IPv6 address.'], f.clean, '1.2.3.4.5')
+ self.assertFormErrors(['Enter a valid IPv4 or IPv6 address.'], f.clean, '256.125.1.5')
+ self.assertEqual(f.clean('fe80::223:6cff:fe8a:2e8a'), 'fe80::223:6cff:fe8a:2e8a')
+ self.assertEqual(f.clean('2a02::223:6cff:fe8a:2e8a'), '2a02::223:6cff:fe8a:2e8a')
+ self.assertFormErrors(['Enter a valid IPv4 or IPv6 address.'], f.clean, '12345:2:3:4')
+ self.assertFormErrors(['Enter a valid IPv4 or IPv6 address.'], f.clean, '1::2:3::4')
+ self.assertFormErrors(['Enter a valid IPv4 or IPv6 address.'], f.clean, 'foo::223:6cff:fe8a:2e8a')
+ self.assertFormErrors(['Enter a valid IPv4 or IPv6 address.'], f.clean, '1::2:3:4:5:6:7:8')
+ self.assertFormErrors(['Enter a valid IPv4 or IPv6 address.'], f.clean, '1:2')
def test_generic_ipaddress_normalization(self):
# Test the normalising code
f = GenericIPAddressField()
- self.assertEqual(f.clean('::ffff:0a0a:0a0a'), u'::ffff:10.10.10.10')
- self.assertEqual(f.clean('::ffff:10.10.10.10'), u'::ffff:10.10.10.10')
- self.assertEqual(f.clean('2001:000:a:0000:0:fe:fe:beef'), u'2001:0:a::fe:fe:beef')
- self.assertEqual(f.clean('2001::a:0000:0:fe:fe:beef'), u'2001:0:a::fe:fe:beef')
+ self.assertEqual(f.clean('::ffff:0a0a:0a0a'), '::ffff:10.10.10.10')
+ self.assertEqual(f.clean('::ffff:10.10.10.10'), '::ffff:10.10.10.10')
+ self.assertEqual(f.clean('2001:000:a:0000:0:fe:fe:beef'), '2001:0:a::fe:fe:beef')
+ self.assertEqual(f.clean('2001::a:0000:0:fe:fe:beef'), '2001:0:a::fe:fe:beef')
f = GenericIPAddressField(unpack_ipv4=True)
- self.assertEqual(f.clean('::ffff:0a0a:0a0a'), u'10.10.10.10')
+ self.assertEqual(f.clean('::ffff:0a0a:0a0a'), '10.10.10.10')
def test_smart_unicode(self):
class Test:
def __str__(self):
- return 'ŠĐĆŽćžšđ'
+ return b'ŠĐĆŽćžšđ'
class TestU:
def __str__(self):
return 'Foo'
def __unicode__(self):
- return u'\u0160\u0110\u0106\u017d\u0107\u017e\u0161\u0111'
+ return '\u0160\u0110\u0106\u017d\u0107\u017e\u0161\u0111'
- self.assertEqual(smart_unicode(Test()), u'\u0160\u0110\u0106\u017d\u0107\u017e\u0161\u0111')
- self.assertEqual(smart_unicode(TestU()), u'\u0160\u0110\u0106\u017d\u0107\u017e\u0161\u0111')
- self.assertEqual(smart_unicode(1), u'1')
- self.assertEqual(smart_unicode('foo'), u'foo')
+ self.assertEqual(smart_unicode(Test()), '\u0160\u0110\u0106\u017d\u0107\u017e\u0161\u0111')
+ self.assertEqual(smart_unicode(TestU()), '\u0160\u0110\u0106\u017d\u0107\u017e\u0161\u0111')
+ self.assertEqual(smart_unicode(1), '1')
+ self.assertEqual(smart_unicode('foo'), 'foo')
def test_accessing_clean(self):
class UserForm(Form):
@@ -583,7 +582,7 @@ class FormsExtraTestCase(TestCase, AssertFormErrorsMixin):
f = UserForm({'username': 'SirRobin', 'password': 'blue'})
self.assertTrue(f.is_valid())
- self.assertEqual(f.cleaned_data['username'], u'sirrobin')
+ self.assertEqual(f.cleaned_data['username'], 'sirrobin')
def test_overriding_errorlist(self):
class DivErrorList(ErrorList):
@@ -591,8 +590,8 @@ class FormsExtraTestCase(TestCase, AssertFormErrorsMixin):
return self.as_divs()
def as_divs(self):
- if not self: return u''
- return u'<div class="errorlist">%s</div>' % ''.join([u'<div class="error">%s</div>' % force_unicode(e) for e in self])
+ if not self: return ''
+ return '<div class="errorlist">%s</div>' % ''.join(['<div class="error">%s</div>' % force_unicode(e) for e in self])
class CommentForm(Form):
name = CharField(max_length=50, required=False)
@@ -774,7 +773,7 @@ class FormsExtraL10NTestCase(TestCase):
a = GetDate({'mydate_month':'2', 'mydate_day':'31', 'mydate_year':'2010'})
self.assertFalse(a.is_valid())
# 'Geef een geldige datum op.' = 'Enter a valid date.'
- self.assertEqual(a.errors, {'mydate': [u'Geef een geldige datum op.']})
+ self.assertEqual(a.errors, {'mydate': ['Geef een geldige datum op.']})
def test_form_label_association(self):
# label tag is correctly associated with first rendered dropdown
diff --git a/tests/regressiontests/forms/tests/fields.py b/tests/regressiontests/forms/tests/fields.py
index 4d442de382..ebeb19c8fc 100644
--- a/tests/regressiontests/forms/tests/fields.py
+++ b/tests/regressiontests/forms/tests/fields.py
@@ -24,6 +24,8 @@ Each Field's __init__() takes at least these parameters:
Other than that, the Field subclasses have class-specific options for
__init__(). For example, CharField has a max_length option.
"""
+from __future__ import unicode_literals
+
import datetime
import pickle
import re
@@ -56,47 +58,47 @@ class FieldsTests(SimpleTestCase):
def test_charfield_1(self):
f = CharField()
- self.assertEqual(u'1', f.clean(1))
- self.assertEqual(u'hello', f.clean('hello'))
- self.assertRaisesMessage(ValidationError, "[u'This field is required.']", f.clean, None)
- self.assertRaisesMessage(ValidationError, "[u'This field is required.']", f.clean, '')
- self.assertEqual(u'[1, 2, 3]', f.clean([1, 2, 3]))
+ self.assertEqual('1', f.clean(1))
+ self.assertEqual('hello', f.clean('hello'))
+ self.assertRaisesMessage(ValidationError, "'This field is required.'", f.clean, None)
+ self.assertRaisesMessage(ValidationError, "'This field is required.'", f.clean, '')
+ self.assertEqual('[1, 2, 3]', f.clean([1, 2, 3]))
self.assertEqual(f.max_length, None)
self.assertEqual(f.min_length, None)
def test_charfield_2(self):
f = CharField(required=False)
- self.assertEqual(u'1', f.clean(1))
- self.assertEqual(u'hello', f.clean('hello'))
- self.assertEqual(u'', f.clean(None))
- self.assertEqual(u'', f.clean(''))
- self.assertEqual(u'[1, 2, 3]', f.clean([1, 2, 3]))
+ self.assertEqual('1', f.clean(1))
+ self.assertEqual('hello', f.clean('hello'))
+ self.assertEqual('', f.clean(None))
+ self.assertEqual('', f.clean(''))
+ self.assertEqual('[1, 2, 3]', f.clean([1, 2, 3]))
self.assertEqual(f.max_length, None)
self.assertEqual(f.min_length, None)
def test_charfield_3(self):
f = CharField(max_length=10, required=False)
- self.assertEqual(u'12345', f.clean('12345'))
- self.assertEqual(u'1234567890', f.clean('1234567890'))
- self.assertRaisesMessage(ValidationError, "[u'Ensure this value has at most 10 characters (it has 11).']", f.clean, '1234567890a')
+ self.assertEqual('12345', f.clean('12345'))
+ self.assertEqual('1234567890', f.clean('1234567890'))
+ self.assertRaisesMessage(ValidationError, "'Ensure this value has at most 10 characters (it has 11).'", f.clean, '1234567890a')
self.assertEqual(f.max_length, 10)
self.assertEqual(f.min_length, None)
def test_charfield_4(self):
f = CharField(min_length=10, required=False)
- self.assertEqual(u'', f.clean(''))
- self.assertRaisesMessage(ValidationError, "[u'Ensure this value has at least 10 characters (it has 5).']", f.clean, '12345')
- self.assertEqual(u'1234567890', f.clean('1234567890'))
- self.assertEqual(u'1234567890a', f.clean('1234567890a'))
+ self.assertEqual('', f.clean(''))
+ self.assertRaisesMessage(ValidationError, "'Ensure this value has at least 10 characters (it has 5).'", f.clean, '12345')
+ self.assertEqual('1234567890', f.clean('1234567890'))
+ self.assertEqual('1234567890a', f.clean('1234567890a'))
self.assertEqual(f.max_length, None)
self.assertEqual(f.min_length, 10)
def test_charfield_5(self):
f = CharField(min_length=10, required=True)
- self.assertRaisesMessage(ValidationError, "[u'This field is required.']", f.clean, '')
- self.assertRaisesMessage(ValidationError, "[u'Ensure this value has at least 10 characters (it has 5).']", f.clean, '12345')
- self.assertEqual(u'1234567890', f.clean('1234567890'))
- self.assertEqual(u'1234567890a', f.clean('1234567890a'))
+ self.assertRaisesMessage(ValidationError, "'This field is required.'", f.clean, '')
+ self.assertRaisesMessage(ValidationError, "'Ensure this value has at least 10 characters (it has 5).'", f.clean, '12345')
+ self.assertEqual('1234567890', f.clean('1234567890'))
+ self.assertEqual('1234567890a', f.clean('1234567890a'))
self.assertEqual(f.max_length, None)
self.assertEqual(f.min_length, 10)
@@ -121,18 +123,18 @@ class FieldsTests(SimpleTestCase):
def test_integerfield_1(self):
f = IntegerField()
- self.assertRaisesMessage(ValidationError, "[u'This field is required.']", f.clean, '')
- self.assertRaisesMessage(ValidationError, "[u'This field is required.']", f.clean, None)
+ self.assertRaisesMessage(ValidationError, "'This field is required.'", f.clean, '')
+ self.assertRaisesMessage(ValidationError, "'This field is required.'", f.clean, None)
self.assertEqual(1, f.clean('1'))
self.assertEqual(True, isinstance(f.clean('1'), int))
self.assertEqual(23, f.clean('23'))
- self.assertRaisesMessage(ValidationError, "[u'Enter a whole number.']", f.clean, 'a')
+ self.assertRaisesMessage(ValidationError, "'Enter a whole number.'", f.clean, 'a')
self.assertEqual(42, f.clean(42))
- self.assertRaisesMessage(ValidationError, "[u'Enter a whole number.']", f.clean, 3.14)
+ self.assertRaisesMessage(ValidationError, "'Enter a whole number.'", f.clean, 3.14)
self.assertEqual(1, f.clean('1 '))
self.assertEqual(1, f.clean(' 1'))
self.assertEqual(1, f.clean(' 1 '))
- self.assertRaisesMessage(ValidationError, "[u'Enter a whole number.']", f.clean, '1a')
+ self.assertRaisesMessage(ValidationError, "'Enter a whole number.'", f.clean, '1a')
self.assertEqual(f.max_value, None)
self.assertEqual(f.min_value, None)
@@ -145,29 +147,29 @@ class FieldsTests(SimpleTestCase):
self.assertEqual(1, f.clean('1'))
self.assertEqual(True, isinstance(f.clean('1'), int))
self.assertEqual(23, f.clean('23'))
- self.assertRaisesMessage(ValidationError, "[u'Enter a whole number.']", f.clean, 'a')
+ self.assertRaisesMessage(ValidationError, "'Enter a whole number.'", f.clean, 'a')
self.assertEqual(1, f.clean('1 '))
self.assertEqual(1, f.clean(' 1'))
self.assertEqual(1, f.clean(' 1 '))
- self.assertRaisesMessage(ValidationError, "[u'Enter a whole number.']", f.clean, '1a')
+ self.assertRaisesMessage(ValidationError, "'Enter a whole number.'", f.clean, '1a')
self.assertEqual(f.max_value, None)
self.assertEqual(f.min_value, None)
def test_integerfield_3(self):
f = IntegerField(max_value=10)
- self.assertRaisesMessage(ValidationError, "[u'This field is required.']", f.clean, None)
+ self.assertRaisesMessage(ValidationError, "'This field is required.'", f.clean, None)
self.assertEqual(1, f.clean(1))
self.assertEqual(10, f.clean(10))
- self.assertRaisesMessage(ValidationError, "[u'Ensure this value is less than or equal to 10.']", f.clean, 11)
+ self.assertRaisesMessage(ValidationError, "'Ensure this value is less than or equal to 10.'", f.clean, 11)
self.assertEqual(10, f.clean('10'))
- self.assertRaisesMessage(ValidationError, "[u'Ensure this value is less than or equal to 10.']", f.clean, '11')
+ self.assertRaisesMessage(ValidationError, "'Ensure this value is less than or equal to 10.'", f.clean, '11')
self.assertEqual(f.max_value, 10)
self.assertEqual(f.min_value, None)
def test_integerfield_4(self):
f = IntegerField(min_value=10)
- self.assertRaisesMessage(ValidationError, "[u'This field is required.']", f.clean, None)
- self.assertRaisesMessage(ValidationError, "[u'Ensure this value is greater than or equal to 10.']", f.clean, 1)
+ self.assertRaisesMessage(ValidationError, "'This field is required.'", f.clean, None)
+ self.assertRaisesMessage(ValidationError, "'Ensure this value is greater than or equal to 10.'", f.clean, 1)
self.assertEqual(10, f.clean(10))
self.assertEqual(11, f.clean(11))
self.assertEqual(10, f.clean('10'))
@@ -177,14 +179,14 @@ class FieldsTests(SimpleTestCase):
def test_integerfield_5(self):
f = IntegerField(min_value=10, max_value=20)
- self.assertRaisesMessage(ValidationError, "[u'This field is required.']", f.clean, None)
- self.assertRaisesMessage(ValidationError, "[u'Ensure this value is greater than or equal to 10.']", f.clean, 1)
+ self.assertRaisesMessage(ValidationError, "'This field is required.'", f.clean, None)
+ self.assertRaisesMessage(ValidationError, "'Ensure this value is greater than or equal to 10.'", f.clean, 1)
self.assertEqual(10, f.clean(10))
self.assertEqual(11, f.clean(11))
self.assertEqual(10, f.clean('10'))
self.assertEqual(11, f.clean('11'))
self.assertEqual(20, f.clean(20))
- self.assertRaisesMessage(ValidationError, "[u'Ensure this value is less than or equal to 20.']", f.clean, 21)
+ self.assertRaisesMessage(ValidationError, "'Ensure this value is less than or equal to 20.'", f.clean, 21)
self.assertEqual(f.max_value, 20)
self.assertEqual(f.min_value, 10)
@@ -192,19 +194,19 @@ class FieldsTests(SimpleTestCase):
def test_floatfield_1(self):
f = FloatField()
- self.assertRaisesMessage(ValidationError, "[u'This field is required.']", f.clean, '')
- self.assertRaisesMessage(ValidationError, "[u'This field is required.']", f.clean, None)
+ self.assertRaisesMessage(ValidationError, "'This field is required.'", f.clean, '')
+ self.assertRaisesMessage(ValidationError, "'This field is required.'", f.clean, None)
self.assertEqual(1.0, f.clean('1'))
self.assertEqual(True, isinstance(f.clean('1'), float))
self.assertEqual(23.0, f.clean('23'))
self.assertEqual(3.1400000000000001, f.clean('3.14'))
self.assertEqual(3.1400000000000001, f.clean(3.14))
self.assertEqual(42.0, f.clean(42))
- self.assertRaisesMessage(ValidationError, "[u'Enter a number.']", f.clean, 'a')
+ self.assertRaisesMessage(ValidationError, "'Enter a number.'", f.clean, 'a')
self.assertEqual(1.0, f.clean('1.0 '))
self.assertEqual(1.0, f.clean(' 1.0'))
self.assertEqual(1.0, f.clean(' 1.0 '))
- self.assertRaisesMessage(ValidationError, "[u'Enter a number.']", f.clean, '1.0a')
+ self.assertRaisesMessage(ValidationError, "'Enter a number.'", f.clean, '1.0a')
self.assertEqual(f.max_value, None)
self.assertEqual(f.min_value, None)
@@ -218,8 +220,8 @@ class FieldsTests(SimpleTestCase):
def test_floatfield_3(self):
f = FloatField(max_value=1.5, min_value=0.5)
- self.assertRaisesMessage(ValidationError, "[u'Ensure this value is less than or equal to 1.5.']", f.clean, '1.6')
- self.assertRaisesMessage(ValidationError, "[u'Ensure this value is greater than or equal to 0.5.']", f.clean, '0.4')
+ self.assertRaisesMessage(ValidationError, "'Ensure this value is less than or equal to 1.5.'", f.clean, '1.6')
+ self.assertRaisesMessage(ValidationError, "'Ensure this value is greater than or equal to 0.5.'", f.clean, '0.4')
self.assertEqual(1.5, f.clean('1.5'))
self.assertEqual(0.5, f.clean('0.5'))
self.assertEqual(f.max_value, 1.5)
@@ -229,34 +231,34 @@ class FieldsTests(SimpleTestCase):
def test_decimalfield_1(self):
f = DecimalField(max_digits=4, decimal_places=2)
- self.assertRaisesMessage(ValidationError, "[u'This field is required.']", f.clean, '')
- self.assertRaisesMessage(ValidationError, "[u'This field is required.']", f.clean, None)
+ self.assertRaisesMessage(ValidationError, "'This field is required.'", f.clean, '')
+ self.assertRaisesMessage(ValidationError, "'This field is required.'", f.clean, None)
self.assertEqual(f.clean('1'), Decimal("1"))
self.assertEqual(True, isinstance(f.clean('1'), Decimal))
self.assertEqual(f.clean('23'), Decimal("23"))
self.assertEqual(f.clean('3.14'), Decimal("3.14"))
self.assertEqual(f.clean(3.14), Decimal("3.14"))
self.assertEqual(f.clean(Decimal('3.14')), Decimal("3.14"))
- self.assertRaisesMessage(ValidationError, "[u'Enter a number.']", f.clean, 'NaN')
- self.assertRaisesMessage(ValidationError, "[u'Enter a number.']", f.clean, 'Inf')
- self.assertRaisesMessage(ValidationError, "[u'Enter a number.']", f.clean, '-Inf')
- self.assertRaisesMessage(ValidationError, "[u'Enter a number.']", f.clean, 'a')
- self.assertRaisesMessage(ValidationError, "[u'Enter a number.']", f.clean, u'łąść')
+ self.assertRaisesMessage(ValidationError, "'Enter a number.'", f.clean, 'NaN')
+ self.assertRaisesMessage(ValidationError, "'Enter a number.'", f.clean, 'Inf')
+ self.assertRaisesMessage(ValidationError, "'Enter a number.'", f.clean, '-Inf')
+ self.assertRaisesMessage(ValidationError, "'Enter a number.'", f.clean, 'a')
+ self.assertRaisesMessage(ValidationError, "'Enter a number.'", f.clean, 'łąść')
self.assertEqual(f.clean('1.0 '), Decimal("1.0"))
self.assertEqual(f.clean(' 1.0'), Decimal("1.0"))
self.assertEqual(f.clean(' 1.0 '), Decimal("1.0"))
- self.assertRaisesMessage(ValidationError, "[u'Enter a number.']", f.clean, '1.0a')
- self.assertRaisesMessage(ValidationError, "[u'Ensure that there are no more than 4 digits in total.']", f.clean, '123.45')
- self.assertRaisesMessage(ValidationError, "[u'Ensure that there are no more than 2 decimal places.']", f.clean, '1.234')
- self.assertRaisesMessage(ValidationError, "[u'Ensure that there are no more than 2 digits before the decimal point.']", f.clean, '123.4')
+ self.assertRaisesMessage(ValidationError, "'Enter a number.'", f.clean, '1.0a')
+ self.assertRaisesMessage(ValidationError, "'Ensure that there are no more than 4 digits in total.'", f.clean, '123.45')
+ self.assertRaisesMessage(ValidationError, "'Ensure that there are no more than 2 decimal places.'", f.clean, '1.234')
+ self.assertRaisesMessage(ValidationError, "'Ensure that there are no more than 2 digits before the decimal point.'", f.clean, '123.4')
self.assertEqual(f.clean('-12.34'), Decimal("-12.34"))
- self.assertRaisesMessage(ValidationError, "[u'Ensure that there are no more than 4 digits in total.']", f.clean, '-123.45')
+ self.assertRaisesMessage(ValidationError, "'Ensure that there are no more than 4 digits in total.'", f.clean, '-123.45')
self.assertEqual(f.clean('-.12'), Decimal("-0.12"))
self.assertEqual(f.clean('-00.12'), Decimal("-0.12"))
self.assertEqual(f.clean('-000.12'), Decimal("-0.12"))
- self.assertRaisesMessage(ValidationError, "[u'Ensure that there are no more than 2 decimal places.']", f.clean, '-000.123')
- self.assertRaisesMessage(ValidationError, "[u'Ensure that there are no more than 4 digits in total.']", f.clean, '-000.12345')
- self.assertRaisesMessage(ValidationError, "[u'Enter a number.']", f.clean, '--0.12')
+ self.assertRaisesMessage(ValidationError, "'Ensure that there are no more than 2 decimal places.'", f.clean, '-000.123')
+ self.assertRaisesMessage(ValidationError, "'Ensure that there are no more than 4 digits in total.'", f.clean, '-000.12345')
+ self.assertRaisesMessage(ValidationError, "'Enter a number.'", f.clean, '--0.12')
self.assertEqual(f.max_digits, 4)
self.assertEqual(f.decimal_places, 2)
self.assertEqual(f.max_value, None)
@@ -274,8 +276,8 @@ class FieldsTests(SimpleTestCase):
def test_decimalfield_3(self):
f = DecimalField(max_digits=4, decimal_places=2, max_value=Decimal('1.5'), min_value=Decimal('0.5'))
- self.assertRaisesMessage(ValidationError, "[u'Ensure this value is less than or equal to 1.5.']", f.clean, '1.6')
- self.assertRaisesMessage(ValidationError, "[u'Ensure this value is greater than or equal to 0.5.']", f.clean, '0.4')
+ self.assertRaisesMessage(ValidationError, "'Ensure this value is less than or equal to 1.5.'", f.clean, '1.6')
+ self.assertRaisesMessage(ValidationError, "'Ensure this value is greater than or equal to 0.5.'", f.clean, '0.4')
self.assertEqual(f.clean('1.5'), Decimal("1.5"))
self.assertEqual(f.clean('0.5'), Decimal("0.5"))
self.assertEqual(f.clean('.5'), Decimal("0.5"))
@@ -287,7 +289,7 @@ class FieldsTests(SimpleTestCase):
def test_decimalfield_4(self):
f = DecimalField(decimal_places=2)
- self.assertRaisesMessage(ValidationError, "[u'Ensure that there are no more than 2 decimal places.']", f.clean, '0.00000001')
+ self.assertRaisesMessage(ValidationError, "'Ensure that there are no more than 2 decimal places.'", f.clean, '0.00000001')
def test_decimalfield_5(self):
f = DecimalField(max_digits=3)
@@ -297,13 +299,13 @@ class FieldsTests(SimpleTestCase):
self.assertEqual(f.clean('0000000.100'), Decimal("0.100"))
# Only leading whole zeros "collapse" to one digit.
self.assertEqual(f.clean('000000.02'), Decimal('0.02'))
- self.assertRaisesMessage(ValidationError, "[u'Ensure that there are no more than 3 digits in total.']", f.clean, '000000.0002')
+ self.assertRaisesMessage(ValidationError, "'Ensure that there are no more than 3 digits in total.'", f.clean, '000000.0002')
self.assertEqual(f.clean('.002'), Decimal("0.002"))
def test_decimalfield_6(self):
f = DecimalField(max_digits=2, decimal_places=2)
self.assertEqual(f.clean('.01'), Decimal(".01"))
- self.assertRaisesMessage(ValidationError, "[u'Ensure that there are no more than 0 digits before the decimal point.']", f.clean, '1.1')
+ self.assertRaisesMessage(ValidationError, "'Ensure that there are no more than 0 digits before the decimal point.'", f.clean, '1.1')
# DateField ###################################################################
@@ -321,10 +323,10 @@ class FieldsTests(SimpleTestCase):
self.assertEqual(datetime.date(2006, 10, 25), f.clean('October 25, 2006'))
self.assertEqual(datetime.date(2006, 10, 25), f.clean('25 October 2006'))
self.assertEqual(datetime.date(2006, 10, 25), f.clean('25 October, 2006'))
- self.assertRaisesMessage(ValidationError, "[u'Enter a valid date.']", f.clean, '2006-4-31')
- self.assertRaisesMessage(ValidationError, "[u'Enter a valid date.']", f.clean, '200a-10-25')
- self.assertRaisesMessage(ValidationError, "[u'Enter a valid date.']", f.clean, '25/10/06')
- self.assertRaisesMessage(ValidationError, "[u'This field is required.']", f.clean, None)
+ self.assertRaisesMessage(ValidationError, "'Enter a valid date.'", f.clean, '2006-4-31')
+ self.assertRaisesMessage(ValidationError, "'Enter a valid date.'", f.clean, '200a-10-25')
+ self.assertRaisesMessage(ValidationError, "'Enter a valid date.'", f.clean, '25/10/06')
+ self.assertRaisesMessage(ValidationError, "'This field is required.'", f.clean, None)
def test_datefield_2(self):
f = DateField(required=False)
@@ -338,9 +340,9 @@ class FieldsTests(SimpleTestCase):
self.assertEqual(datetime.date(2006, 10, 25), f.clean(datetime.date(2006, 10, 25)))
self.assertEqual(datetime.date(2006, 10, 25), f.clean(datetime.datetime(2006, 10, 25, 14, 30)))
self.assertEqual(datetime.date(2006, 10, 25), f.clean('2006 10 25'))
- self.assertRaisesMessage(ValidationError, "[u'Enter a valid date.']", f.clean, '2006-10-25')
- self.assertRaisesMessage(ValidationError, "[u'Enter a valid date.']", f.clean, '10/25/2006')
- self.assertRaisesMessage(ValidationError, "[u'Enter a valid date.']", f.clean, '10/25/06')
+ self.assertRaisesMessage(ValidationError, "'Enter a valid date.'", f.clean, '2006-10-25')
+ self.assertRaisesMessage(ValidationError, "'Enter a valid date.'", f.clean, '10/25/2006')
+ self.assertRaisesMessage(ValidationError, "'Enter a valid date.'", f.clean, '10/25/06')
def test_datefield_4(self):
# Test whitespace stripping behavior (#5714)
@@ -351,7 +353,7 @@ class FieldsTests(SimpleTestCase):
self.assertEqual(datetime.date(2006, 10, 25), f.clean(' October 25 2006 '))
self.assertEqual(datetime.date(2006, 10, 25), f.clean(' October 25, 2006 '))
self.assertEqual(datetime.date(2006, 10, 25), f.clean(' 25 October 2006 '))
- self.assertRaisesMessage(ValidationError, "[u'Enter a valid date.']", f.clean, ' ')
+ self.assertRaisesMessage(ValidationError, "'Enter a valid date.'", f.clean, ' ')
# TimeField ###################################################################
@@ -361,8 +363,8 @@ class FieldsTests(SimpleTestCase):
self.assertEqual(datetime.time(14, 25, 59), f.clean(datetime.time(14, 25, 59)))
self.assertEqual(datetime.time(14, 25), f.clean('14:25'))
self.assertEqual(datetime.time(14, 25, 59), f.clean('14:25:59'))
- self.assertRaisesMessage(ValidationError, "[u'Enter a valid time.']", f.clean, 'hello')
- self.assertRaisesMessage(ValidationError, "[u'Enter a valid time.']", f.clean, '1:24 p.m.')
+ self.assertRaisesMessage(ValidationError, "'Enter a valid time.'", f.clean, 'hello')
+ self.assertRaisesMessage(ValidationError, "'Enter a valid time.'", f.clean, '1:24 p.m.')
def test_timefield_2(self):
f = TimeField(input_formats=['%I:%M %p'])
@@ -370,14 +372,14 @@ class FieldsTests(SimpleTestCase):
self.assertEqual(datetime.time(14, 25, 59), f.clean(datetime.time(14, 25, 59)))
self.assertEqual(datetime.time(4, 25), f.clean('4:25 AM'))
self.assertEqual(datetime.time(16, 25), f.clean('4:25 PM'))
- self.assertRaisesMessage(ValidationError, "[u'Enter a valid time.']", f.clean, '14:30:45')
+ self.assertRaisesMessage(ValidationError, "'Enter a valid time.'", f.clean, '14:30:45')
def test_timefield_3(self):
f = TimeField()
# Test whitespace stripping behavior (#5714)
self.assertEqual(datetime.time(14, 25), f.clean(' 14:25 '))
self.assertEqual(datetime.time(14, 25, 59), f.clean(' 14:25:59 '))
- self.assertRaisesMessage(ValidationError, "[u'Enter a valid time.']", f.clean, ' ')
+ self.assertRaisesMessage(ValidationError, "'Enter a valid time.'", f.clean, ' ')
# DateTimeField ###############################################################
@@ -403,8 +405,8 @@ class FieldsTests(SimpleTestCase):
self.assertEqual(datetime.datetime(2006, 10, 25, 14, 30), f.clean('10/25/06 14:30:00'))
self.assertEqual(datetime.datetime(2006, 10, 25, 14, 30), f.clean('10/25/06 14:30'))
self.assertEqual(datetime.datetime(2006, 10, 25, 0, 0), f.clean('10/25/06'))
- self.assertRaisesMessage(ValidationError, "[u'Enter a valid date/time.']", f.clean, 'hello')
- self.assertRaisesMessage(ValidationError, "[u'Enter a valid date/time.']", f.clean, '2006-10-25 4:30 p.m.')
+ self.assertRaisesMessage(ValidationError, "'Enter a valid date/time.'", f.clean, 'hello')
+ self.assertRaisesMessage(ValidationError, "'Enter a valid date/time.'", f.clean, '2006-10-25 4:30 p.m.')
def test_datetimefield_2(self):
f = DateTimeField(input_formats=['%Y %m %d %I:%M %p'])
@@ -413,7 +415,7 @@ class FieldsTests(SimpleTestCase):
self.assertEqual(datetime.datetime(2006, 10, 25, 14, 30, 59), f.clean(datetime.datetime(2006, 10, 25, 14, 30, 59)))
self.assertEqual(datetime.datetime(2006, 10, 25, 14, 30, 59, 200), f.clean(datetime.datetime(2006, 10, 25, 14, 30, 59, 200)))
self.assertEqual(datetime.datetime(2006, 10, 25, 14, 30), f.clean('2006 10 25 2:30 PM'))
- self.assertRaisesMessage(ValidationError, "[u'Enter a valid date/time.']", f.clean, '2006-10-25 14:30:45')
+ self.assertRaisesMessage(ValidationError, "'Enter a valid date/time.'", f.clean, '2006-10-25 14:30:45')
def test_datetimefield_3(self):
f = DateTimeField(required=False)
@@ -432,51 +434,51 @@ class FieldsTests(SimpleTestCase):
self.assertEqual(datetime.datetime(2006, 10, 25, 0, 0), f.clean(' 10/25/2006 '))
self.assertEqual(datetime.datetime(2006, 10, 25, 14, 30, 45), f.clean(' 10/25/06 14:30:45 '))
self.assertEqual(datetime.datetime(2006, 10, 25, 0, 0), f.clean(' 10/25/06 '))
- self.assertRaisesMessage(ValidationError, "[u'Enter a valid date/time.']", f.clean, ' ')
+ self.assertRaisesMessage(ValidationError, "'Enter a valid date/time.'", f.clean, ' ')
def test_datetimefield_5(self):
- f = DateTimeField(input_formats=[u'%Y.%m.%d %H:%M:%S.%f'])
+ f = DateTimeField(input_formats=['%Y.%m.%d %H:%M:%S.%f'])
self.assertEqual(datetime.datetime(2006, 10, 25, 14, 30, 45, 200), f.clean('2006.10.25 14:30:45.0002'))
# RegexField ##################################################################
def test_regexfield_1(self):
f = RegexField('^\d[A-F]\d$')
- self.assertEqual(u'2A2', f.clean('2A2'))
- self.assertEqual(u'3F3', f.clean('3F3'))
- self.assertRaisesMessage(ValidationError, "[u'Enter a valid value.']", f.clean, '3G3')
- self.assertRaisesMessage(ValidationError, "[u'Enter a valid value.']", f.clean, ' 2A2')
- self.assertRaisesMessage(ValidationError, "[u'Enter a valid value.']", f.clean, '2A2 ')
- self.assertRaisesMessage(ValidationError, "[u'This field is required.']", f.clean, '')
+ self.assertEqual('2A2', f.clean('2A2'))
+ self.assertEqual('3F3', f.clean('3F3'))
+ self.assertRaisesMessage(ValidationError, "'Enter a valid value.'", f.clean, '3G3')
+ self.assertRaisesMessage(ValidationError, "'Enter a valid value.'", f.clean, ' 2A2')
+ self.assertRaisesMessage(ValidationError, "'Enter a valid value.'", f.clean, '2A2 ')
+ self.assertRaisesMessage(ValidationError, "'This field is required.'", f.clean, '')
def test_regexfield_2(self):
f = RegexField('^\d[A-F]\d$', required=False)
- self.assertEqual(u'2A2', f.clean('2A2'))
- self.assertEqual(u'3F3', f.clean('3F3'))
- self.assertRaisesMessage(ValidationError, "[u'Enter a valid value.']", f.clean, '3G3')
- self.assertEqual(u'', f.clean(''))
+ self.assertEqual('2A2', f.clean('2A2'))
+ self.assertEqual('3F3', f.clean('3F3'))
+ self.assertRaisesMessage(ValidationError, "'Enter a valid value.'", f.clean, '3G3')
+ self.assertEqual('', f.clean(''))
def test_regexfield_3(self):
f = RegexField(re.compile('^\d[A-F]\d$'))
- self.assertEqual(u'2A2', f.clean('2A2'))
- self.assertEqual(u'3F3', f.clean('3F3'))
- self.assertRaisesMessage(ValidationError, "[u'Enter a valid value.']", f.clean, '3G3')
- self.assertRaisesMessage(ValidationError, "[u'Enter a valid value.']", f.clean, ' 2A2')
- self.assertRaisesMessage(ValidationError, "[u'Enter a valid value.']", f.clean, '2A2 ')
+ self.assertEqual('2A2', f.clean('2A2'))
+ self.assertEqual('3F3', f.clean('3F3'))
+ self.assertRaisesMessage(ValidationError, "'Enter a valid value.'", f.clean, '3G3')
+ self.assertRaisesMessage(ValidationError, "'Enter a valid value.'", f.clean, ' 2A2')
+ self.assertRaisesMessage(ValidationError, "'Enter a valid value.'", f.clean, '2A2 ')
def test_regexfield_4(self):
f = RegexField('^\d\d\d\d$', error_message='Enter a four-digit number.')
- self.assertEqual(u'1234', f.clean('1234'))
- self.assertRaisesMessage(ValidationError, "[u'Enter a four-digit number.']", f.clean, '123')
- self.assertRaisesMessage(ValidationError, "[u'Enter a four-digit number.']", f.clean, 'abcd')
+ self.assertEqual('1234', f.clean('1234'))
+ self.assertRaisesMessage(ValidationError, "'Enter a four-digit number.'", f.clean, '123')
+ self.assertRaisesMessage(ValidationError, "'Enter a four-digit number.'", f.clean, 'abcd')
def test_regexfield_5(self):
f = RegexField('^\d+$', min_length=5, max_length=10)
- self.assertRaisesMessage(ValidationError, "[u'Ensure this value has at least 5 characters (it has 3).']", f.clean, '123')
- self.assertRaisesMessage(ValidationError, "[u'Ensure this value has at least 5 characters (it has 3).', u'Enter a valid value.']", f.clean, 'abc')
- self.assertEqual(u'12345', f.clean('12345'))
- self.assertEqual(u'1234567890', f.clean('1234567890'))
- self.assertRaisesMessage(ValidationError, "[u'Ensure this value has at most 10 characters (it has 11).']", f.clean, '12345678901')
- self.assertRaisesMessage(ValidationError, "[u'Enter a valid value.']", f.clean, '12345a')
+ self.assertRaisesMessage(ValidationError, "'Ensure this value has at least 5 characters (it has 3).'", f.clean, '123')
+ self.assertRaisesRegexp(ValidationError, "'Ensure this value has at least 5 characters \(it has 3\)\.', u?'Enter a valid value\.'", f.clean, 'abc')
+ self.assertEqual('12345', f.clean('12345'))
+ self.assertEqual('1234567890', f.clean('1234567890'))
+ self.assertRaisesMessage(ValidationError, "'Ensure this value has at most 10 characters (it has 11).'", f.clean, '12345678901')
+ self.assertRaisesMessage(ValidationError, "'Enter a valid value.'", f.clean, '12345a')
def test_regexfield_6(self):
"""
@@ -489,27 +491,27 @@ class FieldsTests(SimpleTestCase):
def test_change_regex_after_init(self):
f = RegexField('^[a-z]+$')
f.regex = '^\d+$'
- self.assertEqual(u'1234', f.clean('1234'))
- self.assertRaisesMessage(ValidationError, "[u'Enter a valid value.']", f.clean, 'abcd')
+ self.assertEqual('1234', f.clean('1234'))
+ self.assertRaisesMessage(ValidationError, "'Enter a valid value.'", f.clean, 'abcd')
# EmailField ##################################################################
def test_emailfield_1(self):
f = EmailField()
- self.assertRaisesMessage(ValidationError, "[u'This field is required.']", f.clean, '')
- self.assertRaisesMessage(ValidationError, "[u'This field is required.']", f.clean, None)
- self.assertEqual(u'person@example.com', f.clean('person@example.com'))
- self.assertRaisesMessage(ValidationError, "[u'Enter a valid e-mail address.']", f.clean, 'foo')
- self.assertRaisesMessage(ValidationError, "[u'Enter a valid e-mail address.']", f.clean, 'foo@')
- self.assertRaisesMessage(ValidationError, "[u'Enter a valid e-mail address.']", f.clean, 'foo@bar')
- self.assertRaisesMessage(ValidationError, "[u'Enter a valid e-mail address.']", f.clean, 'example@invalid-.com')
- self.assertRaisesMessage(ValidationError, "[u'Enter a valid e-mail address.']", f.clean, 'example@-invalid.com')
- self.assertRaisesMessage(ValidationError, "[u'Enter a valid e-mail address.']", f.clean, 'example@inv-.alid-.com')
- self.assertRaisesMessage(ValidationError, "[u'Enter a valid e-mail address.']", f.clean, 'example@inv-.-alid.com')
- self.assertEqual(u'example@valid-----hyphens.com', f.clean('example@valid-----hyphens.com'))
- self.assertEqual(u'example@valid-with-hyphens.com', f.clean('example@valid-with-hyphens.com'))
- self.assertRaisesMessage(ValidationError, "[u'Enter a valid e-mail address.']", f.clean, 'example@.com')
- self.assertEqual(u'local@domain.with.idn.xyz\xe4\xf6\xfc\xdfabc.part.com', f.clean('local@domain.with.idn.xyzäöüßabc.part.com'))
+ self.assertRaisesMessage(ValidationError, "'This field is required.'", f.clean, '')
+ self.assertRaisesMessage(ValidationError, "'This field is required.'", f.clean, None)
+ self.assertEqual('person@example.com', f.clean('person@example.com'))
+ self.assertRaisesMessage(ValidationError, "'Enter a valid e-mail address.'", f.clean, 'foo')
+ self.assertRaisesMessage(ValidationError, "'Enter a valid e-mail address.'", f.clean, 'foo@')
+ self.assertRaisesMessage(ValidationError, "'Enter a valid e-mail address.'", f.clean, 'foo@bar')
+ self.assertRaisesMessage(ValidationError, "'Enter a valid e-mail address.'", f.clean, 'example@invalid-.com')
+ self.assertRaisesMessage(ValidationError, "'Enter a valid e-mail address.'", f.clean, 'example@-invalid.com')
+ self.assertRaisesMessage(ValidationError, "'Enter a valid e-mail address.'", f.clean, 'example@inv-.alid-.com')
+ self.assertRaisesMessage(ValidationError, "'Enter a valid e-mail address.'", f.clean, 'example@inv-.-alid.com')
+ self.assertEqual('example@valid-----hyphens.com', f.clean('example@valid-----hyphens.com'))
+ self.assertEqual('example@valid-with-hyphens.com', f.clean('example@valid-with-hyphens.com'))
+ self.assertRaisesMessage(ValidationError, "'Enter a valid e-mail address.'", f.clean, 'example@.com')
+ self.assertEqual('local@domain.with.idn.xyz\xe4\xf6\xfc\xdfabc.part.com', f.clean('local@domain.with.idn.xyzäöüßabc.part.com'))
def test_email_regexp_for_performance(self):
f = EmailField()
@@ -517,50 +519,50 @@ class FieldsTests(SimpleTestCase):
# if the security fix isn't in place.
self.assertRaisesMessage(
ValidationError,
- "[u'Enter a valid e-mail address.']",
+ "'Enter a valid e-mail address.'",
f.clean,
'viewx3dtextx26qx3d@yahoo.comx26latlngx3d15854521645943074058'
)
def test_emailfield_2(self):
f = EmailField(required=False)
- self.assertEqual(u'', f.clean(''))
- self.assertEqual(u'', f.clean(None))
- self.assertEqual(u'person@example.com', f.clean('person@example.com'))
- self.assertEqual(u'example@example.com', f.clean(' example@example.com \t \t '))
- self.assertRaisesMessage(ValidationError, "[u'Enter a valid e-mail address.']", f.clean, 'foo')
- self.assertRaisesMessage(ValidationError, "[u'Enter a valid e-mail address.']", f.clean, 'foo@')
- self.assertRaisesMessage(ValidationError, "[u'Enter a valid e-mail address.']", f.clean, 'foo@bar')
+ self.assertEqual('', f.clean(''))
+ self.assertEqual('', f.clean(None))
+ self.assertEqual('person@example.com', f.clean('person@example.com'))
+ self.assertEqual('example@example.com', f.clean(' example@example.com \t \t '))
+ self.assertRaisesMessage(ValidationError, "'Enter a valid e-mail address.'", f.clean, 'foo')
+ self.assertRaisesMessage(ValidationError, "'Enter a valid e-mail address.'", f.clean, 'foo@')
+ self.assertRaisesMessage(ValidationError, "'Enter a valid e-mail address.'", f.clean, 'foo@bar')
def test_emailfield_3(self):
f = EmailField(min_length=10, max_length=15)
- self.assertRaisesMessage(ValidationError, "[u'Ensure this value has at least 10 characters (it has 9).']", f.clean, 'a@foo.com')
- self.assertEqual(u'alf@foo.com', f.clean('alf@foo.com'))
- self.assertRaisesMessage(ValidationError, "[u'Ensure this value has at most 15 characters (it has 20).']", f.clean, 'alf123456788@foo.com')
+ self.assertRaisesMessage(ValidationError, "'Ensure this value has at least 10 characters (it has 9).'", f.clean, 'a@foo.com')
+ self.assertEqual('alf@foo.com', f.clean('alf@foo.com'))
+ self.assertRaisesMessage(ValidationError, "'Ensure this value has at most 15 characters (it has 20).'", f.clean, 'alf123456788@foo.com')
# FileField ##################################################################
def test_filefield_1(self):
f = FileField()
- self.assertRaisesMessage(ValidationError, "[u'This field is required.']", f.clean, '')
- self.assertRaisesMessage(ValidationError, "[u'This field is required.']", f.clean, '', '')
+ self.assertRaisesMessage(ValidationError, "'This field is required.'", f.clean, '')
+ self.assertRaisesMessage(ValidationError, "'This field is required.'", f.clean, '', '')
self.assertEqual('files/test1.pdf', f.clean('', 'files/test1.pdf'))
- self.assertRaisesMessage(ValidationError, "[u'This field is required.']", f.clean, None)
- self.assertRaisesMessage(ValidationError, "[u'This field is required.']", f.clean, None, '')
+ self.assertRaisesMessage(ValidationError, "'This field is required.'", f.clean, None)
+ self.assertRaisesMessage(ValidationError, "'This field is required.'", f.clean, None, '')
self.assertEqual('files/test2.pdf', f.clean(None, 'files/test2.pdf'))
- self.assertRaisesMessage(ValidationError, "[u'No file was submitted. Check the encoding type on the form.']", f.clean, SimpleUploadedFile('', b''))
- self.assertRaisesMessage(ValidationError, "[u'No file was submitted. Check the encoding type on the form.']", f.clean, SimpleUploadedFile('', b''), '')
+ self.assertRaisesMessage(ValidationError, "'No file was submitted. Check the encoding type on the form.'", f.clean, SimpleUploadedFile('', b''))
+ self.assertRaisesMessage(ValidationError, "'No file was submitted. Check the encoding type on the form.'", f.clean, SimpleUploadedFile('', b''), '')
self.assertEqual('files/test3.pdf', f.clean(None, 'files/test3.pdf'))
- self.assertRaisesMessage(ValidationError, "[u'No file was submitted. Check the encoding type on the form.']", f.clean, 'some content that is not a file')
- self.assertRaisesMessage(ValidationError, "[u'The submitted file is empty.']", f.clean, SimpleUploadedFile('name', None))
- self.assertRaisesMessage(ValidationError, "[u'The submitted file is empty.']", f.clean, SimpleUploadedFile('name', b''))
+ self.assertRaisesMessage(ValidationError, "'No file was submitted. Check the encoding type on the form.'", f.clean, 'some content that is not a file')
+ self.assertRaisesMessage(ValidationError, "'The submitted file is empty.'", f.clean, SimpleUploadedFile('name', None))
+ self.assertRaisesMessage(ValidationError, "'The submitted file is empty.'", f.clean, SimpleUploadedFile('name', b''))
self.assertEqual(SimpleUploadedFile, type(f.clean(SimpleUploadedFile('name', b'Some File Content'))))
- self.assertEqual(SimpleUploadedFile, type(f.clean(SimpleUploadedFile('我隻氣墊船裝滿晒鱔.txt', u'मेरी मँडराने वाली नाव सर्पमीनों से भरी ह'.encode('utf-8')))))
+ self.assertEqual(SimpleUploadedFile, type(f.clean(SimpleUploadedFile('我隻氣墊船裝滿晒鱔.txt', 'मेरी मँडराने वाली नाव सर्पमीनों से भरी ह'.encode('utf-8')))))
self.assertEqual(SimpleUploadedFile, type(f.clean(SimpleUploadedFile('name', b'Some File Content'), 'files/test4.pdf')))
def test_filefield_2(self):
f = FileField(max_length = 5)
- self.assertRaisesMessage(ValidationError, "[u'Ensure this filename has at most 5 characters (it has 18).']", f.clean, SimpleUploadedFile('test_maxlength.txt', b'hello world'))
+ self.assertRaisesMessage(ValidationError, "'Ensure this filename has at most 5 characters (it has 18).'", f.clean, SimpleUploadedFile('test_maxlength.txt', b'hello world'))
self.assertEqual('files/test1.pdf', f.clean('', 'files/test1.pdf'))
self.assertEqual('files/test2.pdf', f.clean(None, 'files/test2.pdf'))
self.assertEqual(SimpleUploadedFile, type(f.clean(SimpleUploadedFile('name', b'Some File Content'))))
@@ -574,92 +576,92 @@ class FieldsTests(SimpleTestCase):
def test_urlfield_1(self):
f = URLField()
- self.assertRaisesMessage(ValidationError, "[u'This field is required.']", f.clean, '')
- self.assertRaisesMessage(ValidationError, "[u'This field is required.']", f.clean, None)
- self.assertEqual(u'http://localhost/', f.clean('http://localhost'))
- self.assertEqual(u'http://example.com/', f.clean('http://example.com'))
- self.assertEqual(u'http://example.com./', f.clean('http://example.com.'))
- self.assertEqual(u'http://www.example.com/', f.clean('http://www.example.com'))
- self.assertEqual(u'http://www.example.com:8000/test', f.clean('http://www.example.com:8000/test'))
- self.assertEqual(u'http://valid-with-hyphens.com/', f.clean('valid-with-hyphens.com'))
- self.assertEqual(u'http://subdomain.domain.com/', f.clean('subdomain.domain.com'))
- self.assertEqual(u'http://200.8.9.10/', f.clean('http://200.8.9.10'))
- self.assertEqual(u'http://200.8.9.10:8000/test', f.clean('http://200.8.9.10:8000/test'))
- self.assertRaisesMessage(ValidationError, "[u'Enter a valid URL.']", f.clean, 'foo')
- self.assertRaisesMessage(ValidationError, "[u'Enter a valid URL.']", f.clean, 'http://')
- self.assertRaisesMessage(ValidationError, "[u'Enter a valid URL.']", f.clean, 'http://example')
- self.assertRaisesMessage(ValidationError, "[u'Enter a valid URL.']", f.clean, 'http://example.')
- self.assertRaisesMessage(ValidationError, "[u'Enter a valid URL.']", f.clean, 'com.')
- self.assertRaisesMessage(ValidationError, "[u'Enter a valid URL.']", f.clean, '.')
- self.assertRaisesMessage(ValidationError, "[u'Enter a valid URL.']", f.clean, 'http://.com')
- self.assertRaisesMessage(ValidationError, "[u'Enter a valid URL.']", f.clean, 'http://invalid-.com')
- self.assertRaisesMessage(ValidationError, "[u'Enter a valid URL.']", f.clean, 'http://-invalid.com')
- self.assertRaisesMessage(ValidationError, "[u'Enter a valid URL.']", f.clean, 'http://inv-.alid-.com')
- self.assertRaisesMessage(ValidationError, "[u'Enter a valid URL.']", f.clean, 'http://inv-.-alid.com')
- self.assertEqual(u'http://valid-----hyphens.com/', f.clean('http://valid-----hyphens.com'))
- self.assertEqual(u'http://some.idn.xyz\xe4\xf6\xfc\xdfabc.domain.com:123/blah', f.clean('http://some.idn.xyzäöüßabc.domain.com:123/blah'))
- self.assertEqual(u'http://www.example.com/s/http://code.djangoproject.com/ticket/13804', f.clean('www.example.com/s/http://code.djangoproject.com/ticket/13804'))
- self.assertRaisesMessage(ValidationError, "[u'Enter a valid URL.']", f.clean, '[a')
- self.assertRaisesMessage(ValidationError, "[u'Enter a valid URL.']", f.clean, 'http://[a')
+ self.assertRaisesMessage(ValidationError, "'This field is required.'", f.clean, '')
+ self.assertRaisesMessage(ValidationError, "'This field is required.'", f.clean, None)
+ self.assertEqual('http://localhost/', f.clean('http://localhost'))
+ self.assertEqual('http://example.com/', f.clean('http://example.com'))
+ self.assertEqual('http://example.com./', f.clean('http://example.com.'))
+ self.assertEqual('http://www.example.com/', f.clean('http://www.example.com'))
+ self.assertEqual('http://www.example.com:8000/test', f.clean('http://www.example.com:8000/test'))
+ self.assertEqual('http://valid-with-hyphens.com/', f.clean('valid-with-hyphens.com'))
+ self.assertEqual('http://subdomain.domain.com/', f.clean('subdomain.domain.com'))
+ self.assertEqual('http://200.8.9.10/', f.clean('http://200.8.9.10'))
+ self.assertEqual('http://200.8.9.10:8000/test', f.clean('http://200.8.9.10:8000/test'))
+ self.assertRaisesMessage(ValidationError, "'Enter a valid URL.'", f.clean, 'foo')
+ self.assertRaisesMessage(ValidationError, "'Enter a valid URL.'", f.clean, 'http://')
+ self.assertRaisesMessage(ValidationError, "'Enter a valid URL.'", f.clean, 'http://example')
+ self.assertRaisesMessage(ValidationError, "'Enter a valid URL.'", f.clean, 'http://example.')
+ self.assertRaisesMessage(ValidationError, "'Enter a valid URL.'", f.clean, 'com.')
+ self.assertRaisesMessage(ValidationError, "'Enter a valid URL.'", f.clean, '.')
+ self.assertRaisesMessage(ValidationError, "'Enter a valid URL.'", f.clean, 'http://.com')
+ self.assertRaisesMessage(ValidationError, "'Enter a valid URL.'", f.clean, 'http://invalid-.com')
+ self.assertRaisesMessage(ValidationError, "'Enter a valid URL.'", f.clean, 'http://-invalid.com')
+ self.assertRaisesMessage(ValidationError, "'Enter a valid URL.'", f.clean, 'http://inv-.alid-.com')
+ self.assertRaisesMessage(ValidationError, "'Enter a valid URL.'", f.clean, 'http://inv-.-alid.com')
+ self.assertEqual('http://valid-----hyphens.com/', f.clean('http://valid-----hyphens.com'))
+ self.assertEqual('http://some.idn.xyz\xe4\xf6\xfc\xdfabc.domain.com:123/blah', f.clean('http://some.idn.xyzäöüßabc.domain.com:123/blah'))
+ self.assertEqual('http://www.example.com/s/http://code.djangoproject.com/ticket/13804', f.clean('www.example.com/s/http://code.djangoproject.com/ticket/13804'))
+ self.assertRaisesMessage(ValidationError, "'Enter a valid URL.'", f.clean, '[a')
+ self.assertRaisesMessage(ValidationError, "'Enter a valid URL.'", f.clean, 'http://[a')
def test_url_regex_ticket11198(self):
f = URLField()
# hangs "forever" if catastrophic backtracking in ticket:#11198 not fixed
- self.assertRaisesMessage(ValidationError, "[u'Enter a valid URL.']", f.clean, 'http://%s' % ("X"*200,))
+ self.assertRaisesMessage(ValidationError, "'Enter a valid URL.'", f.clean, 'http://%s' % ("X"*200,))
# a second test, to make sure the problem is really addressed, even on
# domains that don't fail the domain label length check in the regex
- self.assertRaisesMessage(ValidationError, "[u'Enter a valid URL.']", f.clean, 'http://%s' % ("X"*60,))
+ self.assertRaisesMessage(ValidationError, "'Enter a valid URL.'", f.clean, 'http://%s' % ("X"*60,))
def test_urlfield_2(self):
f = URLField(required=False)
- self.assertEqual(u'', f.clean(''))
- self.assertEqual(u'', f.clean(None))
- self.assertEqual(u'http://example.com/', f.clean('http://example.com'))
- self.assertEqual(u'http://www.example.com/', f.clean('http://www.example.com'))
- self.assertRaisesMessage(ValidationError, "[u'Enter a valid URL.']", f.clean, 'foo')
- self.assertRaisesMessage(ValidationError, "[u'Enter a valid URL.']", f.clean, 'http://')
- self.assertRaisesMessage(ValidationError, "[u'Enter a valid URL.']", f.clean, 'http://example')
- self.assertRaisesMessage(ValidationError, "[u'Enter a valid URL.']", f.clean, 'http://example.')
- self.assertRaisesMessage(ValidationError, "[u'Enter a valid URL.']", f.clean, 'http://.com')
+ self.assertEqual('', f.clean(''))
+ self.assertEqual('', f.clean(None))
+ self.assertEqual('http://example.com/', f.clean('http://example.com'))
+ self.assertEqual('http://www.example.com/', f.clean('http://www.example.com'))
+ self.assertRaisesMessage(ValidationError, "'Enter a valid URL.'", f.clean, 'foo')
+ self.assertRaisesMessage(ValidationError, "'Enter a valid URL.'", f.clean, 'http://')
+ self.assertRaisesMessage(ValidationError, "'Enter a valid URL.'", f.clean, 'http://example')
+ self.assertRaisesMessage(ValidationError, "'Enter a valid URL.'", f.clean, 'http://example.')
+ self.assertRaisesMessage(ValidationError, "'Enter a valid URL.'", f.clean, 'http://.com')
def test_urlfield_5(self):
f = URLField(min_length=15, max_length=20)
- self.assertRaisesMessage(ValidationError, "[u'Ensure this value has at least 15 characters (it has 13).']", f.clean, 'http://f.com')
- self.assertEqual(u'http://example.com/', f.clean('http://example.com'))
- self.assertRaisesMessage(ValidationError, "[u'Ensure this value has at most 20 characters (it has 38).']", f.clean, 'http://abcdefghijklmnopqrstuvwxyz.com')
+ self.assertRaisesMessage(ValidationError, "'Ensure this value has at least 15 characters (it has 13).'", f.clean, 'http://f.com')
+ self.assertEqual('http://example.com/', f.clean('http://example.com'))
+ self.assertRaisesMessage(ValidationError, "'Ensure this value has at most 20 characters (it has 38).'", f.clean, 'http://abcdefghijklmnopqrstuvwxyz.com')
def test_urlfield_6(self):
f = URLField(required=False)
- self.assertEqual(u'http://example.com/', f.clean('example.com'))
- self.assertEqual(u'', f.clean(''))
- self.assertEqual(u'https://example.com/', f.clean('https://example.com'))
+ self.assertEqual('http://example.com/', f.clean('example.com'))
+ self.assertEqual('', f.clean(''))
+ self.assertEqual('https://example.com/', f.clean('https://example.com'))
def test_urlfield_7(self):
f = URLField()
- self.assertEqual(u'http://example.com/', f.clean('http://example.com'))
- self.assertEqual(u'http://example.com/test', f.clean('http://example.com/test'))
+ self.assertEqual('http://example.com/', f.clean('http://example.com'))
+ self.assertEqual('http://example.com/test', f.clean('http://example.com/test'))
def test_urlfield_8(self):
# ticket #11826
f = URLField()
- self.assertEqual(u'http://example.com/?some_param=some_value', f.clean('http://example.com?some_param=some_value'))
+ self.assertEqual('http://example.com/?some_param=some_value', f.clean('http://example.com?some_param=some_value'))
def test_urlfield_9(self):
f = URLField()
urls = (
- u'http://עברית.idn.icann.org/',
- u'http://sãopaulo.com/',
- u'http://sãopaulo.com.br/',
- u'http://пример.испытание/',
- u'http://مثال.إختبار/',
- u'http://例子.测试/',
- u'http://例子.測試/',
- u'http://उदाहरण.परीक्षा/',
- u'http://例え.テスト/',
- u'http://مثال.آزمایشی/',
- u'http://실례.테스트/',
- u'http://العربية.idn.icann.org/',
+ 'http://עברית.idn.icann.org/',
+ 'http://sãopaulo.com/',
+ 'http://sãopaulo.com.br/',
+ 'http://пример.испытание/',
+ 'http://مثال.إختبار/',
+ 'http://例子.测试/',
+ 'http://例子.測試/',
+ 'http://उदाहरण.परीक्षा/',
+ 'http://例え.テスト/',
+ 'http://مثال.آزمایشی/',
+ 'http://실례.테스트/',
+ 'http://العربية.idn.icann.org/',
)
for url in urls:
# Valid IDN
@@ -667,21 +669,21 @@ class FieldsTests(SimpleTestCase):
def test_urlfield_not_string(self):
f = URLField(required=False)
- self.assertRaisesMessage(ValidationError, "[u'Enter a valid URL.']", f.clean, 23)
+ self.assertRaisesMessage(ValidationError, "'Enter a valid URL.'", f.clean, 23)
# BooleanField ################################################################
def test_booleanfield_1(self):
f = BooleanField()
- self.assertRaisesMessage(ValidationError, "[u'This field is required.']", f.clean, '')
- self.assertRaisesMessage(ValidationError, "[u'This field is required.']", f.clean, None)
+ self.assertRaisesMessage(ValidationError, "'This field is required.'", f.clean, '')
+ self.assertRaisesMessage(ValidationError, "'This field is required.'", f.clean, None)
self.assertEqual(True, f.clean(True))
- self.assertRaisesMessage(ValidationError, "[u'This field is required.']", f.clean, False)
+ self.assertRaisesMessage(ValidationError, "'This field is required.'", f.clean, False)
self.assertEqual(True, f.clean(1))
- self.assertRaisesMessage(ValidationError, "[u'This field is required.']", f.clean, 0)
+ self.assertRaisesMessage(ValidationError, "'This field is required.'", f.clean, 0)
self.assertEqual(True, f.clean('Django rocks'))
self.assertEqual(True, f.clean('True'))
- self.assertRaisesMessage(ValidationError, "[u'This field is required.']", f.clean, 'False')
+ self.assertRaisesMessage(ValidationError, "'This field is required.'", f.clean, 'False')
def test_booleanfield_2(self):
f = BooleanField(required=False)
@@ -705,34 +707,34 @@ class FieldsTests(SimpleTestCase):
def test_choicefield_1(self):
f = ChoiceField(choices=[('1', 'One'), ('2', 'Two')])
- self.assertRaisesMessage(ValidationError, "[u'This field is required.']", f.clean, '')
- self.assertRaisesMessage(ValidationError, "[u'This field is required.']", f.clean, None)
- self.assertEqual(u'1', f.clean(1))
- self.assertEqual(u'1', f.clean('1'))
- self.assertRaisesMessage(ValidationError, "[u'Select a valid choice. 3 is not one of the available choices.']", f.clean, '3')
+ self.assertRaisesMessage(ValidationError, "'This field is required.'", f.clean, '')
+ self.assertRaisesMessage(ValidationError, "'This field is required.'", f.clean, None)
+ self.assertEqual('1', f.clean(1))
+ self.assertEqual('1', f.clean('1'))
+ self.assertRaisesMessage(ValidationError, "'Select a valid choice. 3 is not one of the available choices.'", f.clean, '3')
def test_choicefield_2(self):
f = ChoiceField(choices=[('1', 'One'), ('2', 'Two')], required=False)
- self.assertEqual(u'', f.clean(''))
- self.assertEqual(u'', f.clean(None))
- self.assertEqual(u'1', f.clean(1))
- self.assertEqual(u'1', f.clean('1'))
- self.assertRaisesMessage(ValidationError, "[u'Select a valid choice. 3 is not one of the available choices.']", f.clean, '3')
+ self.assertEqual('', f.clean(''))
+ self.assertEqual('', f.clean(None))
+ self.assertEqual('1', f.clean(1))
+ self.assertEqual('1', f.clean('1'))
+ self.assertRaisesMessage(ValidationError, "'Select a valid choice. 3 is not one of the available choices.'", f.clean, '3')
def test_choicefield_3(self):
f = ChoiceField(choices=[('J', 'John'), ('P', 'Paul')])
- self.assertEqual(u'J', f.clean('J'))
- self.assertRaisesMessage(ValidationError, "[u'Select a valid choice. John is not one of the available choices.']", f.clean, 'John')
+ self.assertEqual('J', f.clean('J'))
+ self.assertRaisesMessage(ValidationError, "'Select a valid choice. John is not one of the available choices.'", f.clean, 'John')
def test_choicefield_4(self):
f = ChoiceField(choices=[('Numbers', (('1', 'One'), ('2', 'Two'))), ('Letters', (('3','A'),('4','B'))), ('5','Other')])
- self.assertEqual(u'1', f.clean(1))
- self.assertEqual(u'1', f.clean('1'))
- self.assertEqual(u'3', f.clean(3))
- self.assertEqual(u'3', f.clean('3'))
- self.assertEqual(u'5', f.clean(5))
- self.assertEqual(u'5', f.clean('5'))
- self.assertRaisesMessage(ValidationError, "[u'Select a valid choice. 6 is not one of the available choices.']", f.clean, '6')
+ self.assertEqual('1', f.clean(1))
+ self.assertEqual('1', f.clean('1'))
+ self.assertEqual('3', f.clean(3))
+ self.assertEqual('3', f.clean('3'))
+ self.assertEqual('5', f.clean(5))
+ self.assertEqual('5', f.clean('5'))
+ self.assertRaisesMessage(ValidationError, "'Select a valid choice. 6 is not one of the available choices.'", f.clean, '6')
# TypedChoiceField ############################################################
# TypedChoiceField is just like ChoiceField, except that coerced types will
@@ -741,7 +743,7 @@ class FieldsTests(SimpleTestCase):
def test_typedchoicefield_1(self):
f = TypedChoiceField(choices=[(1, "+1"), (-1, "-1")], coerce=int)
self.assertEqual(1, f.clean('1'))
- self.assertRaisesMessage(ValidationError, "[u'Select a valid choice. 2 is not one of the available choices.']", f.clean, '2')
+ self.assertRaisesMessage(ValidationError, "'Select a valid choice. 2 is not one of the available choices.'", f.clean, '2')
def test_typedchoicefield_2(self):
# Different coercion, same validation.
@@ -755,11 +757,11 @@ class FieldsTests(SimpleTestCase):
def test_typedchoicefield_4(self):
# Even more weirdness: if you have a valid choice but your coercion function
- # can't coerce, you'll still get a validation error. Don't do this!
+ # can't coerce, yo'll still get a validation error. Don't do this!
f = TypedChoiceField(choices=[('A', 'A'), ('B', 'B')], coerce=int)
- self.assertRaisesMessage(ValidationError, "[u'Select a valid choice. B is not one of the available choices.']", f.clean, 'B')
+ self.assertRaisesMessage(ValidationError, "'Select a valid choice. B is not one of the available choices.'", f.clean, 'B')
# Required fields require values
- self.assertRaisesMessage(ValidationError, "[u'This field is required.']", f.clean, '')
+ self.assertRaisesMessage(ValidationError, "'This field is required.'", f.clean, '')
def test_typedchoicefield_5(self):
# Non-required fields aren't required
@@ -821,42 +823,42 @@ class FieldsTests(SimpleTestCase):
def test_multiplechoicefield_1(self):
f = MultipleChoiceField(choices=[('1', 'One'), ('2', 'Two')])
- self.assertRaisesMessage(ValidationError, "[u'This field is required.']", f.clean, '')
- self.assertRaisesMessage(ValidationError, "[u'This field is required.']", f.clean, None)
- self.assertEqual([u'1'], f.clean([1]))
- self.assertEqual([u'1'], f.clean(['1']))
- self.assertEqual([u'1', u'2'], f.clean(['1', '2']))
- self.assertEqual([u'1', u'2'], f.clean([1, '2']))
- self.assertEqual([u'1', u'2'], f.clean((1, '2')))
- self.assertRaisesMessage(ValidationError, "[u'Enter a list of values.']", f.clean, 'hello')
- self.assertRaisesMessage(ValidationError, "[u'This field is required.']", f.clean, [])
- self.assertRaisesMessage(ValidationError, "[u'This field is required.']", f.clean, ())
- self.assertRaisesMessage(ValidationError, "[u'Select a valid choice. 3 is not one of the available choices.']", f.clean, ['3'])
+ self.assertRaisesMessage(ValidationError, "'This field is required.'", f.clean, '')
+ self.assertRaisesMessage(ValidationError, "'This field is required.'", f.clean, None)
+ self.assertEqual(['1'], f.clean([1]))
+ self.assertEqual(['1'], f.clean(['1']))
+ self.assertEqual(['1', '2'], f.clean(['1', '2']))
+ self.assertEqual(['1', '2'], f.clean([1, '2']))
+ self.assertEqual(['1', '2'], f.clean((1, '2')))
+ self.assertRaisesMessage(ValidationError, "'Enter a list of values.'", f.clean, 'hello')
+ self.assertRaisesMessage(ValidationError, "'This field is required.'", f.clean, [])
+ self.assertRaisesMessage(ValidationError, "'This field is required.'", f.clean, ())
+ self.assertRaisesMessage(ValidationError, "'Select a valid choice. 3 is not one of the available choices.'", f.clean, ['3'])
def test_multiplechoicefield_2(self):
f = MultipleChoiceField(choices=[('1', 'One'), ('2', 'Two')], required=False)
self.assertEqual([], f.clean(''))
self.assertEqual([], f.clean(None))
- self.assertEqual([u'1'], f.clean([1]))
- self.assertEqual([u'1'], f.clean(['1']))
- self.assertEqual([u'1', u'2'], f.clean(['1', '2']))
- self.assertEqual([u'1', u'2'], f.clean([1, '2']))
- self.assertEqual([u'1', u'2'], f.clean((1, '2')))
- self.assertRaisesMessage(ValidationError, "[u'Enter a list of values.']", f.clean, 'hello')
+ self.assertEqual(['1'], f.clean([1]))
+ self.assertEqual(['1'], f.clean(['1']))
+ self.assertEqual(['1', '2'], f.clean(['1', '2']))
+ self.assertEqual(['1', '2'], f.clean([1, '2']))
+ self.assertEqual(['1', '2'], f.clean((1, '2')))
+ self.assertRaisesMessage(ValidationError, "'Enter a list of values.'", f.clean, 'hello')
self.assertEqual([], f.clean([]))
self.assertEqual([], f.clean(()))
- self.assertRaisesMessage(ValidationError, "[u'Select a valid choice. 3 is not one of the available choices.']", f.clean, ['3'])
+ self.assertRaisesMessage(ValidationError, "'Select a valid choice. 3 is not one of the available choices.'", f.clean, ['3'])
def test_multiplechoicefield_3(self):
f = MultipleChoiceField(choices=[('Numbers', (('1', 'One'), ('2', 'Two'))), ('Letters', (('3','A'),('4','B'))), ('5','Other')])
- self.assertEqual([u'1'], f.clean([1]))
- self.assertEqual([u'1'], f.clean(['1']))
- self.assertEqual([u'1', u'5'], f.clean([1, 5]))
- self.assertEqual([u'1', u'5'], f.clean([1, '5']))
- self.assertEqual([u'1', u'5'], f.clean(['1', 5]))
- self.assertEqual([u'1', u'5'], f.clean(['1', '5']))
- self.assertRaisesMessage(ValidationError, "[u'Select a valid choice. 6 is not one of the available choices.']", f.clean, ['6'])
- self.assertRaisesMessage(ValidationError, "[u'Select a valid choice. 6 is not one of the available choices.']", f.clean, ['1','6'])
+ self.assertEqual(['1'], f.clean([1]))
+ self.assertEqual(['1'], f.clean(['1']))
+ self.assertEqual(['1', '5'], f.clean([1, 5]))
+ self.assertEqual(['1', '5'], f.clean([1, '5']))
+ self.assertEqual(['1', '5'], f.clean(['1', 5]))
+ self.assertEqual(['1', '5'], f.clean(['1', '5']))
+ self.assertRaisesMessage(ValidationError, "'Select a valid choice. 6 is not one of the available choices.'", f.clean, ['6'])
+ self.assertRaisesMessage(ValidationError, "'Select a valid choice. 6 is not one of the available choices.'", f.clean, ['1','6'])
# TypedMultipleChoiceField ############################################################
# TypedMultipleChoiceField is just like MultipleChoiceField, except that coerced types
@@ -865,7 +867,7 @@ class FieldsTests(SimpleTestCase):
def test_typedmultiplechoicefield_1(self):
f = TypedMultipleChoiceField(choices=[(1, "+1"), (-1, "-1")], coerce=int)
self.assertEqual([1], f.clean(['1']))
- self.assertRaisesMessage(ValidationError, "[u'Select a valid choice. 2 is not one of the available choices.']", f.clean, ['2'])
+ self.assertRaisesMessage(ValidationError, "'Select a valid choice. 2 is not one of the available choices.'", f.clean, ['2'])
def test_typedmultiplechoicefield_2(self):
# Different coercion, same validation.
@@ -880,15 +882,15 @@ class FieldsTests(SimpleTestCase):
def test_typedmultiplechoicefield_4(self):
f = TypedMultipleChoiceField(choices=[(1, "+1"), (-1, "-1")], coerce=int)
self.assertEqual([1, -1], f.clean(['1','-1']))
- self.assertRaisesMessage(ValidationError, "[u'Select a valid choice. 2 is not one of the available choices.']", f.clean, ['1','2'])
+ self.assertRaisesMessage(ValidationError, "'Select a valid choice. 2 is not one of the available choices.'", f.clean, ['1','2'])
def test_typedmultiplechoicefield_5(self):
# Even more weirdness: if you have a valid choice but your coercion function
# can't coerce, you'll still get a validation error. Don't do this!
f = TypedMultipleChoiceField(choices=[('A', 'A'), ('B', 'B')], coerce=int)
- self.assertRaisesMessage(ValidationError, "[u'Select a valid choice. B is not one of the available choices.']", f.clean, ['B'])
+ self.assertRaisesMessage(ValidationError, "'Select a valid choice. B is not one of the available choices.'", f.clean, ['B'])
# Required fields require values
- self.assertRaisesMessage(ValidationError, "[u'This field is required.']", f.clean, [])
+ self.assertRaisesMessage(ValidationError, "'This field is required.'", f.clean, [])
def test_typedmultiplechoicefield_6(self):
# Non-required fields aren't required
@@ -904,19 +906,19 @@ class FieldsTests(SimpleTestCase):
def test_combofield_1(self):
f = ComboField(fields=[CharField(max_length=20), EmailField()])
- self.assertEqual(u'test@example.com', f.clean('test@example.com'))
- self.assertRaisesMessage(ValidationError, "[u'Ensure this value has at most 20 characters (it has 28).']", f.clean, 'longemailaddress@example.com')
- self.assertRaisesMessage(ValidationError, "[u'Enter a valid e-mail address.']", f.clean, 'not an e-mail')
- self.assertRaisesMessage(ValidationError, "[u'This field is required.']", f.clean, '')
- self.assertRaisesMessage(ValidationError, "[u'This field is required.']", f.clean, None)
+ self.assertEqual('test@example.com', f.clean('test@example.com'))
+ self.assertRaisesMessage(ValidationError, "'Ensure this value has at most 20 characters (it has 28).'", f.clean, 'longemailaddress@example.com')
+ self.assertRaisesMessage(ValidationError, "'Enter a valid e-mail address.'", f.clean, 'not an e-mail')
+ self.assertRaisesMessage(ValidationError, "'This field is required.'", f.clean, '')
+ self.assertRaisesMessage(ValidationError, "'This field is required.'", f.clean, None)
def test_combofield_2(self):
f = ComboField(fields=[CharField(max_length=20), EmailField()], required=False)
- self.assertEqual(u'test@example.com', f.clean('test@example.com'))
- self.assertRaisesMessage(ValidationError, "[u'Ensure this value has at most 20 characters (it has 28).']", f.clean, 'longemailaddress@example.com')
- self.assertRaisesMessage(ValidationError, "[u'Enter a valid e-mail address.']", f.clean, 'not an e-mail')
- self.assertEqual(u'', f.clean(''))
- self.assertEqual(u'', f.clean(None))
+ self.assertEqual('test@example.com', f.clean('test@example.com'))
+ self.assertRaisesMessage(ValidationError, "'Ensure this value has at most 20 characters (it has 28).'", f.clean, 'longemailaddress@example.com')
+ self.assertRaisesMessage(ValidationError, "'Enter a valid e-mail address.'", f.clean, 'not an e-mail')
+ self.assertEqual('', f.clean(''))
+ self.assertEqual('', f.clean(None))
# FilePathField ###############################################################
@@ -943,7 +945,7 @@ class FieldsTests(SimpleTestCase):
for exp, got in zip(expected, fix_os_paths(f.choices)):
self.assertEqual(exp[1], got[1])
self.assertTrue(got[0].endswith(exp[0]))
- self.assertRaisesMessage(ValidationError, "[u'Select a valid choice. fields.py is not one of the available choices.']", f.clean, 'fields.py')
+ self.assertRaisesMessage(ValidationError, "'Select a valid choice. fields.py is not one of the available choices.'", f.clean, 'fields.py')
assert fix_os_paths(f.clean(path + 'fields.py')).endswith('/django/forms/fields.py')
def test_filepathfield_3(self):
@@ -1018,12 +1020,12 @@ class FieldsTests(SimpleTestCase):
f = SplitDateTimeField()
assert isinstance(f.widget, SplitDateTimeWidget)
self.assertEqual(datetime.datetime(2006, 1, 10, 7, 30), f.clean([datetime.date(2006, 1, 10), datetime.time(7, 30)]))
- self.assertRaisesMessage(ValidationError, "[u'This field is required.']", f.clean, None)
- self.assertRaisesMessage(ValidationError, "[u'This field is required.']", f.clean, '')
- self.assertRaisesMessage(ValidationError, "[u'Enter a list of values.']", f.clean, 'hello')
- self.assertRaisesMessage(ValidationError, "[u'Enter a valid date.', u'Enter a valid time.']", f.clean, ['hello', 'there'])
- self.assertRaisesMessage(ValidationError, "[u'Enter a valid time.']", f.clean, ['2006-01-10', 'there'])
- self.assertRaisesMessage(ValidationError, "[u'Enter a valid date.']", f.clean, ['hello', '07:30'])
+ self.assertRaisesMessage(ValidationError, "'This field is required.'", f.clean, None)
+ self.assertRaisesMessage(ValidationError, "'This field is required.'", f.clean, '')
+ self.assertRaisesMessage(ValidationError, "'Enter a list of values.'", f.clean, 'hello')
+ self.assertRaisesRegexp(ValidationError, "'Enter a valid date\.', u?'Enter a valid time\.'", f.clean, ['hello', 'there'])
+ self.assertRaisesMessage(ValidationError, "'Enter a valid time.'", f.clean, ['2006-01-10', 'there'])
+ self.assertRaisesMessage(ValidationError, "'Enter a valid date.'", f.clean, ['hello', '07:30'])
def test_splitdatetimefield_2(self):
f = SplitDateTimeField(required=False)
@@ -1033,10 +1035,10 @@ class FieldsTests(SimpleTestCase):
self.assertEqual(None, f.clean(''))
self.assertEqual(None, f.clean(['']))
self.assertEqual(None, f.clean(['', '']))
- self.assertRaisesMessage(ValidationError, "[u'Enter a list of values.']", f.clean, 'hello')
- self.assertRaisesMessage(ValidationError, "[u'Enter a valid date.', u'Enter a valid time.']", f.clean, ['hello', 'there'])
- self.assertRaisesMessage(ValidationError, "[u'Enter a valid time.']", f.clean, ['2006-01-10', 'there'])
- self.assertRaisesMessage(ValidationError, "[u'Enter a valid date.']", f.clean, ['hello', '07:30'])
- self.assertRaisesMessage(ValidationError, "[u'Enter a valid time.']", f.clean, ['2006-01-10', ''])
- self.assertRaisesMessage(ValidationError, "[u'Enter a valid time.']", f.clean, ['2006-01-10'])
- self.assertRaisesMessage(ValidationError, "[u'Enter a valid date.']", f.clean, ['', '07:30'])
+ self.assertRaisesMessage(ValidationError, "'Enter a list of values.'", f.clean, 'hello')
+ self.assertRaisesRegexp(ValidationError, "'Enter a valid date\.', u?'Enter a valid time\.'", f.clean, ['hello', 'there'])
+ self.assertRaisesMessage(ValidationError, "'Enter a valid time.'", f.clean, ['2006-01-10', 'there'])
+ self.assertRaisesMessage(ValidationError, "'Enter a valid date.'", f.clean, ['hello', '07:30'])
+ self.assertRaisesMessage(ValidationError, "'Enter a valid time.'", f.clean, ['2006-01-10', ''])
+ self.assertRaisesMessage(ValidationError, "'Enter a valid time.'", f.clean, ['2006-01-10'])
+ self.assertRaisesMessage(ValidationError, "'Enter a valid date.'", f.clean, ['', '07:30'])
diff --git a/tests/regressiontests/forms/tests/forms.py b/tests/regressiontests/forms/tests/forms.py
index 16cf46fc29..7e1c8384a0 100644
--- a/tests/regressiontests/forms/tests/forms.py
+++ b/tests/regressiontests/forms/tests/forms.py
@@ -1,4 +1,6 @@
# -*- coding: utf-8 -*-
+from __future__ import unicode_literals
+
import datetime
from django.core.files.uploadedfile import SimpleUploadedFile
@@ -6,6 +8,7 @@ from django.forms import *
from django.http import QueryDict
from django.template import Template, Context
from django.test import TestCase
+from django.test.utils import str_prefix
from django.utils.datastructures import MultiValueDict, MergeDict
from django.utils.safestring import mark_safe
@@ -29,15 +32,15 @@ class FormsTestCase(TestCase):
def test_form(self):
# Pass a dictionary to a Form's __init__().
- p = Person({'first_name': u'John', 'last_name': u'Lennon', 'birthday': u'1940-10-9'})
+ p = Person({'first_name': 'John', 'last_name': 'Lennon', 'birthday': '1940-10-9'})
self.assertTrue(p.is_bound)
self.assertEqual(p.errors, {})
self.assertTrue(p.is_valid())
- self.assertHTMLEqual(p.errors.as_ul(), u'')
- self.assertEqual(p.errors.as_text(), u'')
- self.assertEqual(p.cleaned_data["first_name"], u'John')
- self.assertEqual(p.cleaned_data["last_name"], u'Lennon')
+ self.assertHTMLEqual(p.errors.as_ul(), '')
+ self.assertEqual(p.errors.as_text(), '')
+ self.assertEqual(p.cleaned_data["first_name"], 'John')
+ self.assertEqual(p.cleaned_data["last_name"], 'Lennon')
self.assertEqual(p.cleaned_data["birthday"], datetime.date(1940, 10, 9))
self.assertHTMLEqual(str(p['first_name']), '<input type="text" name="first_name" value="John" id="id_first_name" />')
self.assertHTMLEqual(str(p['last_name']), '<input type="text" name="last_name" value="Lennon" id="id_last_name" />')
@@ -63,9 +66,9 @@ class FormsTestCase(TestCase):
form_output.append([boundfield.label, boundfield.data])
self.assertEqual(form_output, [
- ['First name', u'John'],
- ['Last name', u'Lennon'],
- ['Birthday', u'1940-10-9']
+ ['First name', 'John'],
+ ['Last name', 'Lennon'],
+ ['Birthday', '1940-10-9']
])
self.assertHTMLEqual(str(p), """<tr><th><label for="id_first_name">First name:</label></th><td><input type="text" name="first_name" value="John" id="id_first_name" /></td></tr>
<tr><th><label for="id_last_name">Last name:</label></th><td><input type="text" name="last_name" value="Lennon" id="id_last_name" /></td></tr>
@@ -75,9 +78,9 @@ class FormsTestCase(TestCase):
# Empty dictionaries are valid, too.
p = Person({})
self.assertTrue(p.is_bound)
- self.assertEqual(p.errors['first_name'], [u'This field is required.'])
- self.assertEqual(p.errors['last_name'], [u'This field is required.'])
- self.assertEqual(p.errors['birthday'], [u'This field is required.'])
+ self.assertEqual(p.errors['first_name'], ['This field is required.'])
+ self.assertEqual(p.errors['last_name'], ['This field is required.'])
+ self.assertEqual(p.errors['birthday'], ['This field is required.'])
self.assertFalse(p.is_valid())
try:
p.cleaned_data
@@ -128,16 +131,16 @@ class FormsTestCase(TestCase):
def test_unicode_values(self):
# Unicode values are handled properly.
- p = Person({'first_name': u'John', 'last_name': u'\u0160\u0110\u0106\u017d\u0107\u017e\u0161\u0111', 'birthday': '1940-10-9'})
- self.assertHTMLEqual(p.as_table(), u'<tr><th><label for="id_first_name">First name:</label></th><td><input type="text" name="first_name" value="John" id="id_first_name" /></td></tr>\n<tr><th><label for="id_last_name">Last name:</label></th><td><input type="text" name="last_name" value="\u0160\u0110\u0106\u017d\u0107\u017e\u0161\u0111" id="id_last_name" /></td></tr>\n<tr><th><label for="id_birthday">Birthday:</label></th><td><input type="text" name="birthday" value="1940-10-9" id="id_birthday" /></td></tr>')
- self.assertHTMLEqual(p.as_ul(), u'<li><label for="id_first_name">First name:</label> <input type="text" name="first_name" value="John" id="id_first_name" /></li>\n<li><label for="id_last_name">Last name:</label> <input type="text" name="last_name" value="\u0160\u0110\u0106\u017d\u0107\u017e\u0161\u0111" id="id_last_name" /></li>\n<li><label for="id_birthday">Birthday:</label> <input type="text" name="birthday" value="1940-10-9" id="id_birthday" /></li>')
- self.assertHTMLEqual(p.as_p(), u'<p><label for="id_first_name">First name:</label> <input type="text" name="first_name" value="John" id="id_first_name" /></p>\n<p><label for="id_last_name">Last name:</label> <input type="text" name="last_name" value="\u0160\u0110\u0106\u017d\u0107\u017e\u0161\u0111" id="id_last_name" /></p>\n<p><label for="id_birthday">Birthday:</label> <input type="text" name="birthday" value="1940-10-9" id="id_birthday" /></p>')
+ p = Person({'first_name': 'John', 'last_name': '\u0160\u0110\u0106\u017d\u0107\u017e\u0161\u0111', 'birthday': '1940-10-9'})
+ self.assertHTMLEqual(p.as_table(), '<tr><th><label for="id_first_name">First name:</label></th><td><input type="text" name="first_name" value="John" id="id_first_name" /></td></tr>\n<tr><th><label for="id_last_name">Last name:</label></th><td><input type="text" name="last_name" value="\u0160\u0110\u0106\u017d\u0107\u017e\u0161\u0111" id="id_last_name" /></td></tr>\n<tr><th><label for="id_birthday">Birthday:</label></th><td><input type="text" name="birthday" value="1940-10-9" id="id_birthday" /></td></tr>')
+ self.assertHTMLEqual(p.as_ul(), '<li><label for="id_first_name">First name:</label> <input type="text" name="first_name" value="John" id="id_first_name" /></li>\n<li><label for="id_last_name">Last name:</label> <input type="text" name="last_name" value="\u0160\u0110\u0106\u017d\u0107\u017e\u0161\u0111" id="id_last_name" /></li>\n<li><label for="id_birthday">Birthday:</label> <input type="text" name="birthday" value="1940-10-9" id="id_birthday" /></li>')
+ self.assertHTMLEqual(p.as_p(), '<p><label for="id_first_name">First name:</label> <input type="text" name="first_name" value="John" id="id_first_name" /></p>\n<p><label for="id_last_name">Last name:</label> <input type="text" name="last_name" value="\u0160\u0110\u0106\u017d\u0107\u017e\u0161\u0111" id="id_last_name" /></p>\n<p><label for="id_birthday">Birthday:</label> <input type="text" name="birthday" value="1940-10-9" id="id_birthday" /></p>')
- p = Person({'last_name': u'Lennon'})
- self.assertEqual(p.errors['first_name'], [u'This field is required.'])
- self.assertEqual(p.errors['birthday'], [u'This field is required.'])
+ p = Person({'last_name': 'Lennon'})
+ self.assertEqual(p.errors['first_name'], ['This field is required.'])
+ self.assertEqual(p.errors['birthday'], ['This field is required.'])
self.assertFalse(p.is_valid())
- self.assertHTMLEqual(p.errors.as_ul(), u'<ul class="errorlist"><li>first_name<ul class="errorlist"><li>This field is required.</li></ul></li><li>birthday<ul class="errorlist"><li>This field is required.</li></ul></li></ul>')
+ self.assertHTMLEqual(p.errors.as_ul(), '<ul class="errorlist"><li>first_name<ul class="errorlist"><li>This field is required.</li></ul></li><li>birthday<ul class="errorlist"><li>This field is required.</li></ul></li></ul>')
self.assertEqual(p.errors.as_text(), """* first_name
* This field is required.
* birthday
@@ -147,9 +150,9 @@ class FormsTestCase(TestCase):
self.fail('Attempts to access cleaned_data when validation fails should fail.')
except AttributeError:
pass
- self.assertEqual(p['first_name'].errors, [u'This field is required.'])
- self.assertHTMLEqual(p['first_name'].errors.as_ul(), u'<ul class="errorlist"><li>This field is required.</li></ul>')
- self.assertEqual(p['first_name'].errors.as_text(), u'* This field is required.')
+ self.assertEqual(p['first_name'].errors, ['This field is required.'])
+ self.assertHTMLEqual(p['first_name'].errors.as_ul(), '<ul class="errorlist"><li>This field is required.</li></ul>')
+ self.assertEqual(p['first_name'].errors.as_text(), '* This field is required.')
p = Person()
self.assertHTMLEqual(str(p['first_name']), '<input type="text" name="first_name" id="id_first_name" />')
@@ -161,11 +164,11 @@ class FormsTestCase(TestCase):
# Form, even if you pass extra data when you define the Form. In this
# example, we pass a bunch of extra fields to the form constructor,
# but cleaned_data contains only the form's fields.
- data = {'first_name': u'John', 'last_name': u'Lennon', 'birthday': u'1940-10-9', 'extra1': 'hello', 'extra2': 'hello'}
+ data = {'first_name': 'John', 'last_name': 'Lennon', 'birthday': '1940-10-9', 'extra1': 'hello', 'extra2': 'hello'}
p = Person(data)
self.assertTrue(p.is_valid())
- self.assertEqual(p.cleaned_data['first_name'], u'John')
- self.assertEqual(p.cleaned_data['last_name'], u'Lennon')
+ self.assertEqual(p.cleaned_data['first_name'], 'John')
+ self.assertEqual(p.cleaned_data['last_name'], 'Lennon')
self.assertEqual(p.cleaned_data['birthday'], datetime.date(1940, 10, 9))
def test_optional_data(self):
@@ -179,12 +182,12 @@ class FormsTestCase(TestCase):
last_name = CharField()
nick_name = CharField(required=False)
- data = {'first_name': u'John', 'last_name': u'Lennon'}
+ data = {'first_name': 'John', 'last_name': 'Lennon'}
f = OptionalPersonForm(data)
self.assertTrue(f.is_valid())
- self.assertEqual(f.cleaned_data['nick_name'], u'')
- self.assertEqual(f.cleaned_data['first_name'], u'John')
- self.assertEqual(f.cleaned_data['last_name'], u'Lennon')
+ self.assertEqual(f.cleaned_data['nick_name'], '')
+ self.assertEqual(f.cleaned_data['first_name'], 'John')
+ self.assertEqual(f.cleaned_data['last_name'], 'Lennon')
# For DateFields, it's set to None.
class OptionalPersonForm(Form):
@@ -192,12 +195,12 @@ class FormsTestCase(TestCase):
last_name = CharField()
birth_date = DateField(required=False)
- data = {'first_name': u'John', 'last_name': u'Lennon'}
+ data = {'first_name': 'John', 'last_name': 'Lennon'}
f = OptionalPersonForm(data)
self.assertTrue(f.is_valid())
self.assertEqual(f.cleaned_data['birth_date'], None)
- self.assertEqual(f.cleaned_data['first_name'], u'John')
- self.assertEqual(f.cleaned_data['last_name'], u'Lennon')
+ self.assertEqual(f.cleaned_data['first_name'], 'John')
+ self.assertEqual(f.cleaned_data['last_name'], 'Lennon')
def test_auto_id(self):
# "auto_id" tells the Form to add an "id" attribute to each form element.
@@ -286,9 +289,9 @@ class FormsTestCase(TestCase):
# as_textarea(), as_text() and as_hidden() are shortcuts for changing the output
# widget type:
- self.assertHTMLEqual(f['subject'].as_textarea(), u'<textarea name="subject" rows="10" cols="40"></textarea>')
- self.assertHTMLEqual(f['message'].as_text(), u'<input type="text" name="message" />')
- self.assertHTMLEqual(f['message'].as_hidden(), u'<input type="hidden" name="message" />')
+ self.assertHTMLEqual(f['subject'].as_textarea(), '<textarea name="subject" rows="10" cols="40"></textarea>')
+ self.assertHTMLEqual(f['message'].as_text(), '<input type="text" name="message" />')
+ self.assertHTMLEqual(f['message'].as_hidden(), '<input type="hidden" name="message" />')
# The 'widget' parameter to a Field can also be an instance:
class ContactForm(Form):
@@ -300,11 +303,11 @@ class FormsTestCase(TestCase):
# Instance-level attrs are *not* carried over to as_textarea(), as_text() and
# as_hidden():
- self.assertHTMLEqual(f['message'].as_text(), u'<input type="text" name="message" />')
+ self.assertHTMLEqual(f['message'].as_text(), '<input type="text" name="message" />')
f = ContactForm({'subject': 'Hello', 'message': 'I love you.'}, auto_id=False)
- self.assertHTMLEqual(f['subject'].as_textarea(), u'<textarea rows="10" cols="40" name="subject">Hello</textarea>')
- self.assertHTMLEqual(f['message'].as_text(), u'<input type="text" name="message" value="I love you." />')
- self.assertHTMLEqual(f['message'].as_hidden(), u'<input type="hidden" name="message" value="I love you." />')
+ self.assertHTMLEqual(f['subject'].as_textarea(), '<textarea rows="10" cols="40" name="subject">Hello</textarea>')
+ self.assertHTMLEqual(f['message'].as_text(), '<input type="text" name="message" value="I love you." />')
+ self.assertHTMLEqual(f['message'].as_hidden(), '<input type="hidden" name="message" value="I love you." />')
def test_forms_with_choices(self):
# For a form with a <select>, use ChoiceField:
@@ -454,7 +457,7 @@ class FormsTestCase(TestCase):
name = CharField()
f = BeatleForm(auto_id=False)
- self.assertHTMLEqual('\n'.join([str(bf) for bf in f['name']]), u'<input type="text" name="name" />')
+ self.assertHTMLEqual('\n'.join([str(bf) for bf in f['name']]), '<input type="text" name="name" />')
def test_forms_with_multiple_choice(self):
# MultipleChoiceField is a special case, as its data is required to be a list:
@@ -582,15 +585,15 @@ class FormsTestCase(TestCase):
# When using CheckboxSelectMultiple, the framework expects a list of input and
# returns a list of input.
f = SongForm({'name': 'Yesterday'}, auto_id=False)
- self.assertEqual(f.errors['composers'], [u'This field is required.'])
+ self.assertEqual(f.errors['composers'], ['This field is required.'])
f = SongForm({'name': 'Yesterday', 'composers': ['J']}, auto_id=False)
self.assertEqual(f.errors, {})
- self.assertEqual(f.cleaned_data['composers'], [u'J'])
- self.assertEqual(f.cleaned_data['name'], u'Yesterday')
+ self.assertEqual(f.cleaned_data['composers'], ['J'])
+ self.assertEqual(f.cleaned_data['name'], 'Yesterday')
f = SongForm({'name': 'Yesterday', 'composers': ['J', 'P']}, auto_id=False)
self.assertEqual(f.errors, {})
- self.assertEqual(f.cleaned_data['composers'], [u'J', u'P'])
- self.assertEqual(f.cleaned_data['name'], u'Yesterday')
+ self.assertEqual(f.cleaned_data['composers'], ['J', 'P'])
+ self.assertEqual(f.cleaned_data['name'], 'Yesterday')
def test_escaping(self):
# Validation errors are HTML-escaped when output as HTML.
@@ -629,23 +632,23 @@ class FormsTestCase(TestCase):
def clean_password2(self):
if self.cleaned_data.get('password1') and self.cleaned_data.get('password2') and self.cleaned_data['password1'] != self.cleaned_data['password2']:
- raise ValidationError(u'Please make sure your passwords match.')
+ raise ValidationError('Please make sure your passwords match.')
return self.cleaned_data['password2']
f = UserRegistration(auto_id=False)
self.assertEqual(f.errors, {})
f = UserRegistration({}, auto_id=False)
- self.assertEqual(f.errors['username'], [u'This field is required.'])
- self.assertEqual(f.errors['password1'], [u'This field is required.'])
- self.assertEqual(f.errors['password2'], [u'This field is required.'])
+ self.assertEqual(f.errors['username'], ['This field is required.'])
+ self.assertEqual(f.errors['password1'], ['This field is required.'])
+ self.assertEqual(f.errors['password2'], ['This field is required.'])
f = UserRegistration({'username': 'adrian', 'password1': 'foo', 'password2': 'bar'}, auto_id=False)
- self.assertEqual(f.errors['password2'], [u'Please make sure your passwords match.'])
+ self.assertEqual(f.errors['password2'], ['Please make sure your passwords match.'])
f = UserRegistration({'username': 'adrian', 'password1': 'foo', 'password2': 'foo'}, auto_id=False)
self.assertEqual(f.errors, {})
- self.assertEqual(f.cleaned_data['username'], u'adrian')
- self.assertEqual(f.cleaned_data['password1'], u'foo')
- self.assertEqual(f.cleaned_data['password2'], u'foo')
+ self.assertEqual(f.cleaned_data['username'], 'adrian')
+ self.assertEqual(f.cleaned_data['password1'], 'foo')
+ self.assertEqual(f.cleaned_data['password2'], 'foo')
# Another way of doing multiple-field validation is by implementing the
# Form's clean() method. If you do this, any ValidationError raised by that
@@ -661,7 +664,7 @@ class FormsTestCase(TestCase):
def clean(self):
if self.cleaned_data.get('password1') and self.cleaned_data.get('password2') and self.cleaned_data['password1'] != self.cleaned_data['password2']:
- raise ValidationError(u'Please make sure your passwords match.')
+ raise ValidationError('Please make sure your passwords match.')
return self.cleaned_data
@@ -671,11 +674,11 @@ class FormsTestCase(TestCase):
self.assertHTMLEqual(f.as_table(), """<tr><th>Username:</th><td><ul class="errorlist"><li>This field is required.</li></ul><input type="text" name="username" maxlength="10" /></td></tr>
<tr><th>Password1:</th><td><ul class="errorlist"><li>This field is required.</li></ul><input type="password" name="password1" /></td></tr>
<tr><th>Password2:</th><td><ul class="errorlist"><li>This field is required.</li></ul><input type="password" name="password2" /></td></tr>""")
- self.assertEqual(f.errors['username'], [u'This field is required.'])
- self.assertEqual(f.errors['password1'], [u'This field is required.'])
- self.assertEqual(f.errors['password2'], [u'This field is required.'])
+ self.assertEqual(f.errors['username'], ['This field is required.'])
+ self.assertEqual(f.errors['password1'], ['This field is required.'])
+ self.assertEqual(f.errors['password2'], ['This field is required.'])
f = UserRegistration({'username': 'adrian', 'password1': 'foo', 'password2': 'bar'}, auto_id=False)
- self.assertEqual(f.errors['__all__'], [u'Please make sure your passwords match.'])
+ self.assertEqual(f.errors['__all__'], ['Please make sure your passwords match.'])
self.assertHTMLEqual(f.as_table(), """<tr><td colspan="2"><ul class="errorlist"><li>Please make sure your passwords match.</li></ul></td></tr>
<tr><th>Username:</th><td><input type="text" name="username" value="adrian" maxlength="10" /></td></tr>
<tr><th>Password1:</th><td><input type="password" name="password1" /></td></tr>
@@ -686,9 +689,9 @@ class FormsTestCase(TestCase):
<li>Password2: <input type="password" name="password2" /></li>""")
f = UserRegistration({'username': 'adrian', 'password1': 'foo', 'password2': 'foo'}, auto_id=False)
self.assertEqual(f.errors, {})
- self.assertEqual(f.cleaned_data['username'], u'adrian')
- self.assertEqual(f.cleaned_data['password1'], u'foo')
- self.assertEqual(f.cleaned_data['password2'], u'foo')
+ self.assertEqual(f.cleaned_data['username'], 'adrian')
+ self.assertEqual(f.cleaned_data['password1'], 'foo')
+ self.assertEqual(f.cleaned_data['password2'], 'foo')
def test_dynamic_construction(self):
# It's possible to construct a Form dynamically by adding to the self.fields
@@ -985,10 +988,10 @@ class FormsTestCase(TestCase):
# A label can be a Unicode object or a bytestring with special characters.
class UserRegistration(Form):
username = CharField(max_length=10, label='ŠĐĆŽćžšđ')
- password = CharField(widget=PasswordInput, label=u'\u0160\u0110\u0106\u017d\u0107\u017e\u0161\u0111')
+ password = CharField(widget=PasswordInput, label='\u0160\u0110\u0106\u017d\u0107\u017e\u0161\u0111')
p = UserRegistration(auto_id=False)
- self.assertHTMLEqual(p.as_ul(), u'<li>\u0160\u0110\u0106\u017d\u0107\u017e\u0161\u0111: <input type="text" name="username" maxlength="10" /></li>\n<li>\u0160\u0110\u0106\u017d\u0107\u017e\u0161\u0111: <input type="password" name="password" /></li>')
+ self.assertHTMLEqual(p.as_ul(), '<li>\u0160\u0110\u0106\u017d\u0107\u017e\u0161\u0111: <input type="text" name="username" maxlength="10" /></li>\n<li>\u0160\u0110\u0106\u017d\u0107\u017e\u0161\u0111: <input type="password" name="password" /></li>')
# If a label is set to the empty string for a field, that field won't get a label.
class UserRegistration(Form):
@@ -1034,8 +1037,8 @@ class FormsTestCase(TestCase):
f = FavoriteForm(auto_id=False, label_suffix='')
self.assertHTMLEqual(f.as_ul(), """<li>Favorite color? <input type="text" name="color" /></li>
<li>Favorite animal <input type="text" name="animal" /></li>""")
- f = FavoriteForm(auto_id=False, label_suffix=u'\u2192')
- self.assertHTMLEqual(f.as_ul(), u'<li>Favorite color? <input type="text" name="color" /></li>\n<li>Favorite animal\u2192 <input type="text" name="animal" /></li>')
+ f = FavoriteForm(auto_id=False, label_suffix='\u2192')
+ self.assertHTMLEqual(f.as_ul(), '<li>Favorite color? <input type="text" name="color" /></li>\n<li>Favorite animal\u2192 <input type="text" name="animal" /></li>')
def test_initial_data(self):
# You can specify initial data for a field by using the 'initial' argument to a
@@ -1056,10 +1059,10 @@ class FormsTestCase(TestCase):
p = UserRegistration({}, auto_id=False)
self.assertHTMLEqual(p.as_ul(), """<li><ul class="errorlist"><li>This field is required.</li></ul>Username: <input type="text" name="username" maxlength="10" /></li>
<li><ul class="errorlist"><li>This field is required.</li></ul>Password: <input type="password" name="password" /></li>""")
- p = UserRegistration({'username': u''}, auto_id=False)
+ p = UserRegistration({'username': ''}, auto_id=False)
self.assertHTMLEqual(p.as_ul(), """<li><ul class="errorlist"><li>This field is required.</li></ul>Username: <input type="text" name="username" maxlength="10" /></li>
<li><ul class="errorlist"><li>This field is required.</li></ul>Password: <input type="password" name="password" /></li>""")
- p = UserRegistration({'username': u'foo'}, auto_id=False)
+ p = UserRegistration({'username': 'foo'}, auto_id=False)
self.assertHTMLEqual(p.as_ul(), """<li>Username: <input type="text" name="username" value="foo" maxlength="10" /></li>
<li><ul class="errorlist"><li>This field is required.</li></ul>Password: <input type="password" name="password" /></li>""")
@@ -1067,7 +1070,7 @@ class FormsTestCase(TestCase):
# example, we don't provide a value for 'username', and the form raises a
# validation error rather than using the initial value for 'username'.
p = UserRegistration({'password': 'secret'})
- self.assertEqual(p.errors['username'], [u'This field is required.'])
+ self.assertEqual(p.errors['username'], ['This field is required.'])
self.assertFalse(p.is_valid())
def test_dynamic_initial_data(self):
@@ -1092,10 +1095,10 @@ class FormsTestCase(TestCase):
p = UserRegistration({}, initial={'username': 'django'}, auto_id=False)
self.assertHTMLEqual(p.as_ul(), """<li><ul class="errorlist"><li>This field is required.</li></ul>Username: <input type="text" name="username" maxlength="10" /></li>
<li><ul class="errorlist"><li>This field is required.</li></ul>Password: <input type="password" name="password" /></li>""")
- p = UserRegistration({'username': u''}, initial={'username': 'django'}, auto_id=False)
+ p = UserRegistration({'username': ''}, initial={'username': 'django'}, auto_id=False)
self.assertHTMLEqual(p.as_ul(), """<li><ul class="errorlist"><li>This field is required.</li></ul>Username: <input type="text" name="username" maxlength="10" /></li>
<li><ul class="errorlist"><li>This field is required.</li></ul>Password: <input type="password" name="password" /></li>""")
- p = UserRegistration({'username': u'foo'}, initial={'username': 'django'}, auto_id=False)
+ p = UserRegistration({'username': 'foo'}, initial={'username': 'django'}, auto_id=False)
self.assertHTMLEqual(p.as_ul(), """<li>Username: <input type="text" name="username" value="foo" maxlength="10" /></li>
<li><ul class="errorlist"><li>This field is required.</li></ul>Password: <input type="password" name="password" /></li>""")
@@ -1103,7 +1106,7 @@ class FormsTestCase(TestCase):
# In this example, we don't provide a value for 'username', and the form raises a
# validation error rather than using the initial value for 'username'.
p = UserRegistration({'password': 'secret'}, initial={'username': 'django'})
- self.assertEqual(p.errors['username'], [u'This field is required.'])
+ self.assertEqual(p.errors['username'], ['This field is required.'])
self.assertFalse(p.is_valid())
# If a Form defines 'initial' *and* 'initial' is passed as a parameter to Form(),
@@ -1156,7 +1159,7 @@ class FormsTestCase(TestCase):
<option value="b">bar</option>
<option value="w">whiz</option>
</select></li>""")
- p = UserRegistration({'username': u''}, initial={'username': initial_django}, auto_id=False)
+ p = UserRegistration({'username': ''}, initial={'username': initial_django}, auto_id=False)
self.assertHTMLEqual(p.as_ul(), """<li><ul class="errorlist"><li>This field is required.</li></ul>Username: <input type="text" name="username" maxlength="10" /></li>
<li><ul class="errorlist"><li>This field is required.</li></ul>Password: <input type="password" name="password" /></li>
<li><ul class="errorlist"><li>This field is required.</li></ul>Options: <select multiple="multiple" name="options">
@@ -1164,7 +1167,7 @@ class FormsTestCase(TestCase):
<option value="b">bar</option>
<option value="w">whiz</option>
</select></li>""")
- p = UserRegistration({'username': u'foo', 'options':['f','b']}, initial={'username': initial_django}, auto_id=False)
+ p = UserRegistration({'username': 'foo', 'options':['f','b']}, initial={'username': initial_django}, auto_id=False)
self.assertHTMLEqual(p.as_ul(), """<li>Username: <input type="text" name="username" value="foo" maxlength="10" /></li>
<li><ul class="errorlist"><li>This field is required.</li></ul>Password: <input type="password" name="password" /></li>
<li>Options: <select multiple="multiple" name="options">
@@ -1177,7 +1180,7 @@ class FormsTestCase(TestCase):
# In this example, we don't provide a value for 'username', and the form raises a
# validation error rather than using the initial value for 'username'.
p = UserRegistration({'password': 'secret'}, initial={'username': initial_django, 'options': initial_options})
- self.assertEqual(p.errors['username'], [u'This field is required.'])
+ self.assertEqual(p.errors['username'], ['This field is required.'])
self.assertFalse(p.is_valid())
# If a Form defines 'initial' *and* 'initial' is passed as a parameter to Form(),
@@ -1234,7 +1237,7 @@ class FormsTestCase(TestCase):
<tr><th>Password:</th><td><input type="password" name="password" /><br /><span class="helptext">Choose wisely.</span></td></tr>""")
# The help text is displayed whether or not data is provided for the form.
- p = UserRegistration({'username': u'foo'}, auto_id=False)
+ p = UserRegistration({'username': 'foo'}, auto_id=False)
self.assertHTMLEqual(p.as_ul(), """<li>Username: <input type="text" name="username" value="foo" maxlength="10" /> <span class="helptext">e.g., user@example.com</span></li>
<li><ul class="errorlist"><li>This field is required.</li></ul>Password: <input type="password" name="password" /> <span class="helptext">Choose wisely.</span></li>""")
@@ -1254,7 +1257,7 @@ class FormsTestCase(TestCase):
username = CharField(max_length=10, help_text='ŠĐĆŽćžšđ')
p = UserRegistration(auto_id=False)
- self.assertHTMLEqual(p.as_ul(), u'<li>Username: <input type="text" name="username" maxlength="10" /> <span class="helptext">\u0160\u0110\u0106\u017d\u0107\u017e\u0161\u0111</span></li>')
+ self.assertHTMLEqual(p.as_ul(), '<li>Username: <input type="text" name="username" maxlength="10" /> <span class="helptext">\u0160\u0110\u0106\u017d\u0107\u017e\u0161\u0111</span></li>')
def test_subclassing_forms(self):
# You can subclass a Form to add fields. The resulting form subclass will have
@@ -1312,9 +1315,9 @@ class FormsTestCase(TestCase):
birthday = DateField()
data = {
- 'person1-first_name': u'John',
- 'person1-last_name': u'Lennon',
- 'person1-birthday': u'1940-10-9'
+ 'person1-first_name': 'John',
+ 'person1-last_name': 'Lennon',
+ 'person1-birthday': '1940-10-9'
}
p = Person(data, prefix='person1')
self.assertHTMLEqual(p.as_ul(), """<li><label for="id_person1-first_name">First name:</label> <input type="text" name="person1-first_name" value="John" id="id_person1-first_name" /></li>
@@ -1325,22 +1328,22 @@ class FormsTestCase(TestCase):
self.assertHTMLEqual(str(p['birthday']), '<input type="text" name="person1-birthday" value="1940-10-9" id="id_person1-birthday" />')
self.assertEqual(p.errors, {})
self.assertTrue(p.is_valid())
- self.assertEqual(p.cleaned_data['first_name'], u'John')
- self.assertEqual(p.cleaned_data['last_name'], u'Lennon')
+ self.assertEqual(p.cleaned_data['first_name'], 'John')
+ self.assertEqual(p.cleaned_data['last_name'], 'Lennon')
self.assertEqual(p.cleaned_data['birthday'], datetime.date(1940, 10, 9))
# Let's try submitting some bad data to make sure form.errors and field.errors
# work as expected.
data = {
- 'person1-first_name': u'',
- 'person1-last_name': u'',
- 'person1-birthday': u''
+ 'person1-first_name': '',
+ 'person1-last_name': '',
+ 'person1-birthday': ''
}
p = Person(data, prefix='person1')
- self.assertEqual(p.errors['first_name'], [u'This field is required.'])
- self.assertEqual(p.errors['last_name'], [u'This field is required.'])
- self.assertEqual(p.errors['birthday'], [u'This field is required.'])
- self.assertEqual(p['first_name'].errors, [u'This field is required.'])
+ self.assertEqual(p.errors['first_name'], ['This field is required.'])
+ self.assertEqual(p.errors['last_name'], ['This field is required.'])
+ self.assertEqual(p.errors['birthday'], ['This field is required.'])
+ self.assertEqual(p['first_name'].errors, ['This field is required.'])
try:
p['person1-first_name'].errors
self.fail('Attempts to access non-existent fields should fail.')
@@ -1350,34 +1353,34 @@ class FormsTestCase(TestCase):
# In this example, the data doesn't have a prefix, but the form requires it, so
# the form doesn't "see" the fields.
data = {
- 'first_name': u'John',
- 'last_name': u'Lennon',
- 'birthday': u'1940-10-9'
+ 'first_name': 'John',
+ 'last_name': 'Lennon',
+ 'birthday': '1940-10-9'
}
p = Person(data, prefix='person1')
- self.assertEqual(p.errors['first_name'], [u'This field is required.'])
- self.assertEqual(p.errors['last_name'], [u'This field is required.'])
- self.assertEqual(p.errors['birthday'], [u'This field is required.'])
+ self.assertEqual(p.errors['first_name'], ['This field is required.'])
+ self.assertEqual(p.errors['last_name'], ['This field is required.'])
+ self.assertEqual(p.errors['birthday'], ['This field is required.'])
# With prefixes, a single data dictionary can hold data for multiple instances
# of the same form.
data = {
- 'person1-first_name': u'John',
- 'person1-last_name': u'Lennon',
- 'person1-birthday': u'1940-10-9',
- 'person2-first_name': u'Jim',
- 'person2-last_name': u'Morrison',
- 'person2-birthday': u'1943-12-8'
+ 'person1-first_name': 'John',
+ 'person1-last_name': 'Lennon',
+ 'person1-birthday': '1940-10-9',
+ 'person2-first_name': 'Jim',
+ 'person2-last_name': 'Morrison',
+ 'person2-birthday': '1943-12-8'
}
p1 = Person(data, prefix='person1')
self.assertTrue(p1.is_valid())
- self.assertEqual(p1.cleaned_data['first_name'], u'John')
- self.assertEqual(p1.cleaned_data['last_name'], u'Lennon')
+ self.assertEqual(p1.cleaned_data['first_name'], 'John')
+ self.assertEqual(p1.cleaned_data['last_name'], 'Lennon')
self.assertEqual(p1.cleaned_data['birthday'], datetime.date(1940, 10, 9))
p2 = Person(data, prefix='person2')
self.assertTrue(p2.is_valid())
- self.assertEqual(p2.cleaned_data['first_name'], u'Jim')
- self.assertEqual(p2.cleaned_data['last_name'], u'Morrison')
+ self.assertEqual(p2.cleaned_data['first_name'], 'Jim')
+ self.assertEqual(p2.cleaned_data['last_name'], 'Morrison')
self.assertEqual(p2.cleaned_data['birthday'], datetime.date(1943, 12, 8))
# By default, forms append a hyphen between the prefix and the field name, but a
@@ -1397,14 +1400,14 @@ class FormsTestCase(TestCase):
<li><label for="id_foo-prefix-last_name">Last name:</label> <input type="text" name="foo-prefix-last_name" id="id_foo-prefix-last_name" /></li>
<li><label for="id_foo-prefix-birthday">Birthday:</label> <input type="text" name="foo-prefix-birthday" id="id_foo-prefix-birthday" /></li>""")
data = {
- 'foo-prefix-first_name': u'John',
- 'foo-prefix-last_name': u'Lennon',
- 'foo-prefix-birthday': u'1940-10-9'
+ 'foo-prefix-first_name': 'John',
+ 'foo-prefix-last_name': 'Lennon',
+ 'foo-prefix-birthday': '1940-10-9'
}
p = Person(data, prefix='foo')
self.assertTrue(p.is_valid())
- self.assertEqual(p.cleaned_data['first_name'], u'John')
- self.assertEqual(p.cleaned_data['last_name'], u'Lennon')
+ self.assertEqual(p.cleaned_data['first_name'], 'John')
+ self.assertEqual(p.cleaned_data['last_name'], 'Lennon')
self.assertEqual(p.cleaned_data['birthday'], datetime.date(1940, 10, 9))
def test_forms_with_null_boolean(self):
@@ -1414,37 +1417,37 @@ class FormsTestCase(TestCase):
name = CharField()
is_cool = NullBooleanField()
- p = Person({'name': u'Joe'}, auto_id=False)
+ p = Person({'name': 'Joe'}, auto_id=False)
self.assertHTMLEqual(str(p['is_cool']), """<select name="is_cool">
<option value="1" selected="selected">Unknown</option>
<option value="2">Yes</option>
<option value="3">No</option>
</select>""")
- p = Person({'name': u'Joe', 'is_cool': u'1'}, auto_id=False)
+ p = Person({'name': 'Joe', 'is_cool': '1'}, auto_id=False)
self.assertHTMLEqual(str(p['is_cool']), """<select name="is_cool">
<option value="1" selected="selected">Unknown</option>
<option value="2">Yes</option>
<option value="3">No</option>
</select>""")
- p = Person({'name': u'Joe', 'is_cool': u'2'}, auto_id=False)
+ p = Person({'name': 'Joe', 'is_cool': '2'}, auto_id=False)
self.assertHTMLEqual(str(p['is_cool']), """<select name="is_cool">
<option value="1">Unknown</option>
<option value="2" selected="selected">Yes</option>
<option value="3">No</option>
</select>""")
- p = Person({'name': u'Joe', 'is_cool': u'3'}, auto_id=False)
+ p = Person({'name': 'Joe', 'is_cool': '3'}, auto_id=False)
self.assertHTMLEqual(str(p['is_cool']), """<select name="is_cool">
<option value="1">Unknown</option>
<option value="2">Yes</option>
<option value="3" selected="selected">No</option>
</select>""")
- p = Person({'name': u'Joe', 'is_cool': True}, auto_id=False)
+ p = Person({'name': 'Joe', 'is_cool': True}, auto_id=False)
self.assertHTMLEqual(str(p['is_cool']), """<select name="is_cool">
<option value="1">Unknown</option>
<option value="2" selected="selected">Yes</option>
<option value="3">No</option>
</select>""")
- p = Person({'name': u'Joe', 'is_cool': False}, auto_id=False)
+ p = Person({'name': 'Joe', 'is_cool': False}, auto_id=False)
self.assertHTMLEqual(str(p['is_cool']), """<select name="is_cool">
<option value="1">Unknown</option>
<option value="2">Yes</option>
@@ -1473,7 +1476,7 @@ class FormsTestCase(TestCase):
self.assertHTMLEqual(f.as_table(), '<tr><th>File1:</th><td><input type="file" name="file1" /></td></tr>')
self.assertTrue(f.is_valid())
- f = FileForm(data={}, files={'file1': SimpleUploadedFile('我隻氣墊船裝滿晒鱔.txt', u'मेरी मँडराने वाली नाव सर्पमीनों से भरी ह'.encode('utf-8'))}, auto_id=False)
+ f = FileForm(data={}, files={'file1': SimpleUploadedFile('我隻氣墊船裝滿晒鱔.txt', 'मेरी मँडराने वाली नाव सर्पमीनों से भरी ह'.encode('utf-8'))}, auto_id=False)
self.assertHTMLEqual(f.as_table(), '<tr><th>File1:</th><td><input type="file" name="file1" /></td></tr>')
def test_basic_processing_in_view(self):
@@ -1484,7 +1487,7 @@ class FormsTestCase(TestCase):
def clean(self):
if self.cleaned_data.get('password1') and self.cleaned_data.get('password2') and self.cleaned_data['password1'] != self.cleaned_data['password2']:
- raise ValidationError(u'Please make sure your passwords match.')
+ raise ValidationError('Please make sure your passwords match.')
return self.cleaned_data
@@ -1520,7 +1523,7 @@ class FormsTestCase(TestCase):
<input type="submit" />
</form>""")
# Case 3: POST with valid data (the success message).)
- self.assertHTMLEqual(my_function('POST', {'username': 'adrian', 'password1': 'secret', 'password2': 'secret'}), "VALID: {'username': u'adrian', 'password1': u'secret', 'password2': u'secret'}")
+ self.assertHTMLEqual(my_function('POST', {'username': 'adrian', 'password1': 'secret', 'password2': 'secret'}), str_prefix("VALID: {'username': %(_)s'adrian', 'password1': %(_)s'secret', 'password2': %(_)s'secret'}"))
def test_templates_with_forms(self):
class UserRegistration(Form):
@@ -1530,7 +1533,7 @@ class FormsTestCase(TestCase):
def clean(self):
if self.cleaned_data.get('password1') and self.cleaned_data.get('password2') and self.cleaned_data['password1'] != self.cleaned_data['password2']:
- raise ValidationError(u'Please make sure your passwords match.')
+ raise ValidationError('Please make sure your passwords match.')
return self.cleaned_data
@@ -1612,7 +1615,7 @@ class FormsTestCase(TestCase):
<p>Password2: <input type="password" name="password2" /></p>
<input type="submit" />
</form>""")
- self.assertEqual(Template('{{ form.password1.help_text }}').render(Context({'form': UserRegistration(auto_id=False)})), u'')
+ self.assertEqual(Template('{{ form.password1.help_text }}').render(Context({'form': UserRegistration(auto_id=False)})), '')
# The label_tag() method takes an optional attrs argument: a dictionary of HTML
# attributes to add to the <label> tag.
@@ -1674,7 +1677,7 @@ class FormsTestCase(TestCase):
data = {'artist': '', 'song': ''}
form = SongForm(data, empty_permitted=False)
self.assertFalse(form.is_valid())
- self.assertEqual(form.errors, {'name': [u'This field is required.'], 'artist': [u'This field is required.']})
+ self.assertEqual(form.errors, {'name': ['This field is required.'], 'artist': ['This field is required.']})
try:
form.cleaned_data
self.fail('Attempts to access cleaned_data when validation fails should fail.')
@@ -1692,7 +1695,7 @@ class FormsTestCase(TestCase):
data = {'artist': 'The Doors', 'song': ''}
form = SongForm(data, empty_permitted=False)
self.assertFalse(form.is_valid())
- self.assertEqual(form.errors, {'name': [u'This field is required.']})
+ self.assertEqual(form.errors, {'name': ['This field is required.']})
try:
form.cleaned_data
self.fail('Attempts to access cleaned_data when validation fails should fail.')
@@ -1777,7 +1780,7 @@ class FormsTestCase(TestCase):
happened_at = SplitDateTimeField(widget=widgets.SplitHiddenDateTimeWidget)
form = EventForm()
- self.assertHTMLEqual(form.as_ul(), u'<input type="hidden" name="happened_at_0" id="id_happened_at_0" /><input type="hidden" name="happened_at_1" id="id_happened_at_1" />')
+ self.assertHTMLEqual(form.as_ul(), '<input type="hidden" name="happened_at_0" id="id_happened_at_0" /><input type="hidden" name="happened_at_1" id="id_happened_at_1" />')
def test_multivalue_field_validation(self):
def bad_names(value):
@@ -1799,11 +1802,11 @@ class FormsTestCase(TestCase):
form = NameForm(data={'name' : ['bad', 'value']})
form.full_clean()
self.assertFalse(form.is_valid())
- self.assertEqual(form.errors, {'name': [u'bad value not allowed']})
+ self.assertEqual(form.errors, {'name': ['bad value not allowed']})
form = NameForm(data={'name' : ['should be overly', 'long for the field names']})
self.assertFalse(form.is_valid())
- self.assertEqual(form.errors, {'name': [u'Ensure this value has at most 10 characters (it has 16).',
- u'Ensure this value has at most 10 characters (it has 24).']})
+ self.assertEqual(form.errors, {'name': ['Ensure this value has at most 10 characters (it has 16).',
+ 'Ensure this value has at most 10 characters (it has 24).']})
form = NameForm(data={'name' : ['fname', 'lname']})
self.assertTrue(form.is_valid())
self.assertEqual(form.cleaned_data, {'name' : 'fname lname'})
diff --git a/tests/regressiontests/forms/tests/formsets.py b/tests/regressiontests/forms/tests/formsets.py
index 05ef978c45..3decd1f085 100644
--- a/tests/regressiontests/forms/tests/formsets.py
+++ b/tests/regressiontests/forms/tests/formsets.py
@@ -1,4 +1,6 @@
# -*- coding: utf-8 -*-
+from __future__ import unicode_literals
+
from django.forms import Form, CharField, IntegerField, ValidationError, DateField
from django.forms.formsets import formset_factory, BaseFormSet
from django.test import TestCase
@@ -71,7 +73,7 @@ class FormsFormsetTestCase(TestCase):
formset = ChoiceFormSet(data, auto_id=False, prefix='choices')
self.assertTrue(formset.is_valid())
- self.assertEqual([form.cleaned_data for form in formset.forms], [{'votes': 100, 'choice': u'Calexico'}])
+ self.assertEqual([form.cleaned_data for form in formset.forms], [{'votes': 100, 'choice': 'Calexico'}])
# If a FormSet was not passed any data, its is_valid and has_changed
# methods should return False.
@@ -93,7 +95,7 @@ class FormsFormsetTestCase(TestCase):
formset = ChoiceFormSet(data, auto_id=False, prefix='choices')
self.assertFalse(formset.is_valid())
- self.assertEqual(formset.errors, [{'votes': [u'This field is required.']}])
+ self.assertEqual(formset.errors, [{'votes': ['This field is required.']}])
def test_formset_has_changed(self):
# FormSet instances has_changed method will be True if any data is
@@ -125,7 +127,7 @@ class FormsFormsetTestCase(TestCase):
# argument to the constructor. ``initial`` should be a list of dicts. By default,
# an extra blank form is included.
- initial = [{'choice': u'Calexico', 'votes': 100}]
+ initial = [{'choice': 'Calexico', 'votes': 100}]
formset = ChoiceFormSet(initial=initial, auto_id=False, prefix='choices')
form_output = []
@@ -151,7 +153,7 @@ class FormsFormsetTestCase(TestCase):
formset = ChoiceFormSet(data, auto_id=False, prefix='choices')
self.assertTrue(formset.is_valid())
- self.assertEqual([form.cleaned_data for form in formset.forms], [{'votes': 100, 'choice': u'Calexico'}, {}])
+ self.assertEqual([form.cleaned_data for form in formset.forms], [{'votes': 100, 'choice': 'Calexico'}, {}])
def test_second_form_partially_filled(self):
# But the second form was blank! Shouldn't we get some errors? No. If we display
@@ -172,7 +174,7 @@ class FormsFormsetTestCase(TestCase):
formset = ChoiceFormSet(data, auto_id=False, prefix='choices')
self.assertFalse(formset.is_valid())
- self.assertEqual(formset.errors, [{}, {'votes': [u'This field is required.']}])
+ self.assertEqual(formset.errors, [{}, {'votes': ['This field is required.']}])
def test_delete_prefilled_data(self):
# If we delete data that was pre-filled, we should get an error. Simply removing
@@ -191,7 +193,7 @@ class FormsFormsetTestCase(TestCase):
formset = ChoiceFormSet(data, auto_id=False, prefix='choices')
self.assertFalse(formset.is_valid())
- self.assertEqual(formset.errors, [{'votes': [u'This field is required.'], 'choice': [u'This field is required.']}, {}])
+ self.assertEqual(formset.errors, [{'votes': ['This field is required.'], 'choice': ['This field is required.']}, {}])
def test_displaying_more_than_one_blank_form(self):
# Displaying more than 1 blank form ###########################################
@@ -250,7 +252,7 @@ class FormsFormsetTestCase(TestCase):
ChoiceFormSet = formset_factory(Choice, extra=3)
formset = ChoiceFormSet(data, auto_id=False, prefix='choices')
self.assertTrue(formset.is_valid())
- self.assertEqual([form.cleaned_data for form in formset.forms], [{'votes': 100, 'choice': u'Calexico'}, {}, {}])
+ self.assertEqual([form.cleaned_data for form in formset.forms], [{'votes': 100, 'choice': 'Calexico'}, {}, {}])
def test_second_form_partially_filled_2(self):
# And once again, if we try to partially complete a form, validation will fail.
@@ -270,7 +272,7 @@ class FormsFormsetTestCase(TestCase):
ChoiceFormSet = formset_factory(Choice, extra=3)
formset = ChoiceFormSet(data, auto_id=False, prefix='choices')
self.assertFalse(formset.is_valid())
- self.assertEqual(formset.errors, [{}, {'votes': [u'This field is required.']}, {}])
+ self.assertEqual(formset.errors, [{}, {'votes': ['This field is required.']}, {}])
def test_more_initial_data(self):
# The extra argument also works when the formset is pre-filled with initial
@@ -288,7 +290,7 @@ class FormsFormsetTestCase(TestCase):
'choices-2-votes': '',
}
- initial = [{'choice': u'Calexico', 'votes': 100}]
+ initial = [{'choice': 'Calexico', 'votes': 100}]
ChoiceFormSet = formset_factory(Choice, extra=3)
formset = ChoiceFormSet(initial=initial, auto_id=False, prefix='choices')
form_output = []
@@ -319,7 +321,7 @@ class FormsFormsetTestCase(TestCase):
ChoiceFormSet = formset_factory(Choice, can_delete=True)
- initial = [{'choice': u'Calexico', 'votes': 100}, {'choice': u'Fergie', 'votes': 900}]
+ initial = [{'choice': 'Calexico', 'votes': 100}, {'choice': 'Fergie', 'votes': 900}]
formset = ChoiceFormSet(initial=initial, auto_id=False, prefix='choices')
form_output = []
@@ -356,8 +358,8 @@ class FormsFormsetTestCase(TestCase):
formset = ChoiceFormSet(data, auto_id=False, prefix='choices')
self.assertTrue(formset.is_valid())
- self.assertEqual([form.cleaned_data for form in formset.forms], [{'votes': 100, 'DELETE': False, 'choice': u'Calexico'}, {'votes': 900, 'DELETE': True, 'choice': u'Fergie'}, {}])
- self.assertEqual([form.cleaned_data for form in formset.deleted_forms], [{'votes': 900, 'DELETE': True, 'choice': u'Fergie'}])
+ self.assertEqual([form.cleaned_data for form in formset.forms], [{'votes': 100, 'DELETE': False, 'choice': 'Calexico'}, {'votes': 900, 'DELETE': True, 'choice': 'Fergie'}, {}])
+ self.assertEqual([form.cleaned_data for form in formset.deleted_forms], [{'votes': 900, 'DELETE': True, 'choice': 'Fergie'}])
# If we fill a form with something and then we check the can_delete checkbox for
# that form, that form's errors should not make the entire formset invalid since
@@ -397,7 +399,7 @@ class FormsFormsetTestCase(TestCase):
can_delete=True)
p = PeopleForm(
- {'form-0-name': u'', 'form-0-DELETE': u'on', # no name!
+ {'form-0-name': '', 'form-0-DELETE': 'on', # no name!
'form-TOTAL_FORMS': 1, 'form-INITIAL_FORMS': 1,
'form-MAX_NUM_FORMS': 1})
@@ -416,7 +418,7 @@ class FormsFormsetTestCase(TestCase):
ChoiceFormSet = formset_factory(Choice, can_order=True)
- initial = [{'choice': u'Calexico', 'votes': 100}, {'choice': u'Fergie', 'votes': 900}]
+ initial = [{'choice': 'Calexico', 'votes': 100}, {'choice': 'Fergie', 'votes': 900}]
formset = ChoiceFormSet(initial=initial, auto_id=False, prefix='choices')
form_output = []
@@ -456,9 +458,9 @@ class FormsFormsetTestCase(TestCase):
form_output.append(form.cleaned_data)
self.assertEqual(form_output, [
- {'votes': 500, 'ORDER': 0, 'choice': u'The Decemberists'},
- {'votes': 100, 'ORDER': 1, 'choice': u'Calexico'},
- {'votes': 900, 'ORDER': 2, 'choice': u'Fergie'},
+ {'votes': 500, 'ORDER': 0, 'choice': 'The Decemberists'},
+ {'votes': 100, 'ORDER': 1, 'choice': 'Calexico'},
+ {'votes': 900, 'ORDER': 2, 'choice': 'Fergie'},
])
def test_empty_ordered_fields(self):
@@ -492,10 +494,10 @@ class FormsFormsetTestCase(TestCase):
form_output.append(form.cleaned_data)
self.assertEqual(form_output, [
- {'votes': 100, 'ORDER': 1, 'choice': u'Calexico'},
- {'votes': 900, 'ORDER': 2, 'choice': u'Fergie'},
- {'votes': 500, 'ORDER': None, 'choice': u'The Decemberists'},
- {'votes': 50, 'ORDER': None, 'choice': u'Basia Bulat'},
+ {'votes': 100, 'ORDER': 1, 'choice': 'Calexico'},
+ {'votes': 900, 'ORDER': 2, 'choice': 'Fergie'},
+ {'votes': 500, 'ORDER': None, 'choice': 'The Decemberists'},
+ {'votes': 50, 'ORDER': None, 'choice': 'Basia Bulat'},
])
def test_ordering_blank_fieldsets(self):
@@ -524,9 +526,9 @@ class FormsFormsetTestCase(TestCase):
ChoiceFormSet = formset_factory(Choice, can_order=True, can_delete=True)
initial = [
- {'choice': u'Calexico', 'votes': 100},
- {'choice': u'Fergie', 'votes': 900},
- {'choice': u'The Decemberists', 'votes': 500},
+ {'choice': 'Calexico', 'votes': 100},
+ {'choice': 'Fergie', 'votes': 900},
+ {'choice': 'The Decemberists', 'votes': 500},
]
formset = ChoiceFormSet(initial=initial, auto_id=False, prefix='choices')
form_output = []
@@ -583,10 +585,10 @@ class FormsFormsetTestCase(TestCase):
form_output.append(form.cleaned_data)
self.assertEqual(form_output, [
- {'votes': 500, 'DELETE': False, 'ORDER': 0, 'choice': u'The Decemberists'},
- {'votes': 100, 'DELETE': False, 'ORDER': 1, 'choice': u'Calexico'},
+ {'votes': 500, 'DELETE': False, 'ORDER': 0, 'choice': 'The Decemberists'},
+ {'votes': 100, 'DELETE': False, 'ORDER': 1, 'choice': 'Calexico'},
])
- self.assertEqual([form.cleaned_data for form in formset.deleted_forms], [{'votes': 900, 'DELETE': True, 'ORDER': 2, 'choice': u'Fergie'}])
+ self.assertEqual([form.cleaned_data for form in formset.deleted_forms], [{'votes': 900, 'DELETE': True, 'ORDER': 2, 'choice': 'Fergie'}])
def test_invalid_deleted_form_with_ordering(self):
# Should be able to get ordered forms from a valid formset even if a
@@ -598,8 +600,8 @@ class FormsFormsetTestCase(TestCase):
PeopleForm = formset_factory(form=Person, can_delete=True, can_order=True)
p = PeopleForm({
- 'form-0-name': u'',
- 'form-0-DELETE': u'on', # no name!
+ 'form-0-name': '',
+ 'form-0-DELETE': 'on', # no name!
'form-TOTAL_FORMS': 1,
'form-INITIAL_FORMS': 1,
'form-MAX_NUM_FORMS': 1
@@ -797,7 +799,7 @@ class FormsFormsetTestCase(TestCase):
formset = FavoriteDrinksFormSet(data, prefix='drinks')
self.assertFalse(formset.is_valid())
- self.assertEqual(formset.non_form_errors(), [u'You may only specify a drink once.'])
+ self.assertEqual(formset.non_form_errors(), ['You may only specify a drink once.'])
def test_formset_iteration(self):
# Regression tests for #16455 -- formset instances are iterable
@@ -892,8 +894,8 @@ class TestIsBoundBehavior(TestCase):
def test_with_management_data_attrs_work_fine(self):
data = {
- 'form-TOTAL_FORMS': u'1',
- 'form-INITIAL_FORMS': u'0',
+ 'form-TOTAL_FORMS': '1',
+ 'form-INITIAL_FORMS': '0',
}
formset = ArticleFormSet(data)
self.assertEqual(0, formset.initial_form_count())
@@ -907,23 +909,23 @@ class TestIsBoundBehavior(TestCase):
def test_form_errors_are_cought_by_formset(self):
data = {
- 'form-TOTAL_FORMS': u'2',
- 'form-INITIAL_FORMS': u'0',
- 'form-0-title': u'Test',
- 'form-0-pub_date': u'1904-06-16',
- 'form-1-title': u'Test',
- 'form-1-pub_date': u'', # <-- this date is missing but required
+ 'form-TOTAL_FORMS': '2',
+ 'form-INITIAL_FORMS': '0',
+ 'form-0-title': 'Test',
+ 'form-0-pub_date': '1904-06-16',
+ 'form-1-title': 'Test',
+ 'form-1-pub_date': '', # <-- this date is missing but required
}
formset = ArticleFormSet(data)
self.assertFalse(formset.is_valid())
- self.assertEqual([{}, {'pub_date': [u'This field is required.']}], formset.errors)
+ self.assertEqual([{}, {'pub_date': ['This field is required.']}], formset.errors)
def test_empty_forms_are_unbound(self):
data = {
- 'form-TOTAL_FORMS': u'1',
- 'form-INITIAL_FORMS': u'0',
- 'form-0-title': u'Test',
- 'form-0-pub_date': u'1904-06-16',
+ 'form-TOTAL_FORMS': '1',
+ 'form-INITIAL_FORMS': '0',
+ 'form-0-title': 'Test',
+ 'form-0-pub_date': '1904-06-16',
}
unbound_formset = ArticleFormSet()
bound_formset = ArticleFormSet(data)
diff --git a/tests/regressiontests/forms/tests/models.py b/tests/regressiontests/forms/tests/models.py
index 7f569651c7..5bea49b840 100644
--- a/tests/regressiontests/forms/tests/models.py
+++ b/tests/regressiontests/forms/tests/models.py
@@ -1,5 +1,5 @@
# -*- coding: utf-8 -*-
-from __future__ import absolute_import
+from __future__ import absolute_import, unicode_literals
import datetime
@@ -106,11 +106,11 @@ class ModelFormCallableModelDefault(TestCase):
class FormsModelTestCase(TestCase):
def test_unicode_filename(self):
# FileModel with unicode filename and data #########################
- f = FileForm(data={}, files={'file1': SimpleUploadedFile('我隻氣墊船裝滿晒鱔.txt', u'मेरी मँडराने वाली नाव सर्पमीनों से भरी ह'.encode('utf-8'))}, auto_id=False)
+ f = FileForm(data={}, files={'file1': SimpleUploadedFile('我隻氣墊船裝滿晒鱔.txt', 'मेरी मँडराने वाली नाव सर्पमीनों से भरी ह'.encode('utf-8'))}, auto_id=False)
self.assertTrue(f.is_valid())
self.assertTrue('file1' in f.cleaned_data)
m = FileModel.objects.create(file=f.cleaned_data['file1'])
- self.assertEqual(m.file.name, u'tests/\u6211\u96bb\u6c23\u588a\u8239\u88dd\u6eff\u6652\u9c54.txt')
+ self.assertEqual(m.file.name, 'tests/\u6211\u96bb\u6c23\u588a\u8239\u88dd\u6eff\u6652\u9c54.txt')
m.delete()
def test_boundary_conditions(self):
@@ -134,7 +134,7 @@ class FormsModelTestCase(TestCase):
class Meta:
model = Defaults
- self.assertEqual(DefaultsForm().fields['name'].initial, u'class default value')
+ self.assertEqual(DefaultsForm().fields['name'].initial, 'class default value')
self.assertEqual(DefaultsForm().fields['def_date'].initial, datetime.date(1980, 1, 1))
self.assertEqual(DefaultsForm().fields['value'].initial, 42)
r1 = DefaultsForm()['callable_default'].as_widget()
@@ -143,9 +143,9 @@ class FormsModelTestCase(TestCase):
# In a ModelForm that is passed an instance, the initial values come from the
# instance's values, not the model's defaults.
- foo_instance = Defaults(name=u'instance value', def_date=datetime.date(1969, 4, 4), value=12)
+ foo_instance = Defaults(name='instance value', def_date=datetime.date(1969, 4, 4), value=12)
instance_form = DefaultsForm(instance=foo_instance)
- self.assertEqual(instance_form.initial['name'], u'instance value')
+ self.assertEqual(instance_form.initial['name'], 'instance value')
self.assertEqual(instance_form.initial['def_date'], datetime.date(1969, 4, 4))
self.assertEqual(instance_form.initial['value'], 12)
@@ -158,11 +158,11 @@ class FormsModelTestCase(TestCase):
model = Defaults
exclude = ['name', 'callable_default']
- f = ExcludingForm({'name': u'Hello', 'value': 99, 'def_date': datetime.date(1999, 3, 2)})
+ f = ExcludingForm({'name': 'Hello', 'value': 99, 'def_date': datetime.date(1999, 3, 2)})
self.assertTrue(f.is_valid())
- self.assertEqual(f.cleaned_data['name'], u'Hello')
+ self.assertEqual(f.cleaned_data['name'], 'Hello')
obj = f.save()
- self.assertEqual(obj.name, u'class default value')
+ self.assertEqual(obj.name, 'class default value')
self.assertEqual(obj.value, 99)
self.assertEqual(obj.def_date, datetime.date(1999, 3, 2))
diff --git a/tests/regressiontests/forms/tests/regressions.py b/tests/regressiontests/forms/tests/regressions.py
index 20c11f99a8..45f51eef2f 100644
--- a/tests/regressiontests/forms/tests/regressions.py
+++ b/tests/regressiontests/forms/tests/regressions.py
@@ -1,4 +1,8 @@
# -*- coding: utf-8 -*-
+from __future__ import unicode_literals
+
+from warnings import catch_warnings
+
from django.forms import *
from django.test import TestCase
from django.utils.translation import ugettext_lazy, override
@@ -15,7 +19,7 @@ class FormsRegressionsTestCase(TestCase):
f1 = CharField(max_length=10, widget=TextInput(attrs=extra_attrs))
f2 = CharField(widget=TextInput(attrs=extra_attrs))
- self.assertHTMLEqual(TestForm(auto_id=False).as_p(), u'<p>F1: <input type="text" class="special" name="f1" maxlength="10" /></p>\n<p>F2: <input type="text" class="special" name="f2" /></p>')
+ self.assertHTMLEqual(TestForm(auto_id=False).as_p(), '<p>F1: <input type="text" class="special" name="f1" maxlength="10" /></p>\n<p>F2: <input type="text" class="special" name="f2" /></p>')
def test_regression_3600(self):
# Tests for form i18n #
@@ -31,7 +35,7 @@ class FormsRegressionsTestCase(TestCase):
with override('de'):
self.assertHTMLEqual(f.as_p(), '<p><label for="id_username">Benutzername:</label> <input id="id_username" type="text" name="username" maxlength="10" /></p>')
with override('pl', deactivate=True):
- self.assertHTMLEqual(f.as_p(), u'<p><label for="id_username">Nazwa u\u017cytkownika:</label> <input id="id_username" type="text" name="username" maxlength="10" /></p>')
+ self.assertHTMLEqual(f.as_p(), '<p><label for="id_username">Nazwa u\u017cytkownika:</label> <input id="id_username" type="text" name="username" maxlength="10" /></p>')
def test_regression_5216(self):
# There was some problems with form translations in #5216
@@ -44,26 +48,28 @@ class FormsRegressionsTestCase(TestCase):
self.assertHTMLEqual(f['field_2'].label_tag(), '<label for="field_2_id">field_2</label>')
# Unicode decoding problems...
- GENDERS = ((u'\xc5', u'En tied\xe4'), (u'\xf8', u'Mies'), (u'\xdf', u'Nainen'))
+ GENDERS = (('\xc5', 'En tied\xe4'), ('\xf8', 'Mies'), ('\xdf', 'Nainen'))
class SomeForm(Form):
- somechoice = ChoiceField(choices=GENDERS, widget=RadioSelect(), label=u'\xc5\xf8\xdf')
+ somechoice = ChoiceField(choices=GENDERS, widget=RadioSelect(), label='\xc5\xf8\xdf')
f = SomeForm()
- self.assertHTMLEqual(f.as_p(), u'<p><label for="id_somechoice_0">\xc5\xf8\xdf:</label> <ul>\n<li><label for="id_somechoice_0"><input type="radio" id="id_somechoice_0" value="\xc5" name="somechoice" /> En tied\xe4</label></li>\n<li><label for="id_somechoice_1"><input type="radio" id="id_somechoice_1" value="\xf8" name="somechoice" /> Mies</label></li>\n<li><label for="id_somechoice_2"><input type="radio" id="id_somechoice_2" value="\xdf" name="somechoice" /> Nainen</label></li>\n</ul></p>')
+ self.assertHTMLEqual(f.as_p(), '<p><label for="id_somechoice_0">\xc5\xf8\xdf:</label> <ul>\n<li><label for="id_somechoice_0"><input type="radio" id="id_somechoice_0" value="\xc5" name="somechoice" /> En tied\xe4</label></li>\n<li><label for="id_somechoice_1"><input type="radio" id="id_somechoice_1" value="\xf8" name="somechoice" /> Mies</label></li>\n<li><label for="id_somechoice_2"><input type="radio" id="id_somechoice_2" value="\xdf" name="somechoice" /> Nainen</label></li>\n</ul></p>')
# Testing choice validation with UTF-8 bytestrings as input (these are the
# Russian abbreviations "мес." and "шт.".
UNITS = ((b'\xd0\xbc\xd0\xb5\xd1\x81.', b'\xd0\xbc\xd0\xb5\xd1\x81.'),
(b'\xd1\x88\xd1\x82.', b'\xd1\x88\xd1\x82.'))
f = ChoiceField(choices=UNITS)
- self.assertEqual(f.clean(u'\u0448\u0442.'), u'\u0448\u0442.')
- self.assertEqual(f.clean(b'\xd1\x88\xd1\x82.'), u'\u0448\u0442.')
+ self.assertEqual(f.clean('\u0448\u0442.'), '\u0448\u0442.')
+ with catch_warnings(record=True):
+ # Ignore UnicodeWarning
+ self.assertEqual(f.clean(b'\xd1\x88\xd1\x82.'), '\u0448\u0442.')
# Translated error messages used to be buggy.
with override('ru'):
f = SomeForm({})
- self.assertHTMLEqual(f.as_p(), u'<ul class="errorlist"><li>\u041e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0435 \u043f\u043e\u043b\u0435.</li></ul>\n<p><label for="id_somechoice_0">\xc5\xf8\xdf:</label> <ul>\n<li><label for="id_somechoice_0"><input type="radio" id="id_somechoice_0" value="\xc5" name="somechoice" /> En tied\xe4</label></li>\n<li><label for="id_somechoice_1"><input type="radio" id="id_somechoice_1" value="\xf8" name="somechoice" /> Mies</label></li>\n<li><label for="id_somechoice_2"><input type="radio" id="id_somechoice_2" value="\xdf" name="somechoice" /> Nainen</label></li>\n</ul></p>')
+ self.assertHTMLEqual(f.as_p(), '<ul class="errorlist"><li>\u041e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0435 \u043f\u043e\u043b\u0435.</li></ul>\n<p><label for="id_somechoice_0">\xc5\xf8\xdf:</label> <ul>\n<li><label for="id_somechoice_0"><input type="radio" id="id_somechoice_0" value="\xc5" name="somechoice" /> En tied\xe4</label></li>\n<li><label for="id_somechoice_1"><input type="radio" id="id_somechoice_1" value="\xf8" name="somechoice" /> Mies</label></li>\n<li><label for="id_somechoice_2"><input type="radio" id="id_somechoice_2" value="\xdf" name="somechoice" /> Nainen</label></li>\n</ul></p>')
# Deep copying translated text shouldn't raise an error)
from django.utils.translation import gettext_lazy
@@ -81,15 +87,15 @@ class FormsRegressionsTestCase(TestCase):
f = DataForm({'data': 'xyzzy'})
self.assertTrue(f.is_valid())
- self.assertEqual(f.cleaned_data, {'data': u'xyzzy'})
+ self.assertEqual(f.cleaned_data, {'data': 'xyzzy'})
# A form with *only* hidden fields that has errors is going to be very unusual.
class HiddenForm(Form):
data = IntegerField(widget=HiddenInput)
f = HiddenForm({})
- self.assertHTMLEqual(f.as_p(), u'<ul class="errorlist"><li>(Hidden field data) This field is required.</li></ul>\n<p> <input type="hidden" name="data" id="id_data" /></p>')
- self.assertHTMLEqual(f.as_table(), u'<tr><td colspan="2"><ul class="errorlist"><li>(Hidden field data) This field is required.</li></ul><input type="hidden" name="data" id="id_data" /></td></tr>')
+ self.assertHTMLEqual(f.as_p(), '<ul class="errorlist"><li>(Hidden field data) This field is required.</li></ul>\n<p> <input type="hidden" name="data" id="id_data" /></p>')
+ self.assertHTMLEqual(f.as_table(), '<tr><td colspan="2"><ul class="errorlist"><li>(Hidden field data) This field is required.</li></ul><input type="hidden" name="data" id="id_data" /></td></tr>')
def test_xss_error_messages(self):
###################################################
@@ -107,13 +113,13 @@ class FormsRegressionsTestCase(TestCase):
field = ChoiceField(choices=[('one', 'One')])
f = SomeForm({'field': '<script>'})
- self.assertHTMLEqual(t.render(Context({'form': f})), u'<ul class="errorlist"><li>field<ul class="errorlist"><li>Select a valid choice. &lt;script&gt; is not one of the available choices.</li></ul></li></ul>')
+ self.assertHTMLEqual(t.render(Context({'form': f})), '<ul class="errorlist"><li>field<ul class="errorlist"><li>Select a valid choice. &lt;script&gt; is not one of the available choices.</li></ul></li></ul>')
class SomeForm(Form):
field = MultipleChoiceField(choices=[('one', 'One')])
f = SomeForm({'field': ['<script>']})
- self.assertHTMLEqual(t.render(Context({'form': f})), u'<ul class="errorlist"><li>field<ul class="errorlist"><li>Select a valid choice. &lt;script&gt; is not one of the available choices.</li></ul></li></ul>')
+ self.assertHTMLEqual(t.render(Context({'form': f})), '<ul class="errorlist"><li>field<ul class="errorlist"><li>Select a valid choice. &lt;script&gt; is not one of the available choices.</li></ul></li></ul>')
from regressiontests.forms.models import ChoiceModel
@@ -121,7 +127,7 @@ class FormsRegressionsTestCase(TestCase):
field = ModelMultipleChoiceField(ChoiceModel.objects.all())
f = SomeForm({'field': ['<script>']})
- self.assertHTMLEqual(t.render(Context({'form': f})), u'<ul class="errorlist"><li>field<ul class="errorlist"><li>&quot;&lt;script&gt;&quot; is not a valid value for a primary key.</li></ul></li></ul>')
+ self.assertHTMLEqual(t.render(Context({'form': f})), '<ul class="errorlist"><li>field<ul class="errorlist"><li>&quot;&lt;script&gt;&quot; is not a valid value for a primary key.</li></ul></li></ul>')
def test_regression_14234(self):
"""
diff --git a/tests/regressiontests/forms/tests/util.py b/tests/regressiontests/forms/tests/util.py
index dddb8c7e56..280049c97b 100644
--- a/tests/regressiontests/forms/tests/util.py
+++ b/tests/regressiontests/forms/tests/util.py
@@ -1,4 +1,6 @@
# -*- coding: utf-8 -*-
+from __future__ import unicode_literals
+
from django.core.exceptions import ValidationError
from django.forms.util import flatatt, ErrorDict, ErrorList
from django.test import TestCase
@@ -14,9 +16,9 @@ class FormsUtilTestCase(TestCase):
# flatatt #
###########
- self.assertEqual(flatatt({'id': "header"}), u' id="header"')
- self.assertEqual(flatatt({'class': "news", 'title': "Read this"}), u' class="news" title="Read this"')
- self.assertEqual(flatatt({}), u'')
+ self.assertEqual(flatatt({'id': "header"}), ' id="header"')
+ self.assertEqual(flatatt({'class': "news", 'title': "Read this"}), ' class="news" title="Read this"')
+ self.assertEqual(flatatt({}), '')
def test_validation_error(self):
###################
@@ -28,8 +30,8 @@ class FormsUtilTestCase(TestCase):
'<ul class="errorlist"><li>There was an error.</li></ul>')
# Can take a unicode string.
- self.assertHTMLEqual(unicode(ErrorList(ValidationError(u"Not \u03C0.").messages)),
- u'<ul class="errorlist"><li>Not π.</li></ul>')
+ self.assertHTMLEqual(unicode(ErrorList(ValidationError("Not \u03C0.").messages)),
+ '<ul class="errorlist"><li>Not π.</li></ul>')
# Can take a lazy string.
self.assertHTMLEqual(str(ErrorList(ValidationError(ugettext_lazy("Error.")).messages)),
@@ -40,11 +42,11 @@ class FormsUtilTestCase(TestCase):
'<ul class="errorlist"><li>Error one.</li><li>Error two.</li></ul>')
# Can take a mixture in a list.
- self.assertHTMLEqual(str(ErrorList(ValidationError(["First error.", u"Not \u03C0.", ugettext_lazy("Error.")]).messages)),
+ self.assertHTMLEqual(str(ErrorList(ValidationError(["First error.", "Not \u03C0.", ugettext_lazy("Error.")]).messages)),
'<ul class="errorlist"><li>First error.</li><li>Not π.</li><li>Error.</li></ul>')
class VeryBadError:
- def __unicode__(self): return u"A very bad error."
+ def __unicode__(self): return "A very bad error."
# Can take a non-string.
self.assertHTMLEqual(str(ErrorList(ValidationError(VeryBadError()).messages)),
diff --git a/tests/regressiontests/forms/tests/widgets.py b/tests/regressiontests/forms/tests/widgets.py
index 8630b45666..d5f6334fe9 100644
--- a/tests/regressiontests/forms/tests/widgets.py
+++ b/tests/regressiontests/forms/tests/widgets.py
@@ -1,4 +1,5 @@
# -*- coding: utf-8 -*-
+from __future__ import unicode_literals
import copy
import datetime
@@ -19,127 +20,127 @@ class FormsWidgetTestCase(TestCase):
# validation.
def test_textinput(self):
w = TextInput()
- self.assertHTMLEqual(w.render('email', ''), u'<input type="text" name="email" />')
- self.assertHTMLEqual(w.render('email', None), u'<input type="text" name="email" />')
- self.assertHTMLEqual(w.render('email', 'test@example.com'), u'<input type="text" name="email" value="test@example.com" />')
- self.assertHTMLEqual(w.render('email', 'some "quoted" & ampersanded value'), u'<input type="text" name="email" value="some &quot;quoted&quot; &amp; ampersanded value" />')
- self.assertHTMLEqual(w.render('email', 'test@example.com', attrs={'class': 'fun'}), u'<input type="text" name="email" value="test@example.com" class="fun" />')
+ self.assertHTMLEqual(w.render('email', ''), '<input type="text" name="email" />')
+ self.assertHTMLEqual(w.render('email', None), '<input type="text" name="email" />')
+ self.assertHTMLEqual(w.render('email', 'test@example.com'), '<input type="text" name="email" value="test@example.com" />')
+ self.assertHTMLEqual(w.render('email', 'some "quoted" & ampersanded value'), '<input type="text" name="email" value="some &quot;quoted&quot; &amp; ampersanded value" />')
+ self.assertHTMLEqual(w.render('email', 'test@example.com', attrs={'class': 'fun'}), '<input type="text" name="email" value="test@example.com" class="fun" />')
- self.assertHTMLEqual(w.render('email', 'ŠĐĆŽćžšđ', attrs={'class': 'fun'}), u'<input type="text" name="email" value="\u0160\u0110\u0106\u017d\u0107\u017e\u0161\u0111" class="fun" />')
+ self.assertHTMLEqual(w.render('email', 'ŠĐĆŽćžšđ', attrs={'class': 'fun'}), '<input type="text" name="email" value="\u0160\u0110\u0106\u017d\u0107\u017e\u0161\u0111" class="fun" />')
# You can also pass 'attrs' to the constructor:
w = TextInput(attrs={'class': 'fun'})
- self.assertHTMLEqual(w.render('email', ''), u'<input type="text" class="fun" name="email" />')
- self.assertHTMLEqual(w.render('email', 'foo@example.com'), u'<input type="text" class="fun" value="foo@example.com" name="email" />')
+ self.assertHTMLEqual(w.render('email', ''), '<input type="text" class="fun" name="email" />')
+ self.assertHTMLEqual(w.render('email', 'foo@example.com'), '<input type="text" class="fun" value="foo@example.com" name="email" />')
# 'attrs' passed to render() get precedence over those passed to the constructor:
w = TextInput(attrs={'class': 'pretty'})
- self.assertHTMLEqual(w.render('email', '', attrs={'class': 'special'}), u'<input type="text" class="special" name="email" />')
+ self.assertHTMLEqual(w.render('email', '', attrs={'class': 'special'}), '<input type="text" class="special" name="email" />')
# 'attrs' can be safe-strings if needed)
w = TextInput(attrs={'onBlur': mark_safe("function('foo')")})
- self.assertHTMLEqual(w.render('email', ''), u'<input onBlur="function(\'foo\')" type="text" name="email" />')
+ self.assertHTMLEqual(w.render('email', ''), '<input onBlur="function(\'foo\')" type="text" name="email" />')
def test_passwordinput(self):
w = PasswordInput()
- self.assertHTMLEqual(w.render('email', ''), u'<input type="password" name="email" />')
- self.assertHTMLEqual(w.render('email', None), u'<input type="password" name="email" />')
- self.assertHTMLEqual(w.render('email', 'secret'), u'<input type="password" name="email" />')
+ self.assertHTMLEqual(w.render('email', ''), '<input type="password" name="email" />')
+ self.assertHTMLEqual(w.render('email', None), '<input type="password" name="email" />')
+ self.assertHTMLEqual(w.render('email', 'secret'), '<input type="password" name="email" />')
# The render_value argument lets you specify whether the widget should render
# its value. For security reasons, this is off by default.
w = PasswordInput(render_value=True)
- self.assertHTMLEqual(w.render('email', ''), u'<input type="password" name="email" />')
- self.assertHTMLEqual(w.render('email', None), u'<input type="password" name="email" />')
- self.assertHTMLEqual(w.render('email', 'test@example.com'), u'<input type="password" name="email" value="test@example.com" />')
- self.assertHTMLEqual(w.render('email', 'some "quoted" & ampersanded value'), u'<input type="password" name="email" value="some &quot;quoted&quot; &amp; ampersanded value" />')
- self.assertHTMLEqual(w.render('email', 'test@example.com', attrs={'class': 'fun'}), u'<input type="password" name="email" value="test@example.com" class="fun" />')
+ self.assertHTMLEqual(w.render('email', ''), '<input type="password" name="email" />')
+ self.assertHTMLEqual(w.render('email', None), '<input type="password" name="email" />')
+ self.assertHTMLEqual(w.render('email', 'test@example.com'), '<input type="password" name="email" value="test@example.com" />')
+ self.assertHTMLEqual(w.render('email', 'some "quoted" & ampersanded value'), '<input type="password" name="email" value="some &quot;quoted&quot; &amp; ampersanded value" />')
+ self.assertHTMLEqual(w.render('email', 'test@example.com', attrs={'class': 'fun'}), '<input type="password" name="email" value="test@example.com" class="fun" />')
# You can also pass 'attrs' to the constructor:
w = PasswordInput(attrs={'class': 'fun'}, render_value=True)
- self.assertHTMLEqual(w.render('email', ''), u'<input type="password" class="fun" name="email" />')
- self.assertHTMLEqual(w.render('email', 'foo@example.com'), u'<input type="password" class="fun" value="foo@example.com" name="email" />')
+ self.assertHTMLEqual(w.render('email', ''), '<input type="password" class="fun" name="email" />')
+ self.assertHTMLEqual(w.render('email', 'foo@example.com'), '<input type="password" class="fun" value="foo@example.com" name="email" />')
# 'attrs' passed to render() get precedence over those passed to the constructor:
w = PasswordInput(attrs={'class': 'pretty'}, render_value=True)
- self.assertHTMLEqual(w.render('email', '', attrs={'class': 'special'}), u'<input type="password" class="special" name="email" />')
+ self.assertHTMLEqual(w.render('email', '', attrs={'class': 'special'}), '<input type="password" class="special" name="email" />')
- self.assertHTMLEqual(w.render('email', 'ŠĐĆŽćžšđ', attrs={'class': 'fun'}), u'<input type="password" class="fun" value="\u0160\u0110\u0106\u017d\u0107\u017e\u0161\u0111" name="email" />')
+ self.assertHTMLEqual(w.render('email', 'ŠĐĆŽćžšđ', attrs={'class': 'fun'}), '<input type="password" class="fun" value="\u0160\u0110\u0106\u017d\u0107\u017e\u0161\u0111" name="email" />')
def test_hiddeninput(self):
w = HiddenInput()
- self.assertHTMLEqual(w.render('email', ''), u'<input type="hidden" name="email" />')
- self.assertHTMLEqual(w.render('email', None), u'<input type="hidden" name="email" />')
- self.assertHTMLEqual(w.render('email', 'test@example.com'), u'<input type="hidden" name="email" value="test@example.com" />')
- self.assertHTMLEqual(w.render('email', 'some "quoted" & ampersanded value'), u'<input type="hidden" name="email" value="some &quot;quoted&quot; &amp; ampersanded value" />')
- self.assertHTMLEqual(w.render('email', 'test@example.com', attrs={'class': 'fun'}), u'<input type="hidden" name="email" value="test@example.com" class="fun" />')
+ self.assertHTMLEqual(w.render('email', ''), '<input type="hidden" name="email" />')
+ self.assertHTMLEqual(w.render('email', None), '<input type="hidden" name="email" />')
+ self.assertHTMLEqual(w.render('email', 'test@example.com'), '<input type="hidden" name="email" value="test@example.com" />')
+ self.assertHTMLEqual(w.render('email', 'some "quoted" & ampersanded value'), '<input type="hidden" name="email" value="some &quot;quoted&quot; &amp; ampersanded value" />')
+ self.assertHTMLEqual(w.render('email', 'test@example.com', attrs={'class': 'fun'}), '<input type="hidden" name="email" value="test@example.com" class="fun" />')
# You can also pass 'attrs' to the constructor:
w = HiddenInput(attrs={'class': 'fun'})
- self.assertHTMLEqual(w.render('email', ''), u'<input type="hidden" class="fun" name="email" />')
- self.assertHTMLEqual(w.render('email', 'foo@example.com'), u'<input type="hidden" class="fun" value="foo@example.com" name="email" />')
+ self.assertHTMLEqual(w.render('email', ''), '<input type="hidden" class="fun" name="email" />')
+ self.assertHTMLEqual(w.render('email', 'foo@example.com'), '<input type="hidden" class="fun" value="foo@example.com" name="email" />')
# 'attrs' passed to render() get precedence over those passed to the constructor:
w = HiddenInput(attrs={'class': 'pretty'})
- self.assertHTMLEqual(w.render('email', '', attrs={'class': 'special'}), u'<input type="hidden" class="special" name="email" />')
+ self.assertHTMLEqual(w.render('email', '', attrs={'class': 'special'}), '<input type="hidden" class="special" name="email" />')
- self.assertHTMLEqual(w.render('email', 'ŠĐĆŽćžšđ', attrs={'class': 'fun'}), u'<input type="hidden" class="fun" value="\u0160\u0110\u0106\u017d\u0107\u017e\u0161\u0111" name="email" />')
+ self.assertHTMLEqual(w.render('email', 'ŠĐĆŽćžšđ', attrs={'class': 'fun'}), '<input type="hidden" class="fun" value="\u0160\u0110\u0106\u017d\u0107\u017e\u0161\u0111" name="email" />')
# 'attrs' passed to render() get precedence over those passed to the constructor:
w = HiddenInput(attrs={'class': 'pretty'})
- self.assertHTMLEqual(w.render('email', '', attrs={'class': 'special'}), u'<input type="hidden" class="special" name="email" />')
+ self.assertHTMLEqual(w.render('email', '', attrs={'class': 'special'}), '<input type="hidden" class="special" name="email" />')
# Boolean values are rendered to their string forms ("True" and "False").
w = HiddenInput()
- self.assertHTMLEqual(w.render('get_spam', False), u'<input type="hidden" name="get_spam" value="False" />')
- self.assertHTMLEqual(w.render('get_spam', True), u'<input type="hidden" name="get_spam" value="True" />')
+ self.assertHTMLEqual(w.render('get_spam', False), '<input type="hidden" name="get_spam" value="False" />')
+ self.assertHTMLEqual(w.render('get_spam', True), '<input type="hidden" name="get_spam" value="True" />')
def test_multiplehiddeninput(self):
w = MultipleHiddenInput()
- self.assertHTMLEqual(w.render('email', []), u'')
- self.assertHTMLEqual(w.render('email', None), u'')
- self.assertHTMLEqual(w.render('email', ['test@example.com']), u'<input type="hidden" name="email" value="test@example.com" />')
- self.assertHTMLEqual(w.render('email', ['some "quoted" & ampersanded value']), u'<input type="hidden" name="email" value="some &quot;quoted&quot; &amp; ampersanded value" />')
- self.assertHTMLEqual(w.render('email', ['test@example.com', 'foo@example.com']), u'<input type="hidden" name="email" value="test@example.com" />\n<input type="hidden" name="email" value="foo@example.com" />')
- self.assertHTMLEqual(w.render('email', ['test@example.com'], attrs={'class': 'fun'}), u'<input type="hidden" name="email" value="test@example.com" class="fun" />')
- self.assertHTMLEqual(w.render('email', ['test@example.com', 'foo@example.com'], attrs={'class': 'fun'}), u'<input type="hidden" name="email" value="test@example.com" class="fun" />\n<input type="hidden" name="email" value="foo@example.com" class="fun" />')
+ self.assertHTMLEqual(w.render('email', []), '')
+ self.assertHTMLEqual(w.render('email', None), '')
+ self.assertHTMLEqual(w.render('email', ['test@example.com']), '<input type="hidden" name="email" value="test@example.com" />')
+ self.assertHTMLEqual(w.render('email', ['some "quoted" & ampersanded value']), '<input type="hidden" name="email" value="some &quot;quoted&quot; &amp; ampersanded value" />')
+ self.assertHTMLEqual(w.render('email', ['test@example.com', 'foo@example.com']), '<input type="hidden" name="email" value="test@example.com" />\n<input type="hidden" name="email" value="foo@example.com" />')
+ self.assertHTMLEqual(w.render('email', ['test@example.com'], attrs={'class': 'fun'}), '<input type="hidden" name="email" value="test@example.com" class="fun" />')
+ self.assertHTMLEqual(w.render('email', ['test@example.com', 'foo@example.com'], attrs={'class': 'fun'}), '<input type="hidden" name="email" value="test@example.com" class="fun" />\n<input type="hidden" name="email" value="foo@example.com" class="fun" />')
# You can also pass 'attrs' to the constructor:
w = MultipleHiddenInput(attrs={'class': 'fun'})
- self.assertHTMLEqual(w.render('email', []), u'')
- self.assertHTMLEqual(w.render('email', ['foo@example.com']), u'<input type="hidden" class="fun" value="foo@example.com" name="email" />')
- self.assertHTMLEqual(w.render('email', ['foo@example.com', 'test@example.com']), u'<input type="hidden" class="fun" value="foo@example.com" name="email" />\n<input type="hidden" class="fun" value="test@example.com" name="email" />')
+ self.assertHTMLEqual(w.render('email', []), '')
+ self.assertHTMLEqual(w.render('email', ['foo@example.com']), '<input type="hidden" class="fun" value="foo@example.com" name="email" />')
+ self.assertHTMLEqual(w.render('email', ['foo@example.com', 'test@example.com']), '<input type="hidden" class="fun" value="foo@example.com" name="email" />\n<input type="hidden" class="fun" value="test@example.com" name="email" />')
# 'attrs' passed to render() get precedence over those passed to the constructor:
w = MultipleHiddenInput(attrs={'class': 'pretty'})
- self.assertHTMLEqual(w.render('email', ['foo@example.com'], attrs={'class': 'special'}), u'<input type="hidden" class="special" value="foo@example.com" name="email" />')
+ self.assertHTMLEqual(w.render('email', ['foo@example.com'], attrs={'class': 'special'}), '<input type="hidden" class="special" value="foo@example.com" name="email" />')
- self.assertHTMLEqual(w.render('email', ['ŠĐĆŽćžšđ'], attrs={'class': 'fun'}), u'<input type="hidden" class="fun" value="\u0160\u0110\u0106\u017d\u0107\u017e\u0161\u0111" name="email" />')
+ self.assertHTMLEqual(w.render('email', ['ŠĐĆŽćžšđ'], attrs={'class': 'fun'}), '<input type="hidden" class="fun" value="\u0160\u0110\u0106\u017d\u0107\u017e\u0161\u0111" name="email" />')
# 'attrs' passed to render() get precedence over those passed to the constructor:
w = MultipleHiddenInput(attrs={'class': 'pretty'})
- self.assertHTMLEqual(w.render('email', ['foo@example.com'], attrs={'class': 'special'}), u'<input type="hidden" class="special" value="foo@example.com" name="email" />')
+ self.assertHTMLEqual(w.render('email', ['foo@example.com'], attrs={'class': 'special'}), '<input type="hidden" class="special" value="foo@example.com" name="email" />')
# Each input gets a separate ID.
w = MultipleHiddenInput()
- self.assertHTMLEqual(w.render('letters', list('abc'), attrs={'id': 'hideme'}), u'<input type="hidden" name="letters" value="a" id="hideme_0" />\n<input type="hidden" name="letters" value="b" id="hideme_1" />\n<input type="hidden" name="letters" value="c" id="hideme_2" />')
+ self.assertHTMLEqual(w.render('letters', list('abc'), attrs={'id': 'hideme'}), '<input type="hidden" name="letters" value="a" id="hideme_0" />\n<input type="hidden" name="letters" value="b" id="hideme_1" />\n<input type="hidden" name="letters" value="c" id="hideme_2" />')
def test_fileinput(self):
# FileInput widgets don't ever show the value, because the old value is of no use
# if you are updating the form or if the provided file generated an error.
w = FileInput()
- self.assertHTMLEqual(w.render('email', ''), u'<input type="file" name="email" />')
- self.assertHTMLEqual(w.render('email', None), u'<input type="file" name="email" />')
- self.assertHTMLEqual(w.render('email', 'test@example.com'), u'<input type="file" name="email" />')
- self.assertHTMLEqual(w.render('email', 'some "quoted" & ampersanded value'), u'<input type="file" name="email" />')
- self.assertHTMLEqual(w.render('email', 'test@example.com', attrs={'class': 'fun'}), u'<input type="file" name="email" class="fun" />')
+ self.assertHTMLEqual(w.render('email', ''), '<input type="file" name="email" />')
+ self.assertHTMLEqual(w.render('email', None), '<input type="file" name="email" />')
+ self.assertHTMLEqual(w.render('email', 'test@example.com'), '<input type="file" name="email" />')
+ self.assertHTMLEqual(w.render('email', 'some "quoted" & ampersanded value'), '<input type="file" name="email" />')
+ self.assertHTMLEqual(w.render('email', 'test@example.com', attrs={'class': 'fun'}), '<input type="file" name="email" class="fun" />')
# You can also pass 'attrs' to the constructor:
w = FileInput(attrs={'class': 'fun'})
- self.assertHTMLEqual(w.render('email', ''), u'<input type="file" class="fun" name="email" />')
- self.assertHTMLEqual(w.render('email', 'foo@example.com'), u'<input type="file" class="fun" name="email" />')
+ self.assertHTMLEqual(w.render('email', ''), '<input type="file" class="fun" name="email" />')
+ self.assertHTMLEqual(w.render('email', 'foo@example.com'), '<input type="file" class="fun" name="email" />')
- self.assertHTMLEqual(w.render('email', 'ŠĐĆŽćžšđ', attrs={'class': 'fun'}), u'<input type="file" class="fun" name="email" />')
+ self.assertHTMLEqual(w.render('email', 'ŠĐĆŽćžšđ', attrs={'class': 'fun'}), '<input type="file" class="fun" name="email" />')
# Test for the behavior of _has_changed for FileInput. The value of data will
# more than likely come from request.FILES. The value of initial data will
@@ -148,13 +149,13 @@ class FormsWidgetTestCase(TestCase):
w = FileInput()
# No file was uploaded and no initial data.
- self.assertFalse(w._has_changed(u'', None))
+ self.assertFalse(w._has_changed('', None))
# A file was uploaded and no initial data.
- self.assertTrue(w._has_changed(u'', {'filename': 'resume.txt', 'content': 'My resume'}))
+ self.assertTrue(w._has_changed('', {'filename': 'resume.txt', 'content': 'My resume'}))
# A file was not uploaded, but there is initial data
- self.assertFalse(w._has_changed(u'resume.txt', None))
+ self.assertFalse(w._has_changed('resume.txt', None))
# A file was uploaded and there is initial data (file identity is not dealt
# with here)
@@ -162,64 +163,64 @@ class FormsWidgetTestCase(TestCase):
def test_textarea(self):
w = Textarea()
- self.assertHTMLEqual(w.render('msg', ''), u'<textarea rows="10" cols="40" name="msg"></textarea>')
- self.assertHTMLEqual(w.render('msg', None), u'<textarea rows="10" cols="40" name="msg"></textarea>')
- self.assertHTMLEqual(w.render('msg', 'value'), u'<textarea rows="10" cols="40" name="msg">value</textarea>')
- self.assertHTMLEqual(w.render('msg', 'some "quoted" & ampersanded value'), u'<textarea rows="10" cols="40" name="msg">some &quot;quoted&quot; &amp; ampersanded value</textarea>')
- self.assertHTMLEqual(w.render('msg', mark_safe('pre &quot;quoted&quot; value')), u'<textarea rows="10" cols="40" name="msg">pre &quot;quoted&quot; value</textarea>')
- self.assertHTMLEqual(w.render('msg', 'value', attrs={'class': 'pretty', 'rows': 20}), u'<textarea class="pretty" rows="20" cols="40" name="msg">value</textarea>')
+ self.assertHTMLEqual(w.render('msg', ''), '<textarea rows="10" cols="40" name="msg"></textarea>')
+ self.assertHTMLEqual(w.render('msg', None), '<textarea rows="10" cols="40" name="msg"></textarea>')
+ self.assertHTMLEqual(w.render('msg', 'value'), '<textarea rows="10" cols="40" name="msg">value</textarea>')
+ self.assertHTMLEqual(w.render('msg', 'some "quoted" & ampersanded value'), '<textarea rows="10" cols="40" name="msg">some &quot;quoted&quot; &amp; ampersanded value</textarea>')
+ self.assertHTMLEqual(w.render('msg', mark_safe('pre &quot;quoted&quot; value')), '<textarea rows="10" cols="40" name="msg">pre &quot;quoted&quot; value</textarea>')
+ self.assertHTMLEqual(w.render('msg', 'value', attrs={'class': 'pretty', 'rows': 20}), '<textarea class="pretty" rows="20" cols="40" name="msg">value</textarea>')
# You can also pass 'attrs' to the constructor:
w = Textarea(attrs={'class': 'pretty'})
- self.assertHTMLEqual(w.render('msg', ''), u'<textarea rows="10" cols="40" name="msg" class="pretty"></textarea>')
- self.assertHTMLEqual(w.render('msg', 'example'), u'<textarea rows="10" cols="40" name="msg" class="pretty">example</textarea>')
+ self.assertHTMLEqual(w.render('msg', ''), '<textarea rows="10" cols="40" name="msg" class="pretty"></textarea>')
+ self.assertHTMLEqual(w.render('msg', 'example'), '<textarea rows="10" cols="40" name="msg" class="pretty">example</textarea>')
# 'attrs' passed to render() get precedence over those passed to the constructor:
w = Textarea(attrs={'class': 'pretty'})
- self.assertHTMLEqual(w.render('msg', '', attrs={'class': 'special'}), u'<textarea rows="10" cols="40" name="msg" class="special"></textarea>')
+ self.assertHTMLEqual(w.render('msg', '', attrs={'class': 'special'}), '<textarea rows="10" cols="40" name="msg" class="special"></textarea>')
- self.assertHTMLEqual(w.render('msg', 'ŠĐĆŽćžšđ', attrs={'class': 'fun'}), u'<textarea rows="10" cols="40" name="msg" class="fun">\u0160\u0110\u0106\u017d\u0107\u017e\u0161\u0111</textarea>')
+ self.assertHTMLEqual(w.render('msg', 'ŠĐĆŽćžšđ', attrs={'class': 'fun'}), '<textarea rows="10" cols="40" name="msg" class="fun">\u0160\u0110\u0106\u017d\u0107\u017e\u0161\u0111</textarea>')
def test_checkboxinput(self):
w = CheckboxInput()
- self.assertHTMLEqual(w.render('is_cool', ''), u'<input type="checkbox" name="is_cool" />')
- self.assertHTMLEqual(w.render('is_cool', None), u'<input type="checkbox" name="is_cool" />')
- self.assertHTMLEqual(w.render('is_cool', False), u'<input type="checkbox" name="is_cool" />')
- self.assertHTMLEqual(w.render('is_cool', True), u'<input checked="checked" type="checkbox" name="is_cool" />')
+ self.assertHTMLEqual(w.render('is_cool', ''), '<input type="checkbox" name="is_cool" />')
+ self.assertHTMLEqual(w.render('is_cool', None), '<input type="checkbox" name="is_cool" />')
+ self.assertHTMLEqual(w.render('is_cool', False), '<input type="checkbox" name="is_cool" />')
+ self.assertHTMLEqual(w.render('is_cool', True), '<input checked="checked" type="checkbox" name="is_cool" />')
# Using any value that's not in ('', None, False, True) will check the checkbox
# and set the 'value' attribute.
- self.assertHTMLEqual(w.render('is_cool', 'foo'), u'<input checked="checked" type="checkbox" name="is_cool" value="foo" />')
+ self.assertHTMLEqual(w.render('is_cool', 'foo'), '<input checked="checked" type="checkbox" name="is_cool" value="foo" />')
- self.assertHTMLEqual(w.render('is_cool', False, attrs={'class': 'pretty'}), u'<input type="checkbox" name="is_cool" class="pretty" />')
+ self.assertHTMLEqual(w.render('is_cool', False, attrs={'class': 'pretty'}), '<input type="checkbox" name="is_cool" class="pretty" />')
# regression for #17114
- self.assertHTMLEqual(w.render('is_cool', 0), u'<input checked="checked" type="checkbox" name="is_cool" value="0" />')
- self.assertHTMLEqual(w.render('is_cool', 1), u'<input checked="checked" type="checkbox" name="is_cool" value="1" />')
+ self.assertHTMLEqual(w.render('is_cool', 0), '<input checked="checked" type="checkbox" name="is_cool" value="0" />')
+ self.assertHTMLEqual(w.render('is_cool', 1), '<input checked="checked" type="checkbox" name="is_cool" value="1" />')
# You can also pass 'attrs' to the constructor:
w = CheckboxInput(attrs={'class': 'pretty'})
- self.assertHTMLEqual(w.render('is_cool', ''), u'<input type="checkbox" class="pretty" name="is_cool" />')
+ self.assertHTMLEqual(w.render('is_cool', ''), '<input type="checkbox" class="pretty" name="is_cool" />')
# 'attrs' passed to render() get precedence over those passed to the constructor:
w = CheckboxInput(attrs={'class': 'pretty'})
- self.assertHTMLEqual(w.render('is_cool', '', attrs={'class': 'special'}), u'<input type="checkbox" class="special" name="is_cool" />')
+ self.assertHTMLEqual(w.render('is_cool', '', attrs={'class': 'special'}), '<input type="checkbox" class="special" name="is_cool" />')
# You can pass 'check_test' to the constructor. This is a callable that takes the
# value and returns True if the box should be checked.
w = CheckboxInput(check_test=lambda value: value.startswith('hello'))
- self.assertHTMLEqual(w.render('greeting', ''), u'<input type="checkbox" name="greeting" />')
- self.assertHTMLEqual(w.render('greeting', 'hello'), u'<input checked="checked" type="checkbox" name="greeting" value="hello" />')
- self.assertHTMLEqual(w.render('greeting', 'hello there'), u'<input checked="checked" type="checkbox" name="greeting" value="hello there" />')
- self.assertHTMLEqual(w.render('greeting', 'hello & goodbye'), u'<input checked="checked" type="checkbox" name="greeting" value="hello &amp; goodbye" />')
+ self.assertHTMLEqual(w.render('greeting', ''), '<input type="checkbox" name="greeting" />')
+ self.assertHTMLEqual(w.render('greeting', 'hello'), '<input checked="checked" type="checkbox" name="greeting" value="hello" />')
+ self.assertHTMLEqual(w.render('greeting', 'hello there'), '<input checked="checked" type="checkbox" name="greeting" value="hello there" />')
+ self.assertHTMLEqual(w.render('greeting', 'hello & goodbye'), '<input checked="checked" type="checkbox" name="greeting" value="hello &amp; goodbye" />')
# A subtlety: If the 'check_test' argument cannot handle a value and raises any
# exception during its __call__, then the exception will be swallowed and the box
# will not be checked. In this example, the 'check_test' assumes the value has a
# startswith() method, which fails for the values True, False and None.
- self.assertHTMLEqual(w.render('greeting', True), u'<input type="checkbox" name="greeting" />')
- self.assertHTMLEqual(w.render('greeting', False), u'<input type="checkbox" name="greeting" />')
- self.assertHTMLEqual(w.render('greeting', None), u'<input type="checkbox" name="greeting" />')
+ self.assertHTMLEqual(w.render('greeting', True), '<input type="checkbox" name="greeting" />')
+ self.assertHTMLEqual(w.render('greeting', False), '<input type="checkbox" name="greeting" />')
+ self.assertHTMLEqual(w.render('greeting', None), '<input type="checkbox" name="greeting" />')
# The CheckboxInput widget will return False if the key is not found in the data
# dictionary (because HTML form submission doesn't send any result for unchecked
@@ -227,12 +228,12 @@ class FormsWidgetTestCase(TestCase):
self.assertFalse(w.value_from_datadict({}, {}, 'testing'))
self.assertFalse(w._has_changed(None, None))
- self.assertFalse(w._has_changed(None, u''))
- self.assertFalse(w._has_changed(u'', None))
- self.assertFalse(w._has_changed(u'', u''))
- self.assertTrue(w._has_changed(False, u'on'))
- self.assertFalse(w._has_changed(True, u'on'))
- self.assertTrue(w._has_changed(True, u''))
+ self.assertFalse(w._has_changed(None, ''))
+ self.assertFalse(w._has_changed('', None))
+ self.assertFalse(w._has_changed('', ''))
+ self.assertTrue(w._has_changed(False, 'on'))
+ self.assertFalse(w._has_changed(True, 'on'))
+ self.assertTrue(w._has_changed(True, ''))
def test_select(self):
w = Select()
@@ -301,10 +302,10 @@ class FormsWidgetTestCase(TestCase):
class SomeForm(Form):
somechoice = ChoiceField(choices=chain((('', '-'*9),), [(thing['id'], thing['name']) for thing in things]))
f = SomeForm()
- self.assertHTMLEqual(f.as_table(), u'<tr><th><label for="id_somechoice">Somechoice:</label></th><td><select name="somechoice" id="id_somechoice">\n<option value="" selected="selected">---------</option>\n<option value="1">And Boom</option>\n<option value="2">One More Thing!</option>\n</select></td></tr>')
- self.assertHTMLEqual(f.as_table(), u'<tr><th><label for="id_somechoice">Somechoice:</label></th><td><select name="somechoice" id="id_somechoice">\n<option value="" selected="selected">---------</option>\n<option value="1">And Boom</option>\n<option value="2">One More Thing!</option>\n</select></td></tr>')
+ self.assertHTMLEqual(f.as_table(), '<tr><th><label for="id_somechoice">Somechoice:</label></th><td><select name="somechoice" id="id_somechoice">\n<option value="" selected="selected">---------</option>\n<option value="1">And Boom</option>\n<option value="2">One More Thing!</option>\n</select></td></tr>')
+ self.assertHTMLEqual(f.as_table(), '<tr><th><label for="id_somechoice">Somechoice:</label></th><td><select name="somechoice" id="id_somechoice">\n<option value="" selected="selected">---------</option>\n<option value="1">And Boom</option>\n<option value="2">One More Thing!</option>\n</select></td></tr>')
f = SomeForm({'somechoice': 2})
- self.assertHTMLEqual(f.as_table(), u'<tr><th><label for="id_somechoice">Somechoice:</label></th><td><select name="somechoice" id="id_somechoice">\n<option value="">---------</option>\n<option value="1">And Boom</option>\n<option value="2" selected="selected">One More Thing!</option>\n</select></td></tr>')
+ self.assertHTMLEqual(f.as_table(), '<tr><th><label for="id_somechoice">Somechoice:</label></th><td><select name="somechoice" id="id_somechoice">\n<option value="">---------</option>\n<option value="1">And Boom</option>\n<option value="2" selected="selected">One More Thing!</option>\n</select></td></tr>')
# You can also pass 'choices' to the constructor:
w = Select(choices=[(1, 1), (2, 2), (3, 3)])
@@ -333,7 +334,7 @@ class FormsWidgetTestCase(TestCase):
</select>""")
# Unicode choices are correctly rendered as HTML
- self.assertHTMLEqual(w.render('email', 'ŠĐĆŽćžšđ', choices=[('ŠĐĆŽćžšđ', 'ŠĐabcĆŽćžšđ'), ('ćžšđ', 'abcćžšđ')]), u'<select name="email">\n<option value="1">1</option>\n<option value="2">2</option>\n<option value="3">3</option>\n<option value="\u0160\u0110\u0106\u017d\u0107\u017e\u0161\u0111" selected="selected">\u0160\u0110abc\u0106\u017d\u0107\u017e\u0161\u0111</option>\n<option value="\u0107\u017e\u0161\u0111">abc\u0107\u017e\u0161\u0111</option>\n</select>')
+ self.assertHTMLEqual(w.render('email', 'ŠĐĆŽćžšđ', choices=[('ŠĐĆŽćžšđ', 'ŠĐabcĆŽćžšđ'), ('ćžšđ', 'abcćžšđ')]), '<select name="email">\n<option value="1">1</option>\n<option value="2">2</option>\n<option value="3">3</option>\n<option value="\u0160\u0110\u0106\u017d\u0107\u017e\u0161\u0111" selected="selected">\u0160\u0110abc\u0106\u017d\u0107\u017e\u0161\u0111</option>\n<option value="\u0107\u017e\u0161\u0111">abc\u0107\u017e\u0161\u0111</option>\n</select>')
# If choices is passed to the constructor and is a generator, it can be iterated
# over multiple times without getting consumed:
@@ -524,15 +525,15 @@ class FormsWidgetTestCase(TestCase):
</select>""")
# Unicode choices are correctly rendered as HTML
- self.assertHTMLEqual(w.render('nums', ['ŠĐĆŽćžšđ'], choices=[('ŠĐĆŽćžšđ', 'ŠĐabcĆŽćžšđ'), ('ćžšđ', 'abcćžšđ')]), u'<select multiple="multiple" name="nums">\n<option value="1">1</option>\n<option value="2">2</option>\n<option value="3">3</option>\n<option value="\u0160\u0110\u0106\u017d\u0107\u017e\u0161\u0111" selected="selected">\u0160\u0110abc\u0106\u017d\u0107\u017e\u0161\u0111</option>\n<option value="\u0107\u017e\u0161\u0111">abc\u0107\u017e\u0161\u0111</option>\n</select>')
+ self.assertHTMLEqual(w.render('nums', ['ŠĐĆŽćžšđ'], choices=[('ŠĐĆŽćžšđ', 'ŠĐabcĆŽćžšđ'), ('ćžšđ', 'abcćžšđ')]), '<select multiple="multiple" name="nums">\n<option value="1">1</option>\n<option value="2">2</option>\n<option value="3">3</option>\n<option value="\u0160\u0110\u0106\u017d\u0107\u017e\u0161\u0111" selected="selected">\u0160\u0110abc\u0106\u017d\u0107\u017e\u0161\u0111</option>\n<option value="\u0107\u017e\u0161\u0111">abc\u0107\u017e\u0161\u0111</option>\n</select>')
# Test the usage of _has_changed
self.assertFalse(w._has_changed(None, None))
self.assertFalse(w._has_changed([], None))
- self.assertTrue(w._has_changed(None, [u'1']))
- self.assertFalse(w._has_changed([1, 2], [u'1', u'2']))
- self.assertTrue(w._has_changed([1, 2], [u'1']))
- self.assertTrue(w._has_changed([1, 2], [u'1', u'3']))
+ self.assertTrue(w._has_changed(None, ['1']))
+ self.assertFalse(w._has_changed([1, 2], ['1', '2']))
+ self.assertTrue(w._has_changed([1, 2], ['1']))
+ self.assertTrue(w._has_changed([1, 2], ['1', '3']))
# Choices can be nested one level in order to create HTML optgroups:
w.choices = (('outer1', 'Outer 1'), ('Group "1"', (('inner1', 'Inner 1'), ('inner2', 'Inner 2'))))
@@ -675,7 +676,7 @@ beatle J R Ringo False""")
# You can create your own custom renderers for RadioSelect to use.
class MyRenderer(RadioFieldRenderer):
def render(self):
- return u'<br />\n'.join([unicode(choice) for choice in self])
+ return '<br />\n'.join([unicode(choice) for choice in self])
w = RadioSelect(renderer=MyRenderer)
self.assertHTMLEqual(w.render('beatle', 'G', choices=(('J', 'John'), ('P', 'Paul'), ('G', 'George'), ('R', 'Ringo'))), """<label><input type="radio" name="beatle" value="J" /> John</label><br />
<label><input type="radio" name="beatle" value="P" /> Paul</label><br />
@@ -698,7 +699,7 @@ beatle J R Ringo False""")
self.assertHTMLEqual(str(r[0]), '<label><input checked="checked" type="radio" name="beatle" value="J" /> John</label>')
self.assertTrue(r[0].is_checked())
self.assertFalse(r[1].is_checked())
- self.assertEqual((r[1].name, r[1].value, r[1].choice_value, r[1].choice_label), ('beatle', u'J', u'P', u'Paul'))
+ self.assertEqual((r[1].name, r[1].value, r[1].choice_value, r[1].choice_label), ('beatle', 'J', 'P', 'Paul'))
try:
r[10]
@@ -715,7 +716,7 @@ beatle J R Ringo False""")
# Unicode choices are correctly rendered as HTML
w = RadioSelect()
- self.assertHTMLEqual(unicode(w.render('email', 'ŠĐĆŽćžšđ', choices=[('ŠĐĆŽćžšđ', 'ŠĐabcĆŽćžšđ'), ('ćžšđ', 'abcćžšđ')])), u'<ul>\n<li><label><input checked="checked" type="radio" name="email" value="\u0160\u0110\u0106\u017d\u0107\u017e\u0161\u0111" /> \u0160\u0110abc\u0106\u017d\u0107\u017e\u0161\u0111</label></li>\n<li><label><input type="radio" name="email" value="\u0107\u017e\u0161\u0111" /> abc\u0107\u017e\u0161\u0111</label></li>\n</ul>')
+ self.assertHTMLEqual(unicode(w.render('email', 'ŠĐĆŽćžšđ', choices=[('ŠĐĆŽćžšđ', 'ŠĐabcĆŽćžšđ'), ('ćžšđ', 'abcćžšđ')])), '<ul>\n<li><label><input checked="checked" type="radio" name="email" value="\u0160\u0110\u0106\u017d\u0107\u017e\u0161\u0111" /> \u0160\u0110abc\u0106\u017d\u0107\u017e\u0161\u0111</label></li>\n<li><label><input type="radio" name="email" value="\u0107\u017e\u0161\u0111" /> abc\u0107\u017e\u0161\u0111</label></li>\n</ul>')
# Attributes provided at instantiation are passed to the constituent inputs
w = RadioSelect(attrs={'id':'foo'})
@@ -838,14 +839,14 @@ beatle J R Ringo False""")
# Test the usage of _has_changed
self.assertFalse(w._has_changed(None, None))
self.assertFalse(w._has_changed([], None))
- self.assertTrue(w._has_changed(None, [u'1']))
- self.assertFalse(w._has_changed([1, 2], [u'1', u'2']))
- self.assertTrue(w._has_changed([1, 2], [u'1']))
- self.assertTrue(w._has_changed([1, 2], [u'1', u'3']))
- self.assertFalse(w._has_changed([2, 1], [u'1', u'2']))
+ self.assertTrue(w._has_changed(None, ['1']))
+ self.assertFalse(w._has_changed([1, 2], ['1', '2']))
+ self.assertTrue(w._has_changed([1, 2], ['1']))
+ self.assertTrue(w._has_changed([1, 2], ['1', '3']))
+ self.assertFalse(w._has_changed([2, 1], ['1', '2']))
# Unicode choices are correctly rendered as HTML
- self.assertHTMLEqual(w.render('nums', ['ŠĐĆŽćžšđ'], choices=[('ŠĐĆŽćžšđ', 'ŠĐabcĆŽćžšđ'), ('ćžšđ', 'abcćžšđ')]), u'<ul>\n<li><label><input type="checkbox" name="nums" value="1" /> 1</label></li>\n<li><label><input type="checkbox" name="nums" value="2" /> 2</label></li>\n<li><label><input type="checkbox" name="nums" value="3" /> 3</label></li>\n<li><label><input checked="checked" type="checkbox" name="nums" value="\u0160\u0110\u0106\u017d\u0107\u017e\u0161\u0111" /> \u0160\u0110abc\u0106\u017d\u0107\u017e\u0161\u0111</label></li>\n<li><label><input type="checkbox" name="nums" value="\u0107\u017e\u0161\u0111" /> abc\u0107\u017e\u0161\u0111</label></li>\n</ul>')
+ self.assertHTMLEqual(w.render('nums', ['ŠĐĆŽćžšđ'], choices=[('ŠĐĆŽćžšđ', 'ŠĐabcĆŽćžšđ'), ('ćžšđ', 'abcćžšđ')]), '<ul>\n<li><label><input type="checkbox" name="nums" value="1" /> 1</label></li>\n<li><label><input type="checkbox" name="nums" value="2" /> 2</label></li>\n<li><label><input type="checkbox" name="nums" value="3" /> 3</label></li>\n<li><label><input checked="checked" type="checkbox" name="nums" value="\u0160\u0110\u0106\u017d\u0107\u017e\u0161\u0111" /> \u0160\u0110abc\u0106\u017d\u0107\u017e\u0161\u0111</label></li>\n<li><label><input type="checkbox" name="nums" value="\u0107\u017e\u0161\u0111" /> abc\u0107\u017e\u0161\u0111</label></li>\n</ul>')
# Each input gets a separate ID
self.assertHTMLEqual(CheckboxSelectMultiple().render('letters', list('ac'), choices=zip(list('abc'), list('ABC')), attrs={'id': 'abc'}), """<ul>
@@ -861,63 +862,63 @@ beatle J R Ringo False""")
return value.split('__')
return ['', '']
def format_output(self, rendered_widgets):
- return u'<br />'.join(rendered_widgets)
+ return '<br />'.join(rendered_widgets)
w = MyMultiWidget(widgets=(TextInput(attrs={'class': 'big'}), TextInput(attrs={'class': 'small'})))
- self.assertHTMLEqual(w.render('name', ['john', 'lennon']), u'<input type="text" class="big" value="john" name="name_0" /><br /><input type="text" class="small" value="lennon" name="name_1" />')
- self.assertHTMLEqual(w.render('name', 'john__lennon'), u'<input type="text" class="big" value="john" name="name_0" /><br /><input type="text" class="small" value="lennon" name="name_1" />')
- self.assertHTMLEqual(w.render('name', 'john__lennon', attrs={'id':'foo'}), u'<input id="foo_0" type="text" class="big" value="john" name="name_0" /><br /><input id="foo_1" type="text" class="small" value="lennon" name="name_1" />')
+ self.assertHTMLEqual(w.render('name', ['john', 'lennon']), '<input type="text" class="big" value="john" name="name_0" /><br /><input type="text" class="small" value="lennon" name="name_1" />')
+ self.assertHTMLEqual(w.render('name', 'john__lennon'), '<input type="text" class="big" value="john" name="name_0" /><br /><input type="text" class="small" value="lennon" name="name_1" />')
+ self.assertHTMLEqual(w.render('name', 'john__lennon', attrs={'id':'foo'}), '<input id="foo_0" type="text" class="big" value="john" name="name_0" /><br /><input id="foo_1" type="text" class="small" value="lennon" name="name_1" />')
w = MyMultiWidget(widgets=(TextInput(attrs={'class': 'big'}), TextInput(attrs={'class': 'small'})), attrs={'id': 'bar'})
- self.assertHTMLEqual(w.render('name', ['john', 'lennon']), u'<input id="bar_0" type="text" class="big" value="john" name="name_0" /><br /><input id="bar_1" type="text" class="small" value="lennon" name="name_1" />')
+ self.assertHTMLEqual(w.render('name', ['john', 'lennon']), '<input id="bar_0" type="text" class="big" value="john" name="name_0" /><br /><input id="bar_1" type="text" class="small" value="lennon" name="name_1" />')
w = MyMultiWidget(widgets=(TextInput(), TextInput()))
# test with no initial data
- self.assertTrue(w._has_changed(None, [u'john', u'lennon']))
+ self.assertTrue(w._has_changed(None, ['john', 'lennon']))
# test when the data is the same as initial
- self.assertFalse(w._has_changed(u'john__lennon', [u'john', u'lennon']))
+ self.assertFalse(w._has_changed('john__lennon', ['john', 'lennon']))
# test when the first widget's data has changed
- self.assertTrue(w._has_changed(u'john__lennon', [u'alfred', u'lennon']))
+ self.assertTrue(w._has_changed('john__lennon', ['alfred', 'lennon']))
# test when the last widget's data has changed. this ensures that it is not
# short circuiting while testing the widgets.
- self.assertTrue(w._has_changed(u'john__lennon', [u'john', u'denver']))
+ self.assertTrue(w._has_changed('john__lennon', ['john', 'denver']))
def test_splitdatetime(self):
w = SplitDateTimeWidget()
- self.assertHTMLEqual(w.render('date', ''), u'<input type="text" name="date_0" /><input type="text" name="date_1" />')
- self.assertHTMLEqual(w.render('date', None), u'<input type="text" name="date_0" /><input type="text" name="date_1" />')
- self.assertHTMLEqual(w.render('date', datetime.datetime(2006, 1, 10, 7, 30)), u'<input type="text" name="date_0" value="2006-01-10" /><input type="text" name="date_1" value="07:30:00" />')
- self.assertHTMLEqual(w.render('date', [datetime.date(2006, 1, 10), datetime.time(7, 30)]), u'<input type="text" name="date_0" value="2006-01-10" /><input type="text" name="date_1" value="07:30:00" />')
+ self.assertHTMLEqual(w.render('date', ''), '<input type="text" name="date_0" /><input type="text" name="date_1" />')
+ self.assertHTMLEqual(w.render('date', None), '<input type="text" name="date_0" /><input type="text" name="date_1" />')
+ self.assertHTMLEqual(w.render('date', datetime.datetime(2006, 1, 10, 7, 30)), '<input type="text" name="date_0" value="2006-01-10" /><input type="text" name="date_1" value="07:30:00" />')
+ self.assertHTMLEqual(w.render('date', [datetime.date(2006, 1, 10), datetime.time(7, 30)]), '<input type="text" name="date_0" value="2006-01-10" /><input type="text" name="date_1" value="07:30:00" />')
# You can also pass 'attrs' to the constructor. In this case, the attrs will be
w = SplitDateTimeWidget(attrs={'class': 'pretty'})
- self.assertHTMLEqual(w.render('date', datetime.datetime(2006, 1, 10, 7, 30)), u'<input type="text" class="pretty" value="2006-01-10" name="date_0" /><input type="text" class="pretty" value="07:30:00" name="date_1" />')
+ self.assertHTMLEqual(w.render('date', datetime.datetime(2006, 1, 10, 7, 30)), '<input type="text" class="pretty" value="2006-01-10" name="date_0" /><input type="text" class="pretty" value="07:30:00" name="date_1" />')
# Use 'date_format' and 'time_format' to change the way a value is displayed.
w = SplitDateTimeWidget(date_format='%d/%m/%Y', time_format='%H:%M')
- self.assertHTMLEqual(w.render('date', datetime.datetime(2006, 1, 10, 7, 30)), u'<input type="text" name="date_0" value="10/01/2006" /><input type="text" name="date_1" value="07:30" />')
+ self.assertHTMLEqual(w.render('date', datetime.datetime(2006, 1, 10, 7, 30)), '<input type="text" name="date_0" value="10/01/2006" /><input type="text" name="date_1" value="07:30" />')
- self.assertTrue(w._has_changed(datetime.datetime(2008, 5, 6, 12, 40, 00), [u'2008-05-06', u'12:40:00']))
- self.assertFalse(w._has_changed(datetime.datetime(2008, 5, 6, 12, 40, 00), [u'06/05/2008', u'12:40']))
- self.assertTrue(w._has_changed(datetime.datetime(2008, 5, 6, 12, 40, 00), [u'06/05/2008', u'12:41']))
+ self.assertTrue(w._has_changed(datetime.datetime(2008, 5, 6, 12, 40, 00), ['2008-05-06', '12:40:00']))
+ self.assertFalse(w._has_changed(datetime.datetime(2008, 5, 6, 12, 40, 00), ['06/05/2008', '12:40']))
+ self.assertTrue(w._has_changed(datetime.datetime(2008, 5, 6, 12, 40, 00), ['06/05/2008', '12:41']))
def test_datetimeinput(self):
w = DateTimeInput()
- self.assertHTMLEqual(w.render('date', None), u'<input type="text" name="date" />')
+ self.assertHTMLEqual(w.render('date', None), '<input type="text" name="date" />')
d = datetime.datetime(2007, 9, 17, 12, 51, 34, 482548)
self.assertEqual(str(d), '2007-09-17 12:51:34.482548')
# The microseconds are trimmed on display, by default.
- self.assertHTMLEqual(w.render('date', d), u'<input type="text" name="date" value="2007-09-17 12:51:34" />')
- self.assertHTMLEqual(w.render('date', datetime.datetime(2007, 9, 17, 12, 51, 34)), u'<input type="text" name="date" value="2007-09-17 12:51:34" />')
- self.assertHTMLEqual(w.render('date', datetime.datetime(2007, 9, 17, 12, 51)), u'<input type="text" name="date" value="2007-09-17 12:51:00" />')
+ self.assertHTMLEqual(w.render('date', d), '<input type="text" name="date" value="2007-09-17 12:51:34" />')
+ self.assertHTMLEqual(w.render('date', datetime.datetime(2007, 9, 17, 12, 51, 34)), '<input type="text" name="date" value="2007-09-17 12:51:34" />')
+ self.assertHTMLEqual(w.render('date', datetime.datetime(2007, 9, 17, 12, 51)), '<input type="text" name="date" value="2007-09-17 12:51:00" />')
# Use 'format' to change the way a value is displayed.
w = DateTimeInput(format='%d/%m/%Y %H:%M')
- self.assertHTMLEqual(w.render('date', d), u'<input type="text" name="date" value="17/09/2007 12:51" />')
+ self.assertHTMLEqual(w.render('date', d), '<input type="text" name="date" value="17/09/2007 12:51" />')
self.assertFalse(w._has_changed(d, '17/09/2007 12:51'))
# Make sure a custom format works with _has_changed. The hidden input will use
@@ -928,19 +929,19 @@ beatle J R Ringo False""")
def test_dateinput(self):
w = DateInput()
- self.assertHTMLEqual(w.render('date', None), u'<input type="text" name="date" />')
+ self.assertHTMLEqual(w.render('date', None), '<input type="text" name="date" />')
d = datetime.date(2007, 9, 17)
self.assertEqual(str(d), '2007-09-17')
- self.assertHTMLEqual(w.render('date', d), u'<input type="text" name="date" value="2007-09-17" />')
- self.assertHTMLEqual(w.render('date', datetime.date(2007, 9, 17)), u'<input type="text" name="date" value="2007-09-17" />')
+ self.assertHTMLEqual(w.render('date', d), '<input type="text" name="date" value="2007-09-17" />')
+ self.assertHTMLEqual(w.render('date', datetime.date(2007, 9, 17)), '<input type="text" name="date" value="2007-09-17" />')
# We should be able to initialize from a unicode value.
- self.assertHTMLEqual(w.render('date', u'2007-09-17'), u'<input type="text" name="date" value="2007-09-17" />')
+ self.assertHTMLEqual(w.render('date', '2007-09-17'), '<input type="text" name="date" value="2007-09-17" />')
# Use 'format' to change the way a value is displayed.
w = DateInput(format='%d/%m/%Y')
- self.assertHTMLEqual(w.render('date', d), u'<input type="text" name="date" value="17/09/2007" />')
+ self.assertHTMLEqual(w.render('date', d), '<input type="text" name="date" value="17/09/2007" />')
self.assertFalse(w._has_changed(d, '17/09/2007'))
# Make sure a custom format works with _has_changed. The hidden input will use
@@ -951,21 +952,21 @@ beatle J R Ringo False""")
def test_timeinput(self):
w = TimeInput()
- self.assertHTMLEqual(w.render('time', None), u'<input type="text" name="time" />')
+ self.assertHTMLEqual(w.render('time', None), '<input type="text" name="time" />')
t = datetime.time(12, 51, 34, 482548)
self.assertEqual(str(t), '12:51:34.482548')
# The microseconds are trimmed on display, by default.
- self.assertHTMLEqual(w.render('time', t), u'<input type="text" name="time" value="12:51:34" />')
- self.assertHTMLEqual(w.render('time', datetime.time(12, 51, 34)), u'<input type="text" name="time" value="12:51:34" />')
- self.assertHTMLEqual(w.render('time', datetime.time(12, 51)), u'<input type="text" name="time" value="12:51:00" />')
+ self.assertHTMLEqual(w.render('time', t), '<input type="text" name="time" value="12:51:34" />')
+ self.assertHTMLEqual(w.render('time', datetime.time(12, 51, 34)), '<input type="text" name="time" value="12:51:34" />')
+ self.assertHTMLEqual(w.render('time', datetime.time(12, 51)), '<input type="text" name="time" value="12:51:00" />')
# We should be able to initialize from a unicode value.
- self.assertHTMLEqual(w.render('time', u'13:12:11'), u'<input type="text" name="time" value="13:12:11" />')
+ self.assertHTMLEqual(w.render('time', '13:12:11'), '<input type="text" name="time" value="13:12:11" />')
# Use 'format' to change the way a value is displayed.
w = TimeInput(format='%H:%M')
- self.assertHTMLEqual(w.render('time', t), u'<input type="text" name="time" value="12:51" />')
+ self.assertHTMLEqual(w.render('time', t), '<input type="text" name="time" value="12:51" />')
self.assertFalse(w._has_changed(t, '12:51'))
# Make sure a custom format works with _has_changed. The hidden input will use
@@ -978,12 +979,12 @@ beatle J R Ringo False""")
from django.forms.widgets import SplitHiddenDateTimeWidget
w = SplitHiddenDateTimeWidget()
- self.assertHTMLEqual(w.render('date', ''), u'<input type="hidden" name="date_0" /><input type="hidden" name="date_1" />')
+ self.assertHTMLEqual(w.render('date', ''), '<input type="hidden" name="date_0" /><input type="hidden" name="date_1" />')
d = datetime.datetime(2007, 9, 17, 12, 51, 34, 482548)
self.assertHTMLEqual(str(d), '2007-09-17 12:51:34.482548')
- self.assertHTMLEqual(w.render('date', d), u'<input type="hidden" name="date_0" value="2007-09-17" /><input type="hidden" name="date_1" value="12:51:34" />')
- self.assertHTMLEqual(w.render('date', datetime.datetime(2007, 9, 17, 12, 51, 34)), u'<input type="hidden" name="date_0" value="2007-09-17" /><input type="hidden" name="date_1" value="12:51:34" />')
- self.assertHTMLEqual(w.render('date', datetime.datetime(2007, 9, 17, 12, 51)), u'<input type="hidden" name="date_0" value="2007-09-17" /><input type="hidden" name="date_1" value="12:51:00" />')
+ self.assertHTMLEqual(w.render('date', d), '<input type="hidden" name="date_0" value="2007-09-17" /><input type="hidden" name="date_1" value="12:51:34" />')
+ self.assertHTMLEqual(w.render('date', datetime.datetime(2007, 9, 17, 12, 51, 34)), '<input type="hidden" name="date_0" value="2007-09-17" /><input type="hidden" name="date_1" value="12:51:34" />')
+ self.assertHTMLEqual(w.render('date', datetime.datetime(2007, 9, 17, 12, 51)), '<input type="hidden" name="date_0" value="2007-09-17" /><input type="hidden" name="date_1" value="12:51:00" />')
class NullBooleanSelectLazyForm(Form):
@@ -1004,32 +1005,32 @@ class FormsI18NWidgetsTestCase(TestCase):
def test_splitdatetime(self):
w = SplitDateTimeWidget(date_format='%d/%m/%Y', time_format='%H:%M')
- self.assertTrue(w._has_changed(datetime.datetime(2008, 5, 6, 12, 40, 00), [u'06.05.2008', u'12:41']))
+ self.assertTrue(w._has_changed(datetime.datetime(2008, 5, 6, 12, 40, 00), ['06.05.2008', '12:41']))
def test_datetimeinput(self):
w = DateTimeInput()
d = datetime.datetime(2007, 9, 17, 12, 51, 34, 482548)
w.is_localized = True
- self.assertHTMLEqual(w.render('date', d), u'<input type="text" name="date" value="17.09.2007 12:51:34" />')
+ self.assertHTMLEqual(w.render('date', d), '<input type="text" name="date" value="17.09.2007 12:51:34" />')
def test_dateinput(self):
w = DateInput()
d = datetime.date(2007, 9, 17)
w.is_localized = True
- self.assertHTMLEqual(w.render('date', d), u'<input type="text" name="date" value="17.09.2007" />')
+ self.assertHTMLEqual(w.render('date', d), '<input type="text" name="date" value="17.09.2007" />')
def test_timeinput(self):
w = TimeInput()
t = datetime.time(12, 51, 34, 482548)
w.is_localized = True
- self.assertHTMLEqual(w.render('time', t), u'<input type="text" name="time" value="12:51:34" />')
+ self.assertHTMLEqual(w.render('time', t), '<input type="text" name="time" value="12:51:34" />')
def test_splithiddendatetime(self):
from django.forms.widgets import SplitHiddenDateTimeWidget
w = SplitHiddenDateTimeWidget()
w.is_localized = True
- self.assertHTMLEqual(w.render('date', datetime.datetime(2007, 9, 17, 12, 51)), u'<input type="hidden" name="date_0" value="17.09.2007" /><input type="hidden" name="date_1" value="12:51:00" />')
+ self.assertHTMLEqual(w.render('date', datetime.datetime(2007, 9, 17, 12, 51)), '<input type="hidden" name="date_0" value="17.09.2007" /><input type="hidden" name="date_1" value="12:51:00" />')
def test_nullbooleanselect(self):
"""
@@ -1038,7 +1039,7 @@ class FormsI18NWidgetsTestCase(TestCase):
Refs #17190
"""
f = NullBooleanSelectLazyForm()
- self.assertHTMLEqual(f.fields['bool'].widget.render('id_bool', True), u'<select name="id_bool">\n<option value="1">Unbekannt</option>\n<option value="2" selected="selected">Ja</option>\n<option value="3">Nein</option>\n</select>')
+ self.assertHTMLEqual(f.fields['bool'].widget.render('id_bool', True), '<select name="id_bool">\n<option value="1">Unbekannt</option>\n<option value="2" selected="selected">Ja</option>\n<option value="3">Nein</option>\n</select>')
class SelectAndTextWidget(MultiWidget):
@@ -1115,7 +1116,7 @@ class ClearableFileInputTests(TestCase):
widget = ClearableFileInput()
widget.is_required = False
self.assertHTMLEqual(widget.render('myfile', FakeFieldFile()),
- u'Currently: <a href="something">something</a> <input type="checkbox" name="myfile-clear" id="myfile-clear_id" /> <label for="myfile-clear_id">Clear</label><br />Change: <input type="file" name="myfile" />')
+ 'Currently: <a href="something">something</a> <input type="checkbox" name="myfile-clear" id="myfile-clear_id" /> <label for="myfile-clear_id">Clear</label><br />Change: <input type="file" name="myfile" />')
def test_html_escaped(self):
"""
@@ -1127,17 +1128,17 @@ class ClearableFileInputTests(TestCase):
url = "something?chapter=1&sect=2&copy=3&lang=en"
def __unicode__(self):
- return u'''something<div onclick="alert('oops')">.jpg'''
+ return '''something<div onclick="alert('oops')">.jpg'''
widget = ClearableFileInput()
field = StrangeFieldFile()
output = widget.render('my<div>file', field)
self.assertFalse(field.url in output)
- self.assertTrue(u'href="something?chapter=1&amp;sect=2&amp;copy=3&amp;lang=en"' in output)
+ self.assertTrue('href="something?chapter=1&amp;sect=2&amp;copy=3&amp;lang=en"' in output)
self.assertFalse(unicode(field) in output)
- self.assertTrue(u'something&lt;div onclick=&quot;alert(&#39;oops&#39;)&quot;&gt;.jpg' in output)
- self.assertTrue(u'my&lt;div&gt;file' in output)
- self.assertFalse(u'my<div>file' in output)
+ self.assertTrue('something&lt;div onclick=&quot;alert(&#39;oops&#39;)&quot;&gt;.jpg' in output)
+ self.assertTrue('my&lt;div&gt;file' in output)
+ self.assertFalse('my<div>file' in output)
def test_clear_input_renders_only_if_not_required(self):
"""
@@ -1148,7 +1149,7 @@ class ClearableFileInputTests(TestCase):
widget = ClearableFileInput()
widget.is_required = True
self.assertHTMLEqual(widget.render('myfile', FakeFieldFile()),
- u'Currently: <a href="something">something</a> <br />Change: <input type="file" name="myfile" />')
+ 'Currently: <a href="something">something</a> <br />Change: <input type="file" name="myfile" />')
def test_clear_input_renders_only_if_initial(self):
"""
@@ -1159,7 +1160,7 @@ class ClearableFileInputTests(TestCase):
widget = ClearableFileInput()
widget.is_required = False
self.assertHTMLEqual(widget.render('myfile', None),
- u'<input type="file" name="myfile" />')
+ '<input type="file" name="myfile" />')
def test_clear_input_checked_returns_false(self):
"""
diff --git a/tests/regressiontests/generic_inline_admin/tests.py b/tests/regressiontests/generic_inline_admin/tests.py
index c6c1eeac5a..c97f4c4f03 100644
--- a/tests/regressiontests/generic_inline_admin/tests.py
+++ b/tests/regressiontests/generic_inline_admin/tests.py
@@ -1,6 +1,5 @@
-# coding: utf-8
-
-from __future__ import absolute_import
+# -*- coding: utf-8 -*-
+from __future__ import absolute_import, unicode_literals
from django.conf import settings
from django.contrib import admin
@@ -66,11 +65,11 @@ class GenericAdminViewTest(TestCase):
A smoke test to ensure POST on add_view works.
"""
post_data = {
- "name": u"This Week in Django",
+ "name": "This Week in Django",
# inline data
- "generic_inline_admin-media-content_type-object_id-TOTAL_FORMS": u"1",
- "generic_inline_admin-media-content_type-object_id-INITIAL_FORMS": u"0",
- "generic_inline_admin-media-content_type-object_id-MAX_NUM_FORMS": u"0",
+ "generic_inline_admin-media-content_type-object_id-TOTAL_FORMS": "1",
+ "generic_inline_admin-media-content_type-object_id-INITIAL_FORMS": "0",
+ "generic_inline_admin-media-content_type-object_id-MAX_NUM_FORMS": "0",
}
response = self.client.post('/generic_inline_admin/admin/generic_inline_admin/episode/add/', post_data)
self.assertEqual(response.status_code, 302) # redirect somewhere
@@ -80,17 +79,17 @@ class GenericAdminViewTest(TestCase):
A smoke test to ensure POST on edit_view works.
"""
post_data = {
- "name": u"This Week in Django",
+ "name": "This Week in Django",
# inline data
- "generic_inline_admin-media-content_type-object_id-TOTAL_FORMS": u"3",
- "generic_inline_admin-media-content_type-object_id-INITIAL_FORMS": u"2",
- "generic_inline_admin-media-content_type-object_id-MAX_NUM_FORMS": u"0",
- "generic_inline_admin-media-content_type-object_id-0-id": u"%d" % self.mp3_media_pk,
- "generic_inline_admin-media-content_type-object_id-0-url": u"http://example.com/podcast.mp3",
- "generic_inline_admin-media-content_type-object_id-1-id": u"%d" % self.png_media_pk,
- "generic_inline_admin-media-content_type-object_id-1-url": u"http://example.com/logo.png",
- "generic_inline_admin-media-content_type-object_id-2-id": u"",
- "generic_inline_admin-media-content_type-object_id-2-url": u"",
+ "generic_inline_admin-media-content_type-object_id-TOTAL_FORMS": "3",
+ "generic_inline_admin-media-content_type-object_id-INITIAL_FORMS": "2",
+ "generic_inline_admin-media-content_type-object_id-MAX_NUM_FORMS": "0",
+ "generic_inline_admin-media-content_type-object_id-0-id": "%d" % self.mp3_media_pk,
+ "generic_inline_admin-media-content_type-object_id-0-url": "http://example.com/podcast.mp3",
+ "generic_inline_admin-media-content_type-object_id-1-id": "%d" % self.png_media_pk,
+ "generic_inline_admin-media-content_type-object_id-1-url": "http://example.com/logo.png",
+ "generic_inline_admin-media-content_type-object_id-2-id": "",
+ "generic_inline_admin-media-content_type-object_id-2-url": "",
}
url = '/generic_inline_admin/admin/generic_inline_admin/episode/%d/' % self.episode_pk
response = self.client.post(url, post_data)
@@ -198,11 +197,11 @@ class GenericInlineAdminWithUniqueTogetherTest(TestCase):
def testAdd(self):
category_id = Category.objects.create(name='male').pk
post_data = {
- "name": u"John Doe",
+ "name": "John Doe",
# inline data
- "generic_inline_admin-phonenumber-content_type-object_id-TOTAL_FORMS": u"1",
- "generic_inline_admin-phonenumber-content_type-object_id-INITIAL_FORMS": u"0",
- "generic_inline_admin-phonenumber-content_type-object_id-MAX_NUM_FORMS": u"0",
+ "generic_inline_admin-phonenumber-content_type-object_id-TOTAL_FORMS": "1",
+ "generic_inline_admin-phonenumber-content_type-object_id-INITIAL_FORMS": "0",
+ "generic_inline_admin-phonenumber-content_type-object_id-MAX_NUM_FORMS": "0",
"generic_inline_admin-phonenumber-content_type-object_id-0-id": "",
"generic_inline_admin-phonenumber-content_type-object_id-0-phone_number": "555-555-5555",
"generic_inline_admin-phonenumber-content_type-object_id-0-category": "%s" % category_id,
diff --git a/tests/regressiontests/httpwrappers/tests.py b/tests/regressiontests/httpwrappers/tests.py
index 218c5b5b3b..870324bffb 100644
--- a/tests/regressiontests/httpwrappers/tests.py
+++ b/tests/regressiontests/httpwrappers/tests.py
@@ -1,3 +1,5 @@
+from __future__ import unicode_literals
+
import copy
import pickle
@@ -59,8 +61,8 @@ class QueryDictTests(unittest.TestCase):
self.assertFalse(q.has_key('bar'))
self.assertFalse('bar' in q)
- self.assertEqual(q.items(), [(u'foo', u'bar')])
- self.assertEqual(q.lists(), [(u'foo', [u'bar'])])
+ self.assertEqual(q.items(), [('foo', 'bar')])
+ self.assertEqual(q.lists(), [('foo', ['bar'])])
self.assertEqual(q.keys(), ['foo'])
self.assertEqual(q.values(), ['bar'])
self.assertEqual(len(q), 1)
@@ -79,7 +81,7 @@ class QueryDictTests(unittest.TestCase):
self.assertEqual(q.urlencode(), 'next=%2Fa%26b%2F')
self.assertEqual(q.urlencode(safe='/'), 'next=/a%26b/')
q = QueryDict('', mutable=True)
- q['next'] = u'/t\xebst&key/'
+ q['next'] = '/t\xebst&key/'
self.assertEqual(q.urlencode(), 'next=%2Ft%C3%ABst%26key%2F')
self.assertEqual(q.urlencode(safe='/'), 'next=/t%C3%ABst%26key/')
@@ -114,17 +116,17 @@ class QueryDictTests(unittest.TestCase):
self.assertTrue(q.has_key('foo'))
self.assertTrue('foo' in q)
- self.assertEqual(q.items(), [(u'foo', u'another'), (u'name', u'john')])
- self.assertEqual(q.lists(), [(u'foo', [u'bar', u'baz', u'another']), (u'name', [u'john'])])
- self.assertEqual(q.keys(), [u'foo', u'name'])
- self.assertEqual(q.values(), [u'another', u'john'])
+ self.assertEqual(q.items(), [('foo', 'another'), ('name', 'john')])
+ self.assertEqual(q.lists(), [('foo', ['bar', 'baz', 'another']), ('name', ['john'])])
+ self.assertEqual(q.keys(), ['foo', 'name'])
+ self.assertEqual(q.values(), ['another', 'john'])
self.assertEqual(len(q), 2)
q.update({'foo': 'hello'})
self.assertEqual(q['foo'], 'hello')
self.assertEqual(q.get('foo', 'not available'), 'hello')
- self.assertEqual(q.getlist('foo'), [u'bar', u'baz', u'another', u'hello'])
- self.assertEqual(q.pop('foo'), [u'bar', u'baz', u'another', u'hello'])
+ self.assertEqual(q.getlist('foo'), ['bar', 'baz', 'another', 'hello'])
+ self.assertEqual(q.pop('foo'), ['bar', 'baz', 'another', 'hello'])
self.assertEqual(q.pop('foo', 'not there'), 'not there')
self.assertEqual(q.get('foo', 'not there'), 'not there')
self.assertEqual(q.setdefault('foo', 'bar'), 'bar')
@@ -140,12 +142,12 @@ class QueryDictTests(unittest.TestCase):
q = QueryDict('vote=yes&vote=no')
- self.assertEqual(q['vote'], u'no')
+ self.assertEqual(q['vote'], 'no')
self.assertRaises(AttributeError, q.__setitem__, 'something', 'bar')
- self.assertEqual(q.get('vote', 'default'), u'no')
+ self.assertEqual(q.get('vote', 'default'), 'no')
self.assertEqual(q.get('foo', 'default'), 'default')
- self.assertEqual(q.getlist('vote'), [u'yes', u'no'])
+ self.assertEqual(q.getlist('vote'), ['yes', 'no'])
self.assertEqual(q.getlist('foo'), [])
self.assertRaises(AttributeError, q.setlist, 'foo', ['bar', 'baz'])
@@ -156,10 +158,10 @@ class QueryDictTests(unittest.TestCase):
self.assertEqual('vote' in q, True)
self.assertEqual(q.has_key('foo'), False)
self.assertEqual('foo' in q, False)
- self.assertEqual(q.items(), [(u'vote', u'no')])
- self.assertEqual(q.lists(), [(u'vote', [u'yes', u'no'])])
- self.assertEqual(q.keys(), [u'vote'])
- self.assertEqual(q.values(), [u'no'])
+ self.assertEqual(q.items(), [('vote', 'no')])
+ self.assertEqual(q.lists(), [('vote', ['yes', 'no'])])
+ self.assertEqual(q.keys(), ['vote'])
+ self.assertEqual(q.values(), ['no'])
self.assertEqual(len(q), 1)
self.assertRaises(AttributeError, q.update, {'foo': 'bar'})
@@ -175,8 +177,8 @@ class QueryDictTests(unittest.TestCase):
case, bad UTF-8 encoding).
"""
q = QueryDict(b'foo=bar&foo=\xff')
- self.assertEqual(q['foo'], u'\ufffd')
- self.assertEqual(q.getlist('foo'), [u'bar', u'\ufffd'])
+ self.assertEqual(q['foo'], '\ufffd')
+ self.assertEqual(q.getlist('foo'), ['bar', '\ufffd'])
def test_pickle(self):
q = QueryDict('')
@@ -194,17 +196,17 @@ class QueryDictTests(unittest.TestCase):
x = QueryDict("a=1&a=2", mutable=True)
y = QueryDict("a=3&a=4")
x.update(y)
- self.assertEqual(x.getlist('a'), [u'1', u'2', u'3', u'4'])
+ self.assertEqual(x.getlist('a'), ['1', '2', '3', '4'])
def test_non_default_encoding(self):
"""#13572 - QueryDict with a non-default encoding"""
q = QueryDict(b'sbb=one', encoding='rot_13')
self.assertEqual(q.encoding , 'rot_13' )
- self.assertEqual(q.items() , [(u'foo', u'bar')] )
+ self.assertEqual(q.items() , [('foo', 'bar')] )
self.assertEqual(q.urlencode() , 'sbb=one' )
q = q.copy()
self.assertEqual(q.encoding , 'rot_13' )
- self.assertEqual(q.items() , [(u'foo', u'bar')] )
+ self.assertEqual(q.items() , [('foo', 'bar')] )
self.assertEqual(q.urlencode() , 'sbb=one' )
self.assertEqual(copy.copy(q).encoding , 'rot_13' )
self.assertEqual(copy.deepcopy(q).encoding , 'rot_13')
@@ -214,29 +216,29 @@ class HttpResponseTests(unittest.TestCase):
r = HttpResponse()
# If we insert a unicode value it will be converted to an ascii
- r['value'] = u'test value'
+ r['value'] = 'test value'
self.assertTrue(isinstance(r['value'], str))
# An error is raised when a unicode object with non-ascii is assigned.
- self.assertRaises(UnicodeEncodeError, r.__setitem__, 'value', u't\xebst value')
+ self.assertRaises(UnicodeEncodeError, r.__setitem__, 'value', 't\xebst value')
# An error is raised when a unicode object with non-ASCII format is
# passed as initial mimetype or content_type.
self.assertRaises(UnicodeEncodeError, HttpResponse,
- content_type=u't\xebst value')
+ content_type='t\xebst value')
# HttpResponse headers must be convertible to ASCII.
self.assertRaises(UnicodeEncodeError, HttpResponse,
- content_type=u't\xebst value')
+ content_type='t\xebst value')
# The response also converts unicode keys to strings.)
- r[u'test'] = 'testing key'
+ r['test'] = 'testing key'
l = list(r.items())
l.sort()
self.assertEqual(l[1], ('test', 'testing key'))
# It will also raise errors for keys with non-ascii data.
- self.assertRaises(UnicodeEncodeError, r.__setitem__, u't\xebst key', 'value')
+ self.assertRaises(UnicodeEncodeError, r.__setitem__, 't\xebst key', 'value')
def test_newlines_in_headers(self):
# Bug #10188: Do not allow newlines in headers (CR or LF)
@@ -276,7 +278,7 @@ class HttpResponseTests(unittest.TestCase):
#test retrieval explicitly using iter and odd inputs
r = HttpResponse()
- r.content = ['1', u'2', 3, unichr(1950)]
+ r.content = ['1', '2', 3, unichr(1950)]
result = []
my_iter = r.__iter__()
while True:
diff --git a/tests/regressiontests/i18n/contenttypes/tests.py b/tests/regressiontests/i18n/contenttypes/tests.py
index baaa6ada42..bed94da8b8 100644
--- a/tests/regressiontests/i18n/contenttypes/tests.py
+++ b/tests/regressiontests/i18n/contenttypes/tests.py
@@ -1,4 +1,5 @@
# coding: utf-8
+from __future__ import unicode_literals
import os
@@ -23,9 +24,9 @@ class ContentTypeTests(TestCase):
def test_verbose_name(self):
company_type = ContentType.objects.get(app_label='i18n', model='company')
with translation.override('en'):
- self.assertEqual(unicode(company_type), u'Company')
+ self.assertEqual(unicode(company_type), 'Company')
with translation.override('fr'):
- self.assertEqual(unicode(company_type), u'Société')
+ self.assertEqual(unicode(company_type), 'Société')
def test_field_override(self):
company_type = ContentType.objects.get(app_label='i18n', model='company')
diff --git a/tests/regressiontests/i18n/patterns/tests.py b/tests/regressiontests/i18n/patterns/tests.py
index 8ef7377ecc..73c9f56711 100644
--- a/tests/regressiontests/i18n/patterns/tests.py
+++ b/tests/regressiontests/i18n/patterns/tests.py
@@ -1,3 +1,5 @@
+from __future__ import unicode_literals
+
import os
from django.core.exceptions import ImproperlyConfigured
@@ -247,7 +249,7 @@ class URLTagTests(URLTestCaseBase):
{% language 'nl' %}{% url 'no-prefix-translated' %}{% endlanguage %}
{% language 'pt-br' %}{% url 'no-prefix-translated' %}{% endlanguage %}""")
self.assertEqual(t.render(Context({})).strip().split(),
- [u'/vertaald/', u'/traduzidos/'])
+ ['/vertaald/', '/traduzidos/'])
def test_context(self):
ctx = Context({'lang1':'nl', 'lang2':'pt-br'})
@@ -255,18 +257,18 @@ class URLTagTests(URLTestCaseBase):
{% language lang1 %}{% url 'no-prefix-translated' %}{% endlanguage %}
{% language lang2 %}{% url 'no-prefix-translated' %}{% endlanguage %}""")
self.assertEqual(tpl.render(ctx).strip().split(),
- [u'/vertaald/', u'/traduzidos/'])
+ ['/vertaald/', '/traduzidos/'])
def test_args(self):
tpl = Template("""{% load i18n %}
{% language 'nl' %}{% url 'no-prefix-translated-slug' 'apo' %}{% endlanguage %}
{% language 'pt-br' %}{% url 'no-prefix-translated-slug' 'apo' %}{% endlanguage %}""")
self.assertEqual(tpl.render(Context({})).strip().split(),
- [u'/vertaald/apo/', u'/traduzidos/apo/'])
+ ['/vertaald/apo/', '/traduzidos/apo/'])
def test_kwargs(self):
tpl = Template("""{% load i18n %}
{% language 'nl' %}{% url 'no-prefix-translated-slug' slug='apo' %}{% endlanguage %}
{% language 'pt-br' %}{% url 'no-prefix-translated-slug' slug='apo' %}{% endlanguage %}""")
self.assertEqual(tpl.render(Context({})).strip().split(),
- [u'/vertaald/apo/', u'/traduzidos/apo/'])
+ ['/vertaald/apo/', '/traduzidos/apo/'])
diff --git a/tests/regressiontests/i18n/tests.py b/tests/regressiontests/i18n/tests.py
index 78e41321af..f91d7c042b 100644
--- a/tests/regressiontests/i18n/tests.py
+++ b/tests/regressiontests/i18n/tests.py
@@ -1,5 +1,5 @@
# -*- encoding: utf-8 -*-
-from __future__ import absolute_import
+from __future__ import absolute_import, unicode_literals
import datetime
import decimal
@@ -62,11 +62,11 @@ class TranslationTests(TestCase):
"""
s = ugettext_lazy('Add %(name)s')
d = {'name': 'Ringo'}
- self.assertEqual(u'Add Ringo', s % d)
+ self.assertEqual('Add Ringo', s % d)
with translation.override('de', deactivate=True):
- self.assertEqual(u'Ringo hinzuf\xfcgen', s % d)
+ self.assertEqual('Ringo hinzuf\xfcgen', s % d)
with translation.override('pl'):
- self.assertEqual(u'Dodaj Ringo', s % d)
+ self.assertEqual('Dodaj Ringo', s % d)
# It should be possible to compare *_lazy objects.
s1 = ugettext_lazy('Add %(name)s')
@@ -94,10 +94,10 @@ class TranslationTests(TestCase):
trans_real._active = local()
trans_real._translations = {}
with translation.override('de'):
- self.assertEqual(pgettext("unexisting", "May"), u"May")
- self.assertEqual(pgettext("month name", "May"), u"Mai")
- self.assertEqual(pgettext("verb", "May"), u"Kann")
- self.assertEqual(npgettext("search", "%d result", "%d results", 4) % 4, u"4 Resultate")
+ self.assertEqual(pgettext("unexisting", "May"), "May")
+ self.assertEqual(pgettext("month name", "May"), "Mai")
+ self.assertEqual(pgettext("verb", "May"), "Kann")
+ self.assertEqual(npgettext("search", "%d result", "%d results", 4) % 4, "4 Resultate")
def test_template_tags_pgettext(self):
"""
@@ -224,7 +224,7 @@ class TranslationTests(TestCase):
unicode(string_concat(...)) should not raise a TypeError - #4796
"""
import django.utils.translation
- self.assertEqual(u'django', unicode(django.utils.translation.string_concat("dja", "ngo")))
+ self.assertEqual('django', unicode(django.utils.translation.string_concat("dja", "ngo")))
def test_safe_status(self):
"""
@@ -247,11 +247,11 @@ class TranslationTests(TestCase):
"""
from django.utils.translation.trans_real import translation as Trans
ca_translation = Trans('ca')
- ca_translation._catalog[u'Mac\nEOF\n'] = u'Catalan Mac\nEOF\n'
- ca_translation._catalog[u'Win\nEOF\n'] = u'Catalan Win\nEOF\n'
+ ca_translation._catalog['Mac\nEOF\n'] = 'Catalan Mac\nEOF\n'
+ ca_translation._catalog['Win\nEOF\n'] = 'Catalan Win\nEOF\n'
with translation.override('ca', deactivate=True):
- self.assertEqual(u'Catalan Mac\nEOF\n', ugettext(u'Mac\rEOF\r'))
- self.assertEqual(u'Catalan Win\nEOF\n', ugettext(u'Win\r\nEOF\r\n'))
+ self.assertEqual('Catalan Mac\nEOF\n', ugettext('Mac\rEOF\r'))
+ self.assertEqual('Catalan Win\nEOF\n', ugettext('Win\r\nEOF\r\n'))
def test_to_locale(self):
"""
@@ -332,22 +332,22 @@ class FormattingTests(TestCase):
Localization of numbers
"""
with self.settings(USE_L10N=True, USE_THOUSAND_SEPARATOR=False):
- self.assertEqual(u'66666.66', nformat(self.n, decimal_sep='.', decimal_pos=2, grouping=3, thousand_sep=','))
- self.assertEqual(u'66666A6', nformat(self.n, decimal_sep='A', decimal_pos=1, grouping=1, thousand_sep='B'))
- self.assertEqual(u'66666', nformat(self.n, decimal_sep='X', decimal_pos=0, grouping=1, thousand_sep='Y'))
+ self.assertEqual('66666.66', nformat(self.n, decimal_sep='.', decimal_pos=2, grouping=3, thousand_sep=','))
+ self.assertEqual('66666A6', nformat(self.n, decimal_sep='A', decimal_pos=1, grouping=1, thousand_sep='B'))
+ self.assertEqual('66666', nformat(self.n, decimal_sep='X', decimal_pos=0, grouping=1, thousand_sep='Y'))
with self.settings(USE_L10N=True, USE_THOUSAND_SEPARATOR=True):
- self.assertEqual(u'66,666.66', nformat(self.n, decimal_sep='.', decimal_pos=2, grouping=3, thousand_sep=','))
- self.assertEqual(u'6B6B6B6B6A6', nformat(self.n, decimal_sep='A', decimal_pos=1, grouping=1, thousand_sep='B'))
- self.assertEqual(u'-66666.6', nformat(-66666.666, decimal_sep='.', decimal_pos=1))
- self.assertEqual(u'-66666.0', nformat(int('-66666'), decimal_sep='.', decimal_pos=1))
- self.assertEqual(u'10000.0', nformat(self.l, decimal_sep='.', decimal_pos=1))
+ self.assertEqual('66,666.66', nformat(self.n, decimal_sep='.', decimal_pos=2, grouping=3, thousand_sep=','))
+ self.assertEqual('6B6B6B6B6A6', nformat(self.n, decimal_sep='A', decimal_pos=1, grouping=1, thousand_sep='B'))
+ self.assertEqual('-66666.6', nformat(-66666.666, decimal_sep='.', decimal_pos=1))
+ self.assertEqual('-66666.0', nformat(int('-66666'), decimal_sep='.', decimal_pos=1))
+ self.assertEqual('10000.0', nformat(self.l, decimal_sep='.', decimal_pos=1))
# This unusual grouping/force_grouping combination may be triggered by the intcomma filter (#17414)
- self.assertEqual(u'10000', nformat(self.l, decimal_sep='.', decimal_pos=0, grouping=0, force_grouping=True))
+ self.assertEqual('10000', nformat(self.l, decimal_sep='.', decimal_pos=0, grouping=0, force_grouping=True))
# date filter
- self.assertEqual(u'31.12.2009 в 20:50', Template('{{ dt|date:"d.m.Y в H:i" }}').render(self.ctxt))
- self.assertEqual(u'⌚ 10:15', Template('{{ t|time:"⌚ H:i" }}').render(self.ctxt))
+ self.assertEqual('31.12.2009 в 20:50', Template('{{ dt|date:"d.m.Y в H:i" }}').render(self.ctxt))
+ self.assertEqual('⌚ 10:15', Template('{{ t|time:"⌚ H:i" }}').render(self.ctxt))
def test_l10n_disabled(self):
"""
@@ -356,53 +356,53 @@ class FormattingTests(TestCase):
"""
settings.USE_L10N = False
with translation.override('ca', deactivate=True):
- self.assertEqual(u'N j, Y', get_format('DATE_FORMAT'))
+ self.assertEqual('N j, Y', get_format('DATE_FORMAT'))
self.assertEqual(0, get_format('FIRST_DAY_OF_WEEK'))
- self.assertEqual(u'.', get_format('DECIMAL_SEPARATOR'))
- self.assertEqual(u'10:15 a.m.', time_format(self.t))
- self.assertEqual(u'des. 31, 2009', date_format(self.d))
- self.assertEqual(u'desembre 2009', date_format(self.d, 'YEAR_MONTH_FORMAT'))
- self.assertEqual(u'12/31/2009 8:50 p.m.', date_format(self.dt, 'SHORT_DATETIME_FORMAT'))
- self.assertEqual(u'No localizable', localize('No localizable'))
- self.assertEqual(u'66666.666', localize(self.n))
- self.assertEqual(u'99999.999', localize(self.f))
- self.assertEqual(u'10000', localize(self.l))
- self.assertEqual(u'des. 31, 2009', localize(self.d))
- self.assertEqual(u'des. 31, 2009, 8:50 p.m.', localize(self.dt))
- self.assertEqual(u'66666.666', Template('{{ n }}').render(self.ctxt))
- self.assertEqual(u'99999.999', Template('{{ f }}').render(self.ctxt))
- self.assertEqual(u'des. 31, 2009', Template('{{ d }}').render(self.ctxt))
- self.assertEqual(u'des. 31, 2009, 8:50 p.m.', Template('{{ dt }}').render(self.ctxt))
- self.assertEqual(u'66666.67', Template('{{ n|floatformat:2 }}').render(self.ctxt))
- self.assertEqual(u'100000.0', Template('{{ f|floatformat }}').render(self.ctxt))
- self.assertEqual(u'10:15 a.m.', Template('{{ t|time:"TIME_FORMAT" }}').render(self.ctxt))
- self.assertEqual(u'12/31/2009', Template('{{ d|date:"SHORT_DATE_FORMAT" }}').render(self.ctxt))
- self.assertEqual(u'12/31/2009 8:50 p.m.', Template('{{ dt|date:"SHORT_DATETIME_FORMAT" }}').render(self.ctxt))
+ self.assertEqual('.', get_format('DECIMAL_SEPARATOR'))
+ self.assertEqual('10:15 a.m.', time_format(self.t))
+ self.assertEqual('des. 31, 2009', date_format(self.d))
+ self.assertEqual('desembre 2009', date_format(self.d, 'YEAR_MONTH_FORMAT'))
+ self.assertEqual('12/31/2009 8:50 p.m.', date_format(self.dt, 'SHORT_DATETIME_FORMAT'))
+ self.assertEqual('No localizable', localize('No localizable'))
+ self.assertEqual('66666.666', localize(self.n))
+ self.assertEqual('99999.999', localize(self.f))
+ self.assertEqual('10000', localize(self.l))
+ self.assertEqual('des. 31, 2009', localize(self.d))
+ self.assertEqual('des. 31, 2009, 8:50 p.m.', localize(self.dt))
+ self.assertEqual('66666.666', Template('{{ n }}').render(self.ctxt))
+ self.assertEqual('99999.999', Template('{{ f }}').render(self.ctxt))
+ self.assertEqual('des. 31, 2009', Template('{{ d }}').render(self.ctxt))
+ self.assertEqual('des. 31, 2009, 8:50 p.m.', Template('{{ dt }}').render(self.ctxt))
+ self.assertEqual('66666.67', Template('{{ n|floatformat:2 }}').render(self.ctxt))
+ self.assertEqual('100000.0', Template('{{ f|floatformat }}').render(self.ctxt))
+ self.assertEqual('10:15 a.m.', Template('{{ t|time:"TIME_FORMAT" }}').render(self.ctxt))
+ self.assertEqual('12/31/2009', Template('{{ d|date:"SHORT_DATE_FORMAT" }}').render(self.ctxt))
+ self.assertEqual('12/31/2009 8:50 p.m.', Template('{{ dt|date:"SHORT_DATETIME_FORMAT" }}').render(self.ctxt))
form = I18nForm({
- 'decimal_field': u'66666,666',
- 'float_field': u'99999,999',
- 'date_field': u'31/12/2009',
- 'datetime_field': u'31/12/2009 20:50',
- 'time_field': u'20:50',
- 'integer_field': u'1.234',
+ 'decimal_field': '66666,666',
+ 'float_field': '99999,999',
+ 'date_field': '31/12/2009',
+ 'datetime_field': '31/12/2009 20:50',
+ 'time_field': '20:50',
+ 'integer_field': '1.234',
})
self.assertEqual(False, form.is_valid())
- self.assertEqual([u'Introdu\xefu un n\xfamero.'], form.errors['float_field'])
- self.assertEqual([u'Introdu\xefu un n\xfamero.'], form.errors['decimal_field'])
- self.assertEqual([u'Introdu\xefu una data v\xe0lida.'], form.errors['date_field'])
- self.assertEqual([u'Introdu\xefu una data/hora v\xe0lides.'], form.errors['datetime_field'])
- self.assertEqual([u'Introdu\xefu un n\xfamero sencer.'], form.errors['integer_field'])
+ self.assertEqual(['Introdu\xefu un n\xfamero.'], form.errors['float_field'])
+ self.assertEqual(['Introdu\xefu un n\xfamero.'], form.errors['decimal_field'])
+ self.assertEqual(['Introdu\xefu una data v\xe0lida.'], form.errors['date_field'])
+ self.assertEqual(['Introdu\xefu una data/hora v\xe0lides.'], form.errors['datetime_field'])
+ self.assertEqual(['Introdu\xefu un n\xfamero sencer.'], form.errors['integer_field'])
form2 = SelectDateForm({
- 'date_field_month': u'12',
- 'date_field_day': u'31',
- 'date_field_year': u'2009'
+ 'date_field_month': '12',
+ 'date_field_day': '31',
+ 'date_field_year': '2009'
})
self.assertEqual(True, form2.is_valid())
self.assertEqual(datetime.date(2009, 12, 31), form2.cleaned_data['date_field'])
self.assertHTMLEqual(
- u'<select name="mydate_month" id="id_mydate_month">\n<option value="1">gener</option>\n<option value="2">febrer</option>\n<option value="3">mar\xe7</option>\n<option value="4">abril</option>\n<option value="5">maig</option>\n<option value="6">juny</option>\n<option value="7">juliol</option>\n<option value="8">agost</option>\n<option value="9">setembre</option>\n<option value="10">octubre</option>\n<option value="11">novembre</option>\n<option value="12" selected="selected">desembre</option>\n</select>\n<select name="mydate_day" id="id_mydate_day">\n<option value="1">1</option>\n<option value="2">2</option>\n<option value="3">3</option>\n<option value="4">4</option>\n<option value="5">5</option>\n<option value="6">6</option>\n<option value="7">7</option>\n<option value="8">8</option>\n<option value="9">9</option>\n<option value="10">10</option>\n<option value="11">11</option>\n<option value="12">12</option>\n<option value="13">13</option>\n<option value="14">14</option>\n<option value="15">15</option>\n<option value="16">16</option>\n<option value="17">17</option>\n<option value="18">18</option>\n<option value="19">19</option>\n<option value="20">20</option>\n<option value="21">21</option>\n<option value="22">22</option>\n<option value="23">23</option>\n<option value="24">24</option>\n<option value="25">25</option>\n<option value="26">26</option>\n<option value="27">27</option>\n<option value="28">28</option>\n<option value="29">29</option>\n<option value="30">30</option>\n<option value="31" selected="selected">31</option>\n</select>\n<select name="mydate_year" id="id_mydate_year">\n<option value="2009" selected="selected">2009</option>\n<option value="2010">2010</option>\n<option value="2011">2011</option>\n<option value="2012">2012</option>\n<option value="2013">2013</option>\n<option value="2014">2014</option>\n<option value="2015">2015</option>\n<option value="2016">2016</option>\n<option value="2017">2017</option>\n<option value="2018">2018</option>\n</select>',
+ '<select name="mydate_month" id="id_mydate_month">\n<option value="1">gener</option>\n<option value="2">febrer</option>\n<option value="3">mar\xe7</option>\n<option value="4">abril</option>\n<option value="5">maig</option>\n<option value="6">juny</option>\n<option value="7">juliol</option>\n<option value="8">agost</option>\n<option value="9">setembre</option>\n<option value="10">octubre</option>\n<option value="11">novembre</option>\n<option value="12" selected="selected">desembre</option>\n</select>\n<select name="mydate_day" id="id_mydate_day">\n<option value="1">1</option>\n<option value="2">2</option>\n<option value="3">3</option>\n<option value="4">4</option>\n<option value="5">5</option>\n<option value="6">6</option>\n<option value="7">7</option>\n<option value="8">8</option>\n<option value="9">9</option>\n<option value="10">10</option>\n<option value="11">11</option>\n<option value="12">12</option>\n<option value="13">13</option>\n<option value="14">14</option>\n<option value="15">15</option>\n<option value="16">16</option>\n<option value="17">17</option>\n<option value="18">18</option>\n<option value="19">19</option>\n<option value="20">20</option>\n<option value="21">21</option>\n<option value="22">22</option>\n<option value="23">23</option>\n<option value="24">24</option>\n<option value="25">25</option>\n<option value="26">26</option>\n<option value="27">27</option>\n<option value="28">28</option>\n<option value="29">29</option>\n<option value="30">30</option>\n<option value="31" selected="selected">31</option>\n</select>\n<select name="mydate_year" id="id_mydate_year">\n<option value="2009" selected="selected">2009</option>\n<option value="2010">2010</option>\n<option value="2011">2011</option>\n<option value="2012">2012</option>\n<option value="2013">2013</option>\n<option value="2014">2014</option>\n<option value="2015">2015</option>\n<option value="2016">2016</option>\n<option value="2017">2017</option>\n<option value="2018">2018</option>\n</select>',
SelectDateWidget(years=range(2009, 2019)).render('mydate', datetime.date(2009, 12, 31))
)
@@ -412,8 +412,8 @@ class FormattingTests(TestCase):
# THOUSAND_SEPARATOR settings are specified
with self.settings(USE_THOUSAND_SEPARATOR=True,
NUMBER_GROUPING=1, THOUSAND_SEPARATOR='!'):
- self.assertEqual(u'66666.67', Template('{{ n|floatformat:2 }}').render(self.ctxt))
- self.assertEqual(u'100000.0', Template('{{ f|floatformat }}').render(self.ctxt))
+ self.assertEqual('66666.67', Template('{{ n|floatformat:2 }}').render(self.ctxt))
+ self.assertEqual('100000.0', Template('{{ f|floatformat }}').render(self.ctxt))
def test_false_like_locale_formats(self):
"""
@@ -455,37 +455,37 @@ class FormattingTests(TestCase):
self.assertEqual('j \d\e F \d\e Y', get_format('DATE_FORMAT'))
self.assertEqual(1, get_format('FIRST_DAY_OF_WEEK'))
self.assertEqual(',', get_format('DECIMAL_SEPARATOR'))
- self.assertEqual(u'10:15:48', time_format(self.t))
- self.assertEqual(u'31 de desembre de 2009', date_format(self.d))
- self.assertEqual(u'desembre del 2009', date_format(self.d, 'YEAR_MONTH_FORMAT'))
- self.assertEqual(u'31/12/2009 20:50', date_format(self.dt, 'SHORT_DATETIME_FORMAT'))
+ self.assertEqual('10:15:48', time_format(self.t))
+ self.assertEqual('31 de desembre de 2009', date_format(self.d))
+ self.assertEqual('desembre del 2009', date_format(self.d, 'YEAR_MONTH_FORMAT'))
+ self.assertEqual('31/12/2009 20:50', date_format(self.dt, 'SHORT_DATETIME_FORMAT'))
self.assertEqual('No localizable', localize('No localizable'))
settings.USE_THOUSAND_SEPARATOR = True
- self.assertEqual(u'66.666,666', localize(self.n))
- self.assertEqual(u'99.999,999', localize(self.f))
- self.assertEqual(u'10.000', localize(self.l))
- self.assertEqual(u'True', localize(True))
+ self.assertEqual('66.666,666', localize(self.n))
+ self.assertEqual('99.999,999', localize(self.f))
+ self.assertEqual('10.000', localize(self.l))
+ self.assertEqual('True', localize(True))
settings.USE_THOUSAND_SEPARATOR = False
- self.assertEqual(u'66666,666', localize(self.n))
- self.assertEqual(u'99999,999', localize(self.f))
- self.assertEqual(u'10000', localize(self.l))
- self.assertEqual(u'31 de desembre de 2009', localize(self.d))
- self.assertEqual(u'31 de desembre de 2009 a les 20:50', localize(self.dt))
+ self.assertEqual('66666,666', localize(self.n))
+ self.assertEqual('99999,999', localize(self.f))
+ self.assertEqual('10000', localize(self.l))
+ self.assertEqual('31 de desembre de 2009', localize(self.d))
+ self.assertEqual('31 de desembre de 2009 a les 20:50', localize(self.dt))
settings.USE_THOUSAND_SEPARATOR = True
- self.assertEqual(u'66.666,666', Template('{{ n }}').render(self.ctxt))
- self.assertEqual(u'99.999,999', Template('{{ f }}').render(self.ctxt))
- self.assertEqual(u'10.000', Template('{{ l }}').render(self.ctxt))
+ self.assertEqual('66.666,666', Template('{{ n }}').render(self.ctxt))
+ self.assertEqual('99.999,999', Template('{{ f }}').render(self.ctxt))
+ self.assertEqual('10.000', Template('{{ l }}').render(self.ctxt))
form3 = I18nForm({
- 'decimal_field': u'66.666,666',
- 'float_field': u'99.999,999',
- 'date_field': u'31/12/2009',
- 'datetime_field': u'31/12/2009 20:50',
- 'time_field': u'20:50',
- 'integer_field': u'1.234',
+ 'decimal_field': '66.666,666',
+ 'float_field': '99.999,999',
+ 'date_field': '31/12/2009',
+ 'datetime_field': '31/12/2009 20:50',
+ 'time_field': '20:50',
+ 'integer_field': '1.234',
})
self.assertEqual(True, form3.is_valid())
self.assertEqual(decimal.Decimal('66666.666'), form3.cleaned_data['decimal_field'])
@@ -496,24 +496,24 @@ class FormattingTests(TestCase):
self.assertEqual(1234, form3.cleaned_data['integer_field'])
settings.USE_THOUSAND_SEPARATOR = False
- self.assertEqual(u'66666,666', Template('{{ n }}').render(self.ctxt))
- self.assertEqual(u'99999,999', Template('{{ f }}').render(self.ctxt))
- self.assertEqual(u'31 de desembre de 2009', Template('{{ d }}').render(self.ctxt))
- self.assertEqual(u'31 de desembre de 2009 a les 20:50', Template('{{ dt }}').render(self.ctxt))
- self.assertEqual(u'66666,67', Template('{{ n|floatformat:2 }}').render(self.ctxt))
- self.assertEqual(u'100000,0', Template('{{ f|floatformat }}').render(self.ctxt))
- self.assertEqual(u'10:15:48', Template('{{ t|time:"TIME_FORMAT" }}').render(self.ctxt))
- self.assertEqual(u'31/12/2009', Template('{{ d|date:"SHORT_DATE_FORMAT" }}').render(self.ctxt))
- self.assertEqual(u'31/12/2009 20:50', Template('{{ dt|date:"SHORT_DATETIME_FORMAT" }}').render(self.ctxt))
+ self.assertEqual('66666,666', Template('{{ n }}').render(self.ctxt))
+ self.assertEqual('99999,999', Template('{{ f }}').render(self.ctxt))
+ self.assertEqual('31 de desembre de 2009', Template('{{ d }}').render(self.ctxt))
+ self.assertEqual('31 de desembre de 2009 a les 20:50', Template('{{ dt }}').render(self.ctxt))
+ self.assertEqual('66666,67', Template('{{ n|floatformat:2 }}').render(self.ctxt))
+ self.assertEqual('100000,0', Template('{{ f|floatformat }}').render(self.ctxt))
+ self.assertEqual('10:15:48', Template('{{ t|time:"TIME_FORMAT" }}').render(self.ctxt))
+ self.assertEqual('31/12/2009', Template('{{ d|date:"SHORT_DATE_FORMAT" }}').render(self.ctxt))
+ self.assertEqual('31/12/2009 20:50', Template('{{ dt|date:"SHORT_DATETIME_FORMAT" }}').render(self.ctxt))
self.assertEqual(date_format(datetime.datetime.now(), "DATE_FORMAT"), Template('{% now "DATE_FORMAT" %}').render(self.ctxt))
form4 = I18nForm({
- 'decimal_field': u'66666,666',
- 'float_field': u'99999,999',
- 'date_field': u'31/12/2009',
- 'datetime_field': u'31/12/2009 20:50',
- 'time_field': u'20:50',
- 'integer_field': u'1234',
+ 'decimal_field': '66666,666',
+ 'float_field': '99999,999',
+ 'date_field': '31/12/2009',
+ 'datetime_field': '31/12/2009 20:50',
+ 'time_field': '20:50',
+ 'integer_field': '1234',
})
self.assertEqual(True, form4.is_valid())
self.assertEqual(decimal.Decimal('66666.666'), form4.cleaned_data['decimal_field'])
@@ -524,21 +524,21 @@ class FormattingTests(TestCase):
self.assertEqual(1234, form4.cleaned_data['integer_field'])
form5 = SelectDateForm({
- 'date_field_month': u'12',
- 'date_field_day': u'31',
- 'date_field_year': u'2009'
+ 'date_field_month': '12',
+ 'date_field_day': '31',
+ 'date_field_year': '2009'
})
self.assertEqual(True, form5.is_valid())
self.assertEqual(datetime.date(2009, 12, 31), form5.cleaned_data['date_field'])
self.assertHTMLEqual(
- u'<select name="mydate_day" id="id_mydate_day">\n<option value="1">1</option>\n<option value="2">2</option>\n<option value="3">3</option>\n<option value="4">4</option>\n<option value="5">5</option>\n<option value="6">6</option>\n<option value="7">7</option>\n<option value="8">8</option>\n<option value="9">9</option>\n<option value="10">10</option>\n<option value="11">11</option>\n<option value="12">12</option>\n<option value="13">13</option>\n<option value="14">14</option>\n<option value="15">15</option>\n<option value="16">16</option>\n<option value="17">17</option>\n<option value="18">18</option>\n<option value="19">19</option>\n<option value="20">20</option>\n<option value="21">21</option>\n<option value="22">22</option>\n<option value="23">23</option>\n<option value="24">24</option>\n<option value="25">25</option>\n<option value="26">26</option>\n<option value="27">27</option>\n<option value="28">28</option>\n<option value="29">29</option>\n<option value="30">30</option>\n<option value="31" selected="selected">31</option>\n</select>\n<select name="mydate_month" id="id_mydate_month">\n<option value="1">gener</option>\n<option value="2">febrer</option>\n<option value="3">mar\xe7</option>\n<option value="4">abril</option>\n<option value="5">maig</option>\n<option value="6">juny</option>\n<option value="7">juliol</option>\n<option value="8">agost</option>\n<option value="9">setembre</option>\n<option value="10">octubre</option>\n<option value="11">novembre</option>\n<option value="12" selected="selected">desembre</option>\n</select>\n<select name="mydate_year" id="id_mydate_year">\n<option value="2009" selected="selected">2009</option>\n<option value="2010">2010</option>\n<option value="2011">2011</option>\n<option value="2012">2012</option>\n<option value="2013">2013</option>\n<option value="2014">2014</option>\n<option value="2015">2015</option>\n<option value="2016">2016</option>\n<option value="2017">2017</option>\n<option value="2018">2018</option>\n</select>',
+ '<select name="mydate_day" id="id_mydate_day">\n<option value="1">1</option>\n<option value="2">2</option>\n<option value="3">3</option>\n<option value="4">4</option>\n<option value="5">5</option>\n<option value="6">6</option>\n<option value="7">7</option>\n<option value="8">8</option>\n<option value="9">9</option>\n<option value="10">10</option>\n<option value="11">11</option>\n<option value="12">12</option>\n<option value="13">13</option>\n<option value="14">14</option>\n<option value="15">15</option>\n<option value="16">16</option>\n<option value="17">17</option>\n<option value="18">18</option>\n<option value="19">19</option>\n<option value="20">20</option>\n<option value="21">21</option>\n<option value="22">22</option>\n<option value="23">23</option>\n<option value="24">24</option>\n<option value="25">25</option>\n<option value="26">26</option>\n<option value="27">27</option>\n<option value="28">28</option>\n<option value="29">29</option>\n<option value="30">30</option>\n<option value="31" selected="selected">31</option>\n</select>\n<select name="mydate_month" id="id_mydate_month">\n<option value="1">gener</option>\n<option value="2">febrer</option>\n<option value="3">mar\xe7</option>\n<option value="4">abril</option>\n<option value="5">maig</option>\n<option value="6">juny</option>\n<option value="7">juliol</option>\n<option value="8">agost</option>\n<option value="9">setembre</option>\n<option value="10">octubre</option>\n<option value="11">novembre</option>\n<option value="12" selected="selected">desembre</option>\n</select>\n<select name="mydate_year" id="id_mydate_year">\n<option value="2009" selected="selected">2009</option>\n<option value="2010">2010</option>\n<option value="2011">2011</option>\n<option value="2012">2012</option>\n<option value="2013">2013</option>\n<option value="2014">2014</option>\n<option value="2015">2015</option>\n<option value="2016">2016</option>\n<option value="2017">2017</option>\n<option value="2018">2018</option>\n</select>',
SelectDateWidget(years=range(2009, 2019)).render('mydate', datetime.date(2009, 12, 31))
)
# Russian locale (with E as month)
with translation.override('ru', deactivate=True):
self.assertHTMLEqual(
- u'<select name="mydate_day" id="id_mydate_day">\n<option value="1">1</option>\n<option value="2">2</option>\n<option value="3">3</option>\n<option value="4">4</option>\n<option value="5">5</option>\n<option value="6">6</option>\n<option value="7">7</option>\n<option value="8">8</option>\n<option value="9">9</option>\n<option value="10">10</option>\n<option value="11">11</option>\n<option value="12">12</option>\n<option value="13">13</option>\n<option value="14">14</option>\n<option value="15">15</option>\n<option value="16">16</option>\n<option value="17">17</option>\n<option value="18">18</option>\n<option value="19">19</option>\n<option value="20">20</option>\n<option value="21">21</option>\n<option value="22">22</option>\n<option value="23">23</option>\n<option value="24">24</option>\n<option value="25">25</option>\n<option value="26">26</option>\n<option value="27">27</option>\n<option value="28">28</option>\n<option value="29">29</option>\n<option value="30">30</option>\n<option value="31" selected="selected">31</option>\n</select>\n<select name="mydate_month" id="id_mydate_month">\n<option value="1">\u042f\u043d\u0432\u0430\u0440\u044c</option>\n<option value="2">\u0424\u0435\u0432\u0440\u0430\u043b\u044c</option>\n<option value="3">\u041c\u0430\u0440\u0442</option>\n<option value="4">\u0410\u043f\u0440\u0435\u043b\u044c</option>\n<option value="5">\u041c\u0430\u0439</option>\n<option value="6">\u0418\u044e\u043d\u044c</option>\n<option value="7">\u0418\u044e\u043b\u044c</option>\n<option value="8">\u0410\u0432\u0433\u0443\u0441\u0442</option>\n<option value="9">\u0421\u0435\u043d\u0442\u044f\u0431\u0440\u044c</option>\n<option value="10">\u041e\u043a\u0442\u044f\u0431\u0440\u044c</option>\n<option value="11">\u041d\u043e\u044f\u0431\u0440\u044c</option>\n<option value="12" selected="selected">\u0414\u0435\u043a\u0430\u0431\u0440\u044c</option>\n</select>\n<select name="mydate_year" id="id_mydate_year">\n<option value="2009" selected="selected">2009</option>\n<option value="2010">2010</option>\n<option value="2011">2011</option>\n<option value="2012">2012</option>\n<option value="2013">2013</option>\n<option value="2014">2014</option>\n<option value="2015">2015</option>\n<option value="2016">2016</option>\n<option value="2017">2017</option>\n<option value="2018">2018</option>\n</select>',
+ '<select name="mydate_day" id="id_mydate_day">\n<option value="1">1</option>\n<option value="2">2</option>\n<option value="3">3</option>\n<option value="4">4</option>\n<option value="5">5</option>\n<option value="6">6</option>\n<option value="7">7</option>\n<option value="8">8</option>\n<option value="9">9</option>\n<option value="10">10</option>\n<option value="11">11</option>\n<option value="12">12</option>\n<option value="13">13</option>\n<option value="14">14</option>\n<option value="15">15</option>\n<option value="16">16</option>\n<option value="17">17</option>\n<option value="18">18</option>\n<option value="19">19</option>\n<option value="20">20</option>\n<option value="21">21</option>\n<option value="22">22</option>\n<option value="23">23</option>\n<option value="24">24</option>\n<option value="25">25</option>\n<option value="26">26</option>\n<option value="27">27</option>\n<option value="28">28</option>\n<option value="29">29</option>\n<option value="30">30</option>\n<option value="31" selected="selected">31</option>\n</select>\n<select name="mydate_month" id="id_mydate_month">\n<option value="1">\u042f\u043d\u0432\u0430\u0440\u044c</option>\n<option value="2">\u0424\u0435\u0432\u0440\u0430\u043b\u044c</option>\n<option value="3">\u041c\u0430\u0440\u0442</option>\n<option value="4">\u0410\u043f\u0440\u0435\u043b\u044c</option>\n<option value="5">\u041c\u0430\u0439</option>\n<option value="6">\u0418\u044e\u043d\u044c</option>\n<option value="7">\u0418\u044e\u043b\u044c</option>\n<option value="8">\u0410\u0432\u0433\u0443\u0441\u0442</option>\n<option value="9">\u0421\u0435\u043d\u0442\u044f\u0431\u0440\u044c</option>\n<option value="10">\u041e\u043a\u0442\u044f\u0431\u0440\u044c</option>\n<option value="11">\u041d\u043e\u044f\u0431\u0440\u044c</option>\n<option value="12" selected="selected">\u0414\u0435\u043a\u0430\u0431\u0440\u044c</option>\n</select>\n<select name="mydate_year" id="id_mydate_year">\n<option value="2009" selected="selected">2009</option>\n<option value="2010">2010</option>\n<option value="2011">2011</option>\n<option value="2012">2012</option>\n<option value="2013">2013</option>\n<option value="2014">2014</option>\n<option value="2015">2015</option>\n<option value="2016">2016</option>\n<option value="2017">2017</option>\n<option value="2018">2018</option>\n</select>',
SelectDateWidget(years=range(2009, 2019)).render('mydate', datetime.date(2009, 12, 31))
)
@@ -547,45 +547,45 @@ class FormattingTests(TestCase):
self.assertEqual('N j, Y', get_format('DATE_FORMAT'))
self.assertEqual(0, get_format('FIRST_DAY_OF_WEEK'))
self.assertEqual('.', get_format('DECIMAL_SEPARATOR'))
- self.assertEqual(u'Dec. 31, 2009', date_format(self.d))
- self.assertEqual(u'December 2009', date_format(self.d, 'YEAR_MONTH_FORMAT'))
- self.assertEqual(u'12/31/2009 8:50 p.m.', date_format(self.dt, 'SHORT_DATETIME_FORMAT'))
- self.assertEqual(u'No localizable', localize('No localizable'))
+ self.assertEqual('Dec. 31, 2009', date_format(self.d))
+ self.assertEqual('December 2009', date_format(self.d, 'YEAR_MONTH_FORMAT'))
+ self.assertEqual('12/31/2009 8:50 p.m.', date_format(self.dt, 'SHORT_DATETIME_FORMAT'))
+ self.assertEqual('No localizable', localize('No localizable'))
settings.USE_THOUSAND_SEPARATOR = True
- self.assertEqual(u'66,666.666', localize(self.n))
- self.assertEqual(u'99,999.999', localize(self.f))
- self.assertEqual(u'10,000', localize(self.l))
+ self.assertEqual('66,666.666', localize(self.n))
+ self.assertEqual('99,999.999', localize(self.f))
+ self.assertEqual('10,000', localize(self.l))
settings.USE_THOUSAND_SEPARATOR = False
- self.assertEqual(u'66666.666', localize(self.n))
- self.assertEqual(u'99999.999', localize(self.f))
- self.assertEqual(u'10000', localize(self.l))
- self.assertEqual(u'Dec. 31, 2009', localize(self.d))
- self.assertEqual(u'Dec. 31, 2009, 8:50 p.m.', localize(self.dt))
+ self.assertEqual('66666.666', localize(self.n))
+ self.assertEqual('99999.999', localize(self.f))
+ self.assertEqual('10000', localize(self.l))
+ self.assertEqual('Dec. 31, 2009', localize(self.d))
+ self.assertEqual('Dec. 31, 2009, 8:50 p.m.', localize(self.dt))
settings.USE_THOUSAND_SEPARATOR = True
- self.assertEqual(u'66,666.666', Template('{{ n }}').render(self.ctxt))
- self.assertEqual(u'99,999.999', Template('{{ f }}').render(self.ctxt))
- self.assertEqual(u'10,000', Template('{{ l }}').render(self.ctxt))
+ self.assertEqual('66,666.666', Template('{{ n }}').render(self.ctxt))
+ self.assertEqual('99,999.999', Template('{{ f }}').render(self.ctxt))
+ self.assertEqual('10,000', Template('{{ l }}').render(self.ctxt))
settings.USE_THOUSAND_SEPARATOR = False
- self.assertEqual(u'66666.666', Template('{{ n }}').render(self.ctxt))
- self.assertEqual(u'99999.999', Template('{{ f }}').render(self.ctxt))
- self.assertEqual(u'Dec. 31, 2009', Template('{{ d }}').render(self.ctxt))
- self.assertEqual(u'Dec. 31, 2009, 8:50 p.m.', Template('{{ dt }}').render(self.ctxt))
- self.assertEqual(u'66666.67', Template('{{ n|floatformat:2 }}').render(self.ctxt))
- self.assertEqual(u'100000.0', Template('{{ f|floatformat }}').render(self.ctxt))
- self.assertEqual(u'12/31/2009', Template('{{ d|date:"SHORT_DATE_FORMAT" }}').render(self.ctxt))
- self.assertEqual(u'12/31/2009 8:50 p.m.', Template('{{ dt|date:"SHORT_DATETIME_FORMAT" }}').render(self.ctxt))
+ self.assertEqual('66666.666', Template('{{ n }}').render(self.ctxt))
+ self.assertEqual('99999.999', Template('{{ f }}').render(self.ctxt))
+ self.assertEqual('Dec. 31, 2009', Template('{{ d }}').render(self.ctxt))
+ self.assertEqual('Dec. 31, 2009, 8:50 p.m.', Template('{{ dt }}').render(self.ctxt))
+ self.assertEqual('66666.67', Template('{{ n|floatformat:2 }}').render(self.ctxt))
+ self.assertEqual('100000.0', Template('{{ f|floatformat }}').render(self.ctxt))
+ self.assertEqual('12/31/2009', Template('{{ d|date:"SHORT_DATE_FORMAT" }}').render(self.ctxt))
+ self.assertEqual('12/31/2009 8:50 p.m.', Template('{{ dt|date:"SHORT_DATETIME_FORMAT" }}').render(self.ctxt))
form5 = I18nForm({
- 'decimal_field': u'66666.666',
- 'float_field': u'99999.999',
- 'date_field': u'12/31/2009',
- 'datetime_field': u'12/31/2009 20:50',
- 'time_field': u'20:50',
- 'integer_field': u'1234',
+ 'decimal_field': '66666.666',
+ 'float_field': '99999.999',
+ 'date_field': '12/31/2009',
+ 'datetime_field': '12/31/2009 20:50',
+ 'time_field': '20:50',
+ 'integer_field': '1234',
})
self.assertEqual(True, form5.is_valid())
self.assertEqual(decimal.Decimal('66666.666'), form5.cleaned_data['decimal_field'])
@@ -596,14 +596,14 @@ class FormattingTests(TestCase):
self.assertEqual(1234, form5.cleaned_data['integer_field'])
form6 = SelectDateForm({
- 'date_field_month': u'12',
- 'date_field_day': u'31',
- 'date_field_year': u'2009'
+ 'date_field_month': '12',
+ 'date_field_day': '31',
+ 'date_field_year': '2009'
})
self.assertEqual(True, form6.is_valid())
self.assertEqual(datetime.date(2009, 12, 31), form6.cleaned_data['date_field'])
self.assertHTMLEqual(
- u'<select name="mydate_month" id="id_mydate_month">\n<option value="1">January</option>\n<option value="2">February</option>\n<option value="3">March</option>\n<option value="4">April</option>\n<option value="5">May</option>\n<option value="6">June</option>\n<option value="7">July</option>\n<option value="8">August</option>\n<option value="9">September</option>\n<option value="10">October</option>\n<option value="11">November</option>\n<option value="12" selected="selected">December</option>\n</select>\n<select name="mydate_day" id="id_mydate_day">\n<option value="1">1</option>\n<option value="2">2</option>\n<option value="3">3</option>\n<option value="4">4</option>\n<option value="5">5</option>\n<option value="6">6</option>\n<option value="7">7</option>\n<option value="8">8</option>\n<option value="9">9</option>\n<option value="10">10</option>\n<option value="11">11</option>\n<option value="12">12</option>\n<option value="13">13</option>\n<option value="14">14</option>\n<option value="15">15</option>\n<option value="16">16</option>\n<option value="17">17</option>\n<option value="18">18</option>\n<option value="19">19</option>\n<option value="20">20</option>\n<option value="21">21</option>\n<option value="22">22</option>\n<option value="23">23</option>\n<option value="24">24</option>\n<option value="25">25</option>\n<option value="26">26</option>\n<option value="27">27</option>\n<option value="28">28</option>\n<option value="29">29</option>\n<option value="30">30</option>\n<option value="31" selected="selected">31</option>\n</select>\n<select name="mydate_year" id="id_mydate_year">\n<option value="2009" selected="selected">2009</option>\n<option value="2010">2010</option>\n<option value="2011">2011</option>\n<option value="2012">2012</option>\n<option value="2013">2013</option>\n<option value="2014">2014</option>\n<option value="2015">2015</option>\n<option value="2016">2016</option>\n<option value="2017">2017</option>\n<option value="2018">2018</option>\n</select>',
+ '<select name="mydate_month" id="id_mydate_month">\n<option value="1">January</option>\n<option value="2">February</option>\n<option value="3">March</option>\n<option value="4">April</option>\n<option value="5">May</option>\n<option value="6">June</option>\n<option value="7">July</option>\n<option value="8">August</option>\n<option value="9">September</option>\n<option value="10">October</option>\n<option value="11">November</option>\n<option value="12" selected="selected">December</option>\n</select>\n<select name="mydate_day" id="id_mydate_day">\n<option value="1">1</option>\n<option value="2">2</option>\n<option value="3">3</option>\n<option value="4">4</option>\n<option value="5">5</option>\n<option value="6">6</option>\n<option value="7">7</option>\n<option value="8">8</option>\n<option value="9">9</option>\n<option value="10">10</option>\n<option value="11">11</option>\n<option value="12">12</option>\n<option value="13">13</option>\n<option value="14">14</option>\n<option value="15">15</option>\n<option value="16">16</option>\n<option value="17">17</option>\n<option value="18">18</option>\n<option value="19">19</option>\n<option value="20">20</option>\n<option value="21">21</option>\n<option value="22">22</option>\n<option value="23">23</option>\n<option value="24">24</option>\n<option value="25">25</option>\n<option value="26">26</option>\n<option value="27">27</option>\n<option value="28">28</option>\n<option value="29">29</option>\n<option value="30">30</option>\n<option value="31" selected="selected">31</option>\n</select>\n<select name="mydate_year" id="id_mydate_year">\n<option value="2009" selected="selected">2009</option>\n<option value="2010">2010</option>\n<option value="2011">2011</option>\n<option value="2012">2012</option>\n<option value="2013">2013</option>\n<option value="2014">2014</option>\n<option value="2015">2015</option>\n<option value="2016">2016</option>\n<option value="2017">2017</option>\n<option value="2018">2018</option>\n</select>',
SelectDateWidget(years=range(2009, 2019)).render('mydate', datetime.date(2009, 12, 31))
)
@@ -613,9 +613,9 @@ class FormattingTests(TestCase):
"""
with self.settings(USE_L10N=True, USE_THOUSAND_SEPARATOR=True):
with translation.override('de-at', deactivate=True):
- self.assertEqual(u'66.666,666', Template('{{ n }}').render(self.ctxt))
+ self.assertEqual('66.666,666', Template('{{ n }}').render(self.ctxt))
with translation.override('es-us', deactivate=True):
- self.assertEqual(u'31 de diciembre de 2009', date_format(self.d))
+ self.assertEqual('31 de diciembre de 2009', date_format(self.d))
def test_localized_input(self):
"""
@@ -624,7 +624,7 @@ class FormattingTests(TestCase):
settings.USE_L10N = True
with translation.override('de-at', deactivate=True):
form6 = CompanyForm({
- 'name': u'acme',
+ 'name': 'acme',
'date_added': datetime.datetime(2009, 12, 31, 6, 0, 0),
'cents_paid': decimal.Decimal('59.47'),
'products_delivered': 12000,
@@ -632,13 +632,13 @@ class FormattingTests(TestCase):
self.assertEqual(True, form6.is_valid())
self.assertHTMLEqual(
form6.as_ul(),
- u'<li><label for="id_name">Name:</label> <input id="id_name" type="text" name="name" value="acme" maxlength="50" /></li>\n<li><label for="id_date_added">Date added:</label> <input type="text" name="date_added" value="31.12.2009 06:00:00" id="id_date_added" /></li>\n<li><label for="id_cents_paid">Cents paid:</label> <input type="text" name="cents_paid" value="59,47" id="id_cents_paid" /></li>\n<li><label for="id_products_delivered">Products delivered:</label> <input type="text" name="products_delivered" value="12000" id="id_products_delivered" /></li>'
+ '<li><label for="id_name">Name:</label> <input id="id_name" type="text" name="name" value="acme" maxlength="50" /></li>\n<li><label for="id_date_added">Date added:</label> <input type="text" name="date_added" value="31.12.2009 06:00:00" id="id_date_added" /></li>\n<li><label for="id_cents_paid">Cents paid:</label> <input type="text" name="cents_paid" value="59,47" id="id_cents_paid" /></li>\n<li><label for="id_products_delivered">Products delivered:</label> <input type="text" name="products_delivered" value="12000" id="id_products_delivered" /></li>'
)
self.assertEqual(localize_input(datetime.datetime(2009, 12, 31, 6, 0, 0)), '31.12.2009 06:00:00')
self.assertEqual(datetime.datetime(2009, 12, 31, 6, 0, 0), form6.cleaned_data['date_added'])
with self.settings(USE_THOUSAND_SEPARATOR=True):
# Checking for the localized "products_delivered" field
- self.assertTrue(u'<input type="text" name="products_delivered" value="12.000" id="id_products_delivered" />' in form6.as_ul())
+ self.assertTrue('<input type="text" name="products_delivered" value="12.000" id="id_products_delivered" />' in form6.as_ul())
def test_iter_format_modules(self):
"""
@@ -826,9 +826,9 @@ class MiscTests(TestCase):
t_sing = Template("{% load i18n %}{% blocktrans %}The result was {{ percent }}%{% endblocktrans %}")
t_plur = Template("{% load i18n %}{% blocktrans count num as number %}{{ percent }}% represents {{ num }} object{% plural %}{{ percent }}% represents {{ num }} objects{% endblocktrans %}")
with translation.override('de'):
- self.assertEqual(t_sing.render(Context({'percent': 42})), u'Das Ergebnis war 42%')
- self.assertEqual(t_plur.render(Context({'percent': 42, 'num': 1})), u'42% stellt 1 Objekt dar')
- self.assertEqual(t_plur.render(Context({'percent': 42, 'num': 4})), u'42% stellt 4 Objekte dar')
+ self.assertEqual(t_sing.render(Context({'percent': 42})), 'Das Ergebnis war 42%')
+ self.assertEqual(t_plur.render(Context({'percent': 42, 'num': 1})), '42% stellt 1 Objekt dar')
+ self.assertEqual(t_plur.render(Context({'percent': 42, 'num': 4})), '42% stellt 4 Objekte dar')
class ResolutionOrderI18NTests(TestCase):
@@ -895,9 +895,9 @@ class TestModels(TestCase):
def test_safestr(self):
c = Company(cents_paid=12, products_delivered=1)
- c.name = SafeUnicode(u'Iñtërnâtiônàlizætiøn1')
+ c.name = SafeUnicode('Iñtërnâtiônàlizætiøn1')
c.save()
- c.name = SafeString(u'Iñtërnâtiônàlizætiøn1'.encode('utf-8'))
+ c.name = SafeString('Iñtërnâtiônàlizætiøn1'.encode('utf-8'))
c.save()
@@ -905,7 +905,7 @@ class TestLanguageInfo(TestCase):
def test_localized_language_info(self):
li = get_language_info('de')
self.assertEqual(li['code'], 'de')
- self.assertEqual(li['name_local'], u'Deutsch')
+ self.assertEqual(li['name_local'], 'Deutsch')
self.assertEqual(li['name'], 'German')
self.assertEqual(li['bidi'], False)
diff --git a/tests/regressiontests/inline_formsets/tests.py b/tests/regressiontests/inline_formsets/tests.py
index 59187ee6d0..8ad84f221f 100644
--- a/tests/regressiontests/inline_formsets/tests.py
+++ b/tests/regressiontests/inline_formsets/tests.py
@@ -1,4 +1,4 @@
-from __future__ import absolute_import
+from __future__ import absolute_import, unicode_literals
from django.forms.models import inlineformset_factory
from django.test import TestCase
@@ -13,13 +13,13 @@ class DeletionTests(TestCase):
poet = Poet.objects.create(name='test')
poem = poet.poem_set.create(name='test poem')
data = {
- 'poem_set-TOTAL_FORMS': u'1',
- 'poem_set-INITIAL_FORMS': u'1',
- 'poem_set-MAX_NUM_FORMS': u'0',
+ 'poem_set-TOTAL_FORMS': '1',
+ 'poem_set-INITIAL_FORMS': '1',
+ 'poem_set-MAX_NUM_FORMS': '0',
'poem_set-0-id': str(poem.pk),
'poem_set-0-poet': str(poet.pk),
- 'poem_set-0-name': u'test',
- 'poem_set-0-DELETE': u'on',
+ 'poem_set-0-name': 'test',
+ 'poem_set-0-DELETE': 'on',
}
formset = PoemFormSet(data, instance=poet)
formset.save()
@@ -34,12 +34,12 @@ class DeletionTests(TestCase):
PoemFormSet = inlineformset_factory(Poet, Poem, can_delete=True)
poet = Poet.objects.create(name='test')
data = {
- 'poem_set-TOTAL_FORMS': u'1',
- 'poem_set-INITIAL_FORMS': u'0',
- 'poem_set-MAX_NUM_FORMS': u'0',
- 'poem_set-0-id': u'',
- 'poem_set-0-poem': u'1',
- 'poem_set-0-name': u'x' * 1000,
+ 'poem_set-TOTAL_FORMS': '1',
+ 'poem_set-INITIAL_FORMS': '0',
+ 'poem_set-MAX_NUM_FORMS': '0',
+ 'poem_set-0-id': '',
+ 'poem_set-0-poem': '1',
+ 'poem_set-0-name': 'x' * 1000,
}
formset = PoemFormSet(data, instance=poet)
# Make sure this form doesn't pass validation.
@@ -63,12 +63,12 @@ class DeletionTests(TestCase):
poet = Poet.objects.create(name='test')
poem = poet.poem_set.create(name='test poem')
data = {
- 'poem_set-TOTAL_FORMS': u'1',
- 'poem_set-INITIAL_FORMS': u'1',
- 'poem_set-MAX_NUM_FORMS': u'0',
+ 'poem_set-TOTAL_FORMS': '1',
+ 'poem_set-INITIAL_FORMS': '1',
+ 'poem_set-MAX_NUM_FORMS': '0',
'poem_set-0-id': unicode(poem.id),
'poem_set-0-poem': unicode(poem.id),
- 'poem_set-0-name': u'x' * 1000,
+ 'poem_set-0-name': 'x' * 1000,
}
formset = PoemFormSet(data, instance=poet)
# Make sure this form doesn't pass validation.
@@ -90,14 +90,14 @@ class DeletionTests(TestCase):
"""
# exclude some required field from the forms
ChildFormSet = inlineformset_factory(School, Child, exclude=['father', 'mother'])
- school = School.objects.create(name=u'test')
- mother = Parent.objects.create(name=u'mother')
- father = Parent.objects.create(name=u'father')
+ school = School.objects.create(name='test')
+ mother = Parent.objects.create(name='mother')
+ father = Parent.objects.create(name='father')
data = {
- 'child_set-TOTAL_FORMS': u'1',
- 'child_set-INITIAL_FORMS': u'0',
- 'child_set-MAX_NUM_FORMS': u'0',
- 'child_set-0-name': u'child',
+ 'child_set-TOTAL_FORMS': '1',
+ 'child_set-INITIAL_FORMS': '0',
+ 'child_set-MAX_NUM_FORMS': '0',
+ 'child_set-0-name': 'child',
}
formset = ChildFormSet(data, instance=school)
self.assertEqual(formset.is_valid(), True)
diff --git a/tests/regressiontests/introspection/models.py b/tests/regressiontests/introspection/models.py
index 02a8d71549..3ca80c5aab 100644
--- a/tests/regressiontests/introspection/models.py
+++ b/tests/regressiontests/introspection/models.py
@@ -1,3 +1,5 @@
+from __future__ import unicode_literals
+
from django.db import models
@@ -11,7 +13,7 @@ class Reporter(models.Model):
unique_together = ('first_name', 'last_name')
def __unicode__(self):
- return u"%s %s" % (self.first_name, self.last_name)
+ return "%s %s" % (self.first_name, self.last_name)
class Article(models.Model):
headline = models.CharField(max_length=100)
diff --git a/tests/regressiontests/introspection/tests.py b/tests/regressiontests/introspection/tests.py
index ca58f04494..06736a68cb 100644
--- a/tests/regressiontests/introspection/tests.py
+++ b/tests/regressiontests/introspection/tests.py
@@ -1,4 +1,4 @@
-from __future__ import absolute_import
+from __future__ import absolute_import,unicode_literals
from functools import update_wrapper
@@ -125,12 +125,12 @@ class IntrospectionTests(TestCase):
def test_get_key_columns(self):
cursor = connection.cursor()
key_columns = connection.introspection.get_key_columns(cursor, Article._meta.db_table)
- self.assertEqual(key_columns, [(u'reporter_id', Reporter._meta.db_table, u'id')])
+ self.assertEqual(key_columns, [('reporter_id', Reporter._meta.db_table, 'id')])
def test_get_primary_key_column(self):
cursor = connection.cursor()
primary_key_column = connection.introspection.get_primary_key_column(cursor, Article._meta.db_table)
- self.assertEqual(primary_key_column, u'id')
+ self.assertEqual(primary_key_column, 'id')
def test_get_indexes(self):
cursor = connection.cursor()
diff --git a/tests/regressiontests/localflavor/ar/tests.py b/tests/regressiontests/localflavor/ar/tests.py
index b48fb7cff3..0731c3ce9b 100644
--- a/tests/regressiontests/localflavor/ar/tests.py
+++ b/tests/regressiontests/localflavor/ar/tests.py
@@ -1,3 +1,5 @@
+from __future__ import unicode_literals
+
from django.contrib.localflavor.ar.forms import (ARProvinceSelect,
ARPostalCodeField, ARDNIField, ARCUITField)
@@ -7,7 +9,7 @@ from django.test import SimpleTestCase
class ARLocalFlavorTests(SimpleTestCase):
def test_ARProvinceSelect(self):
f = ARProvinceSelect()
- out = u'''<select name="provincias">
+ out = '''<select name="provincias">
<option value="B">Buenos Aires</option>
<option value="K">Catamarca</option>
<option value="H">Chaco</option>
@@ -36,16 +38,16 @@ class ARLocalFlavorTests(SimpleTestCase):
self.assertHTMLEqual(f.render('provincias', 'A'), out)
def test_ARPostalCodeField(self):
- error_format = [u'Enter a postal code in the format NNNN or ANNNNAAA.']
- error_atmost = [u'Ensure this value has at most 8 characters (it has 9).']
- error_atleast = [u'Ensure this value has at least 4 characters (it has 3).']
+ error_format = ['Enter a postal code in the format NNNN or ANNNNAAA.']
+ error_atmost = ['Ensure this value has at most 8 characters (it has 9).']
+ error_atleast = ['Ensure this value has at least 4 characters (it has 3).']
valid = {
'5000': '5000',
'C1064AAB': 'C1064AAB',
'c1064AAB': 'C1064AAB',
'C1064aab': 'C1064AAB',
'4400': '4400',
- u'C1064AAB': 'C1064AAB',
+ 'C1064AAB': 'C1064AAB',
}
invalid = {
'C1064AABB': error_atmost + error_format,
@@ -58,13 +60,13 @@ class ARLocalFlavorTests(SimpleTestCase):
self.assertFieldOutput(ARPostalCodeField, valid, invalid)
def test_ARDNIField(self):
- error_length = [u'This field requires 7 or 8 digits.']
- error_digitsonly = [u'This field requires only numbers.']
+ error_length = ['This field requires 7 or 8 digits.']
+ error_digitsonly = ['This field requires only numbers.']
valid = {
'20123456': '20123456',
'20.123.456': '20123456',
- u'20123456': '20123456',
- u'20.123.456': '20123456',
+ '20123456': '20123456',
+ '20.123.456': '20123456',
'20.123456': '20123456',
'9123456': '9123456',
'9.123.456': '9123456',
@@ -77,11 +79,11 @@ class ARLocalFlavorTests(SimpleTestCase):
self.assertFieldOutput(ARDNIField, valid, invalid)
def test_ARCUITField(self):
- error_format = [u'Enter a valid CUIT in XX-XXXXXXXX-X or XXXXXXXXXXXX format.']
- error_invalid = [u'Invalid CUIT.']
+ error_format = ['Enter a valid CUIT in XX-XXXXXXXX-X or XXXXXXXXXXXX format.']
+ error_invalid = ['Invalid CUIT.']
valid = {
'20-10123456-9': '20-10123456-9',
- u'20-10123456-9': '20-10123456-9',
+ '20-10123456-9': '20-10123456-9',
'27-10345678-4': '27-10345678-4',
'20101234569': '20-10123456-9',
'27103456784': '27-10345678-4',
@@ -93,6 +95,6 @@ class ARLocalFlavorTests(SimpleTestCase):
'20-10123456-': error_format,
'20-10123456-5': error_invalid,
'27-10345678-1': error_invalid,
- u'27-10345678-1': error_invalid,
+ '27-10345678-1': error_invalid,
}
self.assertFieldOutput(ARCUITField, valid, invalid)
diff --git a/tests/regressiontests/localflavor/at/tests.py b/tests/regressiontests/localflavor/at/tests.py
index d47e970123..9123ba4e88 100644
--- a/tests/regressiontests/localflavor/at/tests.py
+++ b/tests/regressiontests/localflavor/at/tests.py
@@ -1,3 +1,5 @@
+from __future__ import unicode_literals
+
from django.contrib.localflavor.at.forms import (ATZipCodeField, ATStateSelect,
ATSocialSecurityNumberField)
@@ -7,7 +9,7 @@ from django.test import SimpleTestCase
class ATLocalFlavorTests(SimpleTestCase):
def test_ATStateSelect(self):
f = ATStateSelect()
- out = u'''<select name="bundesland">
+ out = '''<select name="bundesland">
<option value="BL">Burgenland</option>
<option value="KA">Carinthia</option>
<option value="NO">Lower Austria</option>
@@ -21,7 +23,7 @@ class ATLocalFlavorTests(SimpleTestCase):
self.assertHTMLEqual(f.render('bundesland', 'WI'), out)
def test_ATZipCodeField(self):
- error_format = [u'Enter a zip code in the format XXXX.']
+ error_format = ['Enter a zip code in the format XXXX.']
valid = {
'1150': '1150',
'4020': '4020',
@@ -36,7 +38,7 @@ class ATLocalFlavorTests(SimpleTestCase):
self.assertFieldOutput(ATZipCodeField, valid, invalid)
def test_ATSocialSecurityNumberField(self):
- error_format = [u'Enter a valid Austrian Social Security Number in XXXX XXXXXX format.']
+ error_format = ['Enter a valid Austrian Social Security Number in XXXX XXXXXX format.']
valid = {
'1237 010180': '1237 010180',
}
diff --git a/tests/regressiontests/localflavor/au/tests.py b/tests/regressiontests/localflavor/au/tests.py
index 42673a902b..69472f0935 100644
--- a/tests/regressiontests/localflavor/au/tests.py
+++ b/tests/regressiontests/localflavor/au/tests.py
@@ -1,4 +1,4 @@
-from __future__ import absolute_import
+from __future__ import absolute_import, unicode_literals
import re
@@ -44,9 +44,9 @@ class AULocalflavorTests(SimpleTestCase):
form = AustralianPlaceForm({'state':'NSW', 'name':'Wollongong'})
self.assertFalse(form.is_valid())
self.assertEqual(
- form.errors['state_required'], [u'This field is required.'])
+ form.errors['state_required'], ['This field is required.'])
self.assertEqual(
- form.errors['postcode_required'], [u'This field is required.'])
+ form.errors['postcode_required'], ['This field is required.'])
def test_field_blank_option(self):
""" Test that the empty option is there. """
@@ -66,7 +66,7 @@ class AULocalflavorTests(SimpleTestCase):
def test_AUStateSelect(self):
f = AUStateSelect()
- out = u'''<select name="state">
+ out = '''<select name="state">
<option value="ACT">Australian Capital Territory</option>
<option value="NSW" selected="selected">New South Wales</option>
<option value="NT">Northern Territory</option>
@@ -79,19 +79,19 @@ class AULocalflavorTests(SimpleTestCase):
self.assertHTMLEqual(f.render('state', 'NSW'), out)
def test_AUPostCodeField(self):
- error_format = [u'Enter a 4 digit postcode.']
+ error_format = ['Enter a 4 digit postcode.']
valid = {
'1234': '1234',
'2000': '2000',
}
invalid = {
'abcd': error_format,
- '20001': [u'Ensure this value has at most 4 characters (it has 5).'] + error_format,
+ '20001': ['Ensure this value has at most 4 characters (it has 5).'] + error_format,
}
self.assertFieldOutput(AUPostCodeField, valid, invalid)
def test_AUPhoneNumberField(self):
- error_format = [u'Phone numbers must contain 10 digits.']
+ error_format = ['Phone numbers must contain 10 digits.']
valid = {
'1234567890': '1234567890',
'0213456789': '0213456789',
diff --git a/tests/regressiontests/localflavor/be/tests.py b/tests/regressiontests/localflavor/be/tests.py
index 6cfdfb3ffa..69f77eb35f 100644
--- a/tests/regressiontests/localflavor/be/tests.py
+++ b/tests/regressiontests/localflavor/be/tests.py
@@ -1,3 +1,5 @@
+from __future__ import unicode_literals
+
from django.contrib.localflavor.be.forms import (BEPostalCodeField,
BEPhoneNumberField, BERegionSelect, BEProvinceSelect)
@@ -6,10 +8,10 @@ from django.test import SimpleTestCase
class BELocalFlavorTests(SimpleTestCase):
def test_BEPostalCodeField(self):
- error_format = [u'Enter a valid postal code in the range and format 1XXX - 9XXX.']
+ error_format = ['Enter a valid postal code in the range and format 1XXX - 9XXX.']
valid = {
- u'1451': '1451',
- u'2540': '2540',
+ '1451': '1451',
+ '2540': '2540',
}
invalid = {
'0287': error_format,
@@ -28,17 +30,17 @@ class BELocalFlavorTests(SimpleTestCase):
'0xxxxxxxx or 04xxxxxxxx.')
]
valid = {
- u'01 234 56 78': '01 234 56 78',
- u'01/234.56.78': '01/234.56.78',
- u'01.234.56.78': '01.234.56.78',
- u'012 34 56 78': '012 34 56 78',
- u'012/34.56.78': '012/34.56.78',
- u'012.34.56.78': '012.34.56.78',
- u'0412 34 56 78': '0412 34 56 78',
- u'0412/34.56.78': '0412/34.56.78',
- u'0412.34.56.78': '0412.34.56.78',
- u'012345678': '012345678',
- u'0412345678': '0412345678',
+ '01 234 56 78': '01 234 56 78',
+ '01/234.56.78': '01/234.56.78',
+ '01.234.56.78': '01.234.56.78',
+ '012 34 56 78': '012 34 56 78',
+ '012/34.56.78': '012/34.56.78',
+ '012.34.56.78': '012.34.56.78',
+ '0412 34 56 78': '0412 34 56 78',
+ '0412/34.56.78': '0412/34.56.78',
+ '0412.34.56.78': '0412.34.56.78',
+ '012345678': '012345678',
+ '0412345678': '0412345678',
}
invalid = {
'01234567': error_format,
@@ -54,7 +56,7 @@ class BELocalFlavorTests(SimpleTestCase):
def test_BERegionSelect(self):
f = BERegionSelect()
- out = u'''<select name="regions">
+ out = '''<select name="regions">
<option value="BRU">Brussels Capital Region</option>
<option value="VLG" selected="selected">Flemish Region</option>
<option value="WAL">Wallonia</option>
@@ -63,7 +65,7 @@ class BELocalFlavorTests(SimpleTestCase):
def test_BEProvinceSelect(self):
f = BEProvinceSelect()
- out = u'''<select name="provinces">
+ out = '''<select name="provinces">
<option value="VAN">Antwerp</option>
<option value="BRU">Brussels</option>
<option value="VOV">East Flanders</option>
diff --git a/tests/regressiontests/localflavor/br/tests.py b/tests/regressiontests/localflavor/br/tests.py
index 5777bc3500..abee2d7336 100644
--- a/tests/regressiontests/localflavor/br/tests.py
+++ b/tests/regressiontests/localflavor/br/tests.py
@@ -1,3 +1,5 @@
+from __future__ import unicode_literals
+
from django.contrib.localflavor.br.forms import (BRZipCodeField,
BRCNPJField, BRCPFField, BRPhoneNumberField, BRStateSelect,
BRStateChoiceField)
@@ -7,7 +9,7 @@ from django.test import SimpleTestCase
class BRLocalFlavorTests(SimpleTestCase):
def test_BRZipCodeField(self):
- error_format = [u'Enter a zip code in the format XXXXX-XXX.']
+ error_format = ['Enter a zip code in the format XXXXX-XXX.']
valid = {
'12345-123': '12345-123',
}
@@ -21,8 +23,8 @@ class BRLocalFlavorTests(SimpleTestCase):
self.assertFieldOutput(BRZipCodeField, valid, invalid)
def test_BRCNPJField(self):
- error_format = [u'Invalid CNPJ number.']
- error_numbersonly = [u'This field requires only numbers.']
+ error_format = ['Invalid CNPJ number.']
+ error_numbersonly = ['This field requires only numbers.']
valid = {
'64.132.916/0001-88': '64.132.916/0001-88',
'64-132-916/0001-88': '64-132-916/0001-88',
@@ -37,11 +39,11 @@ class BRLocalFlavorTests(SimpleTestCase):
self.assertFieldOutput(BRCNPJField, valid, invalid)
def test_BRCPFField(self):
- error_format = [u'Invalid CPF number.']
- error_numbersonly = [u'This field requires only numbers.']
- error_atmost_chars = [u'Ensure this value has at most 14 characters (it has 15).']
- error_atleast_chars = [u'Ensure this value has at least 11 characters (it has 10).']
- error_atmost = [u'This field requires at most 11 digits or 14 characters.']
+ error_format = ['Invalid CPF number.']
+ error_numbersonly = ['This field requires only numbers.']
+ error_atmost_chars = ['Ensure this value has at most 14 characters (it has 15).']
+ error_atleast_chars = ['Ensure this value has at least 11 characters (it has 10).']
+ error_atmost = ['This field requires at most 11 digits or 14 characters.']
valid = {
'663.256.017-26': '663.256.017-26',
'66325601726': '66325601726',
@@ -62,21 +64,21 @@ class BRLocalFlavorTests(SimpleTestCase):
def test_BRPhoneNumberField(self):
# TODO: this doesn't test for any invalid inputs.
valid = {
- '41-3562-3464': u'41-3562-3464',
- '4135623464': u'41-3562-3464',
- '41 3562-3464': u'41-3562-3464',
- '41 3562 3464': u'41-3562-3464',
- '(41) 3562 3464': u'41-3562-3464',
- '41.3562.3464': u'41-3562-3464',
- '41.3562-3464': u'41-3562-3464',
- ' (41) 3562.3464': u'41-3562-3464',
+ '41-3562-3464': '41-3562-3464',
+ '4135623464': '41-3562-3464',
+ '41 3562-3464': '41-3562-3464',
+ '41 3562 3464': '41-3562-3464',
+ '(41) 3562 3464': '41-3562-3464',
+ '41.3562.3464': '41-3562-3464',
+ '41.3562-3464': '41-3562-3464',
+ ' (41) 3562.3464': '41-3562-3464',
}
invalid = {}
self.assertFieldOutput(BRPhoneNumberField, valid, invalid)
def test_BRStateSelect(self):
f = BRStateSelect()
- out = u'''<select name="states">
+ out = '''<select name="states">
<option value="AC">Acre</option>
<option value="AL">Alagoas</option>
<option value="AP">Amap\xe1</option>
@@ -108,7 +110,7 @@ class BRLocalFlavorTests(SimpleTestCase):
self.assertHTMLEqual(f.render('states', 'PR'), out)
def test_BRStateChoiceField(self):
- error_invalid = [u'Select a valid brazilian state. That state is not one of the available states.']
+ error_invalid = ['Select a valid brazilian state. That state is not one of the available states.']
valid = {
'AC': 'AC',
'AL': 'AL',
diff --git a/tests/regressiontests/localflavor/ca/tests.py b/tests/regressiontests/localflavor/ca/tests.py
index 903321b2cd..8f0eb9c702 100644
--- a/tests/regressiontests/localflavor/ca/tests.py
+++ b/tests/regressiontests/localflavor/ca/tests.py
@@ -1,3 +1,5 @@
+from __future__ import unicode_literals
+
import warnings
from django.contrib.localflavor.ca.forms import (CAPostalCodeField,
@@ -21,7 +23,7 @@ class CALocalFlavorTests(SimpleTestCase):
def test_CAProvinceSelect(self):
f = CAProvinceSelect()
- out = u'''<select name="province">
+ out = '''<select name="province">
<option value="AB" selected="selected">Alberta</option>
<option value="BC">British Columbia</option>
<option value="MB">Manitoba</option>
@@ -39,7 +41,7 @@ class CALocalFlavorTests(SimpleTestCase):
self.assertHTMLEqual(f.render('province', 'AB'), out)
def test_CAPostalCodeField(self):
- error_format = [u'Enter a postal code in the format XXX XXX.']
+ error_format = ['Enter a postal code in the format XXX XXX.']
valid = {
'T2S 2H7': 'T2S 2H7',
'T2S 2W7': 'T2S 2W7',
@@ -69,7 +71,7 @@ class CALocalFlavorTests(SimpleTestCase):
self.assertFieldOutput(CAPostalCodeField, valid, invalid)
def test_CAPhoneNumberField(self):
- error_format = [u'Phone numbers must be in XXX-XXX-XXXX format.']
+ error_format = ['Phone numbers must be in XXX-XXX-XXXX format.']
valid = {
'403-555-1212': '403-555-1212',
'4035551212': '403-555-1212',
@@ -87,7 +89,7 @@ class CALocalFlavorTests(SimpleTestCase):
self.assertFieldOutput(CAPhoneNumberField, valid, invalid)
def test_CAProvinceField(self):
- error_format = [u'Enter a Canadian province or territory.']
+ error_format = ['Enter a Canadian province or territory.']
valid = {
'ab': 'AB',
'BC': 'BC',
@@ -101,7 +103,7 @@ class CALocalFlavorTests(SimpleTestCase):
self.assertFieldOutput(CAProvinceField, valid, invalid)
def test_CASocialInsuranceField(self):
- error_format = [u'Enter a valid Canadian Social Insurance number in XXX-XXX-XXX format.']
+ error_format = ['Enter a valid Canadian Social Insurance number in XXX-XXX-XXX format.']
valid = {
'046-454-286': '046-454-286',
}
diff --git a/tests/regressiontests/localflavor/ch/tests.py b/tests/regressiontests/localflavor/ch/tests.py
index 17660a46d2..f3491855a2 100644
--- a/tests/regressiontests/localflavor/ch/tests.py
+++ b/tests/regressiontests/localflavor/ch/tests.py
@@ -1,3 +1,5 @@
+from __future__ import unicode_literals
+
from django.contrib.localflavor.ch.forms import (CHZipCodeField,
CHPhoneNumberField, CHIdentityCardNumberField, CHStateSelect)
@@ -7,7 +9,7 @@ from django.test import SimpleTestCase
class CHLocalFlavorTests(SimpleTestCase):
def test_CHStateSelect(self):
f = CHStateSelect()
- out = u'''<select name="state">
+ out = '''<select name="state">
<option value="AG" selected="selected">Aargau</option>
<option value="AI">Appenzell Innerrhoden</option>
<option value="AR">Appenzell Ausserrhoden</option>
@@ -38,7 +40,7 @@ class CHLocalFlavorTests(SimpleTestCase):
self.assertHTMLEqual(f.render('state', 'AG'), out)
def test_CHZipCodeField(self):
- error_format = [u'Enter a zip code in the format XXXX.']
+ error_format = ['Enter a zip code in the format XXXX.']
valid = {
'1234': '1234',
'0000': '0000',
@@ -50,7 +52,7 @@ class CHLocalFlavorTests(SimpleTestCase):
self.assertFieldOutput(CHZipCodeField, valid, invalid)
def test_CHPhoneNumberField(self):
- error_format = [u'Phone numbers must be in 0XX XXX XX XX format.']
+ error_format = ['Phone numbers must be in 0XX XXX XX XX format.']
valid = {
'012 345 67 89': '012 345 67 89',
'0123456789': '012 345 67 89',
@@ -62,7 +64,7 @@ class CHLocalFlavorTests(SimpleTestCase):
self.assertFieldOutput(CHPhoneNumberField, valid, invalid)
def test_CHIdentityCardNumberField(self):
- error_format = [u'Enter a valid Swiss identity or passport card number in X1234567<0 or 1234567890 format.']
+ error_format = ['Enter a valid Swiss identity or passport card number in X1234567<0 or 1234567890 format.']
valid = {
'C1234567<0': 'C1234567<0',
'2123456700': '2123456700',
diff --git a/tests/regressiontests/localflavor/cl/tests.py b/tests/regressiontests/localflavor/cl/tests.py
index 250f5645a0..47cae6bd48 100644
--- a/tests/regressiontests/localflavor/cl/tests.py
+++ b/tests/regressiontests/localflavor/cl/tests.py
@@ -1,3 +1,5 @@
+from __future__ import unicode_literals
+
from django.contrib.localflavor.cl.forms import CLRutField, CLRegionSelect
from django.test import SimpleTestCase
@@ -6,7 +8,7 @@ from django.test import SimpleTestCase
class CLLocalFlavorTests(SimpleTestCase):
def test_CLRegionSelect(self):
f = CLRegionSelect()
- out = u'''<select name="foo">
+ out = '''<select name="foo">
<option value="RM">Regi\xf3n Metropolitana de Santiago</option>
<option value="I">Regi\xf3n de Tarapac\xe1</option>
<option value="II">Regi\xf3n de Antofagasta</option>
@@ -26,8 +28,8 @@ class CLLocalFlavorTests(SimpleTestCase):
self.assertHTMLEqual(f.render('foo', 'bar'), out)
def test_CLRutField(self):
- error_invalid = [u'The Chilean RUT is not valid.']
- error_format = [u'Enter a valid Chilean RUT. The format is XX.XXX.XXX-X.']
+ error_invalid = ['The Chilean RUT is not valid.']
+ error_format = ['Enter a valid Chilean RUT. The format is XX.XXX.XXX-X.']
valid = {
'11-6': '11-6',
'116': '11-6',
diff --git a/tests/regressiontests/localflavor/cn/tests.py b/tests/regressiontests/localflavor/cn/tests.py
index ac4331cca9..24bcc6e392 100644
--- a/tests/regressiontests/localflavor/cn/tests.py
+++ b/tests/regressiontests/localflavor/cn/tests.py
@@ -1,4 +1,5 @@
# Tests for contrib/localflavor/ CN Form Fields
+from __future__ import unicode_literals
from django.contrib.localflavor.cn.forms import (CNProvinceSelect,
CNPostCodeField, CNIDCardField, CNPhoneNumberField, CNCellNumberField)
@@ -7,7 +8,7 @@ from django.test import SimpleTestCase
class CNLocalFlavorTests(SimpleTestCase):
def test_CNProvinceSelect(self):
f = CNProvinceSelect()
- correct_output = u'''<select name="provinces">
+ correct_output = '''<select name="provinces">
<option value="anhui">\u5b89\u5fbd</option>
<option value="beijing">\u5317\u4eac</option>
<option value="chongqing">\u91cd\u5e86</option>
@@ -46,9 +47,9 @@ class CNLocalFlavorTests(SimpleTestCase):
self.assertHTMLEqual(f.render('provinces', 'hubei'), correct_output)
def test_CNPostCodeField(self):
- error_format = [u'Enter a post code in the format XXXXXX.']
+ error_format = ['Enter a post code in the format XXXXXX.']
valid = {
- '091209': u'091209'
+ '091209': '091209'
}
invalid = {
'09120': error_format,
@@ -59,17 +60,17 @@ class CNLocalFlavorTests(SimpleTestCase):
def test_CNIDCardField(self):
valid = {
# A valid 1st generation ID Card Number.
- '110101491001001': u'110101491001001',
+ '110101491001001': '110101491001001',
# A valid 2nd generation ID Card number.
- '11010119491001001X': u'11010119491001001X',
+ '11010119491001001X': '11010119491001001X',
# Another valid 2nd gen ID Number with a case change
- '11010119491001001x': u'11010119491001001X'
+ '11010119491001001x': '11010119491001001X'
}
- wrong_format = [u'ID Card Number consists of 15 or 18 digits.']
- wrong_location = [u'Invalid ID Card Number: Wrong location code']
- wrong_bday = [u'Invalid ID Card Number: Wrong birthdate']
- wrong_checksum = [u'Invalid ID Card Number: Wrong checksum']
+ wrong_format = ['ID Card Number consists of 15 or 18 digits.']
+ wrong_location = ['Invalid ID Card Number: Wrong location code']
+ wrong_bday = ['Invalid ID Card Number: Wrong birthdate']
+ wrong_checksum = ['Invalid ID Card Number: Wrong checksum']
invalid = {
'abcdefghijklmnop': wrong_format,
@@ -83,13 +84,13 @@ class CNLocalFlavorTests(SimpleTestCase):
self.assertFieldOutput(CNIDCardField, valid, invalid)
def test_CNPhoneNumberField(self):
- error_format = [u'Enter a valid phone number.']
+ error_format = ['Enter a valid phone number.']
valid = {
- '010-12345678': u'010-12345678',
- '010-1234567': u'010-1234567',
- '0101-12345678': u'0101-12345678',
- '0101-1234567': u'0101-1234567',
- '010-12345678-020':u'010-12345678-020'
+ '010-12345678': '010-12345678',
+ '010-1234567': '010-1234567',
+ '0101-12345678': '0101-12345678',
+ '0101-1234567': '0101-1234567',
+ '010-12345678-020':'010-12345678-020'
}
invalid = {
'01x-12345678': error_format,
@@ -101,9 +102,9 @@ class CNLocalFlavorTests(SimpleTestCase):
self.assertFieldOutput(CNPhoneNumberField, valid, invalid)
def test_CNCellNumberField(self):
- error_format = [u'Enter a valid cell number.']
+ error_format = ['Enter a valid cell number.']
valid = {
- '13012345678': u'13012345678',
+ '13012345678': '13012345678',
}
invalid = {
'130123456789': error_format,
diff --git a/tests/regressiontests/localflavor/co/tests.py b/tests/regressiontests/localflavor/co/tests.py
index 4ab1768082..68b20c4308 100644
--- a/tests/regressiontests/localflavor/co/tests.py
+++ b/tests/regressiontests/localflavor/co/tests.py
@@ -1,3 +1,5 @@
+from __future__ import unicode_literals
+
from django.contrib.localflavor.co.forms import CODepartmentSelect
from django.test import SimpleTestCase
@@ -5,7 +7,7 @@ from django.test import SimpleTestCase
class COLocalFlavorTests(SimpleTestCase):
def test_CODepartmentSelect(self):
d = CODepartmentSelect()
- out = u"""<select name="department">
+ out = """<select name="department">
<option value="AMA">Amazonas</option>
<option value="ANT">Antioquia</option>
<option value="ARA">Arauca</option>
diff --git a/tests/regressiontests/localflavor/cz/tests.py b/tests/regressiontests/localflavor/cz/tests.py
index b8b46b34bb..e4cc05e0c6 100644
--- a/tests/regressiontests/localflavor/cz/tests.py
+++ b/tests/regressiontests/localflavor/cz/tests.py
@@ -1,3 +1,5 @@
+from __future__ import unicode_literals
+
from django.contrib.localflavor.cz.forms import (CZPostalCodeField,
CZRegionSelect, CZBirthNumberField, CZICNumberField)
@@ -8,7 +10,7 @@ from django.test import SimpleTestCase
class CZLocalFlavorTests(SimpleTestCase):
def test_CZRegionSelect(self):
f = CZRegionSelect()
- out = u'''<select name="regions">
+ out = '''<select name="regions">
<option value="PR">Prague</option>
<option value="CE">Central Bohemian Region</option>
<option value="SO">South Bohemian Region</option>
@@ -27,7 +29,7 @@ class CZLocalFlavorTests(SimpleTestCase):
self.assertHTMLEqual(f.render('regions', 'TT'), out)
def test_CZPostalCodeField(self):
- error_format = [u'Enter a postal code in the format XXXXX or XXX XX.']
+ error_format = ['Enter a postal code in the format XXXXX or XXX XX.']
valid = {
'91909': '91909',
'917 01': '91701',
@@ -42,8 +44,8 @@ class CZLocalFlavorTests(SimpleTestCase):
self.assertFieldOutput(CZPostalCodeField, valid, invalid)
def test_CZBirthNumberField(self):
- error_format = [u'Enter a birth number in the format XXXXXX/XXXX or XXXXXXXXXX.']
- error_invalid = [u'Enter a valid birth number.']
+ error_format = ['Enter a birth number in the format XXXXXX/XXXX or XXXXXXXXXX.']
+ error_invalid = ['Enter a valid birth number.']
valid = {
'880523/1237': '880523/1237',
'8805231237': '8805231237',
@@ -63,7 +65,7 @@ class CZLocalFlavorTests(SimpleTestCase):
self.assertFieldOutput(CZBirthNumberField, valid, invalid)
def test_CZICNumberField(self):
- error_invalid = [u'Enter a valid IC number.']
+ error_invalid = ['Enter a valid IC number.']
valid ={
'12345679': '12345679',
'12345601': '12345601',
diff --git a/tests/regressiontests/localflavor/de/tests.py b/tests/regressiontests/localflavor/de/tests.py
index a3f75ce2f1..bdf0bcf44f 100644
--- a/tests/regressiontests/localflavor/de/tests.py
+++ b/tests/regressiontests/localflavor/de/tests.py
@@ -1,3 +1,5 @@
+from __future__ import unicode_literals
+
from django.contrib.localflavor.de.forms import (DEZipCodeField, DEStateSelect,
DEIdentityCardNumberField)
@@ -7,7 +9,7 @@ from django.test import SimpleTestCase
class DELocalFlavorTests(SimpleTestCase):
def test_DEStateSelect(self):
f = DEStateSelect()
- out = u'''<select name="states">
+ out = '''<select name="states">
<option value="BW">Baden-Wuerttemberg</option>
<option value="BY">Bavaria</option>
<option value="BE">Berlin</option>
@@ -28,7 +30,7 @@ class DELocalFlavorTests(SimpleTestCase):
self.assertHTMLEqual(f.render('states', 'TH'), out)
def test_DEZipCodeField(self):
- error_format = [u'Enter a zip code in the format XXXXX.']
+ error_format = ['Enter a zip code in the format XXXXX.']
valid = {
'99423': '99423',
}
@@ -38,7 +40,7 @@ class DELocalFlavorTests(SimpleTestCase):
self.assertFieldOutput(DEZipCodeField, valid, invalid)
def test_DEIdentityCardNumberField(self):
- error_format = [u'Enter a valid German identity card number in XXXXXXXXXXX-XXXXXXX-XXXXXXX-X format.']
+ error_format = ['Enter a valid German identity card number in XXXXXXXXXXX-XXXXXXX-XXXXXXX-X format.']
valid = {
'7549313035D-6004103-0903042-0': '7549313035D-6004103-0903042-0',
'9786324830D 6104243 0910271 2': '9786324830D-6104243-0910271-2',
diff --git a/tests/regressiontests/localflavor/ec/tests.py b/tests/regressiontests/localflavor/ec/tests.py
index 0ebe2f396d..c72d77e558 100644
--- a/tests/regressiontests/localflavor/ec/tests.py
+++ b/tests/regressiontests/localflavor/ec/tests.py
@@ -1,3 +1,5 @@
+from __future__ import unicode_literals
+
from django.contrib.localflavor.ec.forms import ECProvinceSelect
from django.test import SimpleTestCase
@@ -5,7 +7,7 @@ from django.test import SimpleTestCase
class ECLocalFlavorTests(SimpleTestCase):
def test_ECProvinceSelect(self):
p = ECProvinceSelect()
- out = u"""<select name="province">
+ out = """<select name="province">
<option value="A">Azuay</option>
<option value="B">Bol\xedvar</option>
<option value="F">Ca\xf1ar</option>
diff --git a/tests/regressiontests/localflavor/es/tests.py b/tests/regressiontests/localflavor/es/tests.py
index c13eac6d61..3fc072cffc 100644
--- a/tests/regressiontests/localflavor/es/tests.py
+++ b/tests/regressiontests/localflavor/es/tests.py
@@ -1,3 +1,5 @@
+from __future__ import unicode_literals
+
from django.contrib.localflavor.es.forms import (ESPostalCodeField, ESPhoneNumberField,
ESIdentityCardNumberField, ESCCCField, ESRegionSelect, ESProvinceSelect)
@@ -7,7 +9,7 @@ from django.test import SimpleTestCase
class ESLocalFlavorTests(SimpleTestCase):
def test_ESRegionSelect(self):
f = ESRegionSelect()
- out = u'''<select name="regions">
+ out = '''<select name="regions">
<option value="AN">Andalusia</option>
<option value="AR">Aragon</option>
<option value="O">Principality of Asturias</option>
@@ -30,7 +32,7 @@ class ESLocalFlavorTests(SimpleTestCase):
def test_ESProvinceSelect(self):
f = ESProvinceSelect()
- out = u'''<select name="provinces">
+ out = '''<select name="provinces">
<option value="01">Araba</option>
<option value="02">Albacete</option>
<option value="03">Alacant</option>
@@ -87,7 +89,7 @@ class ESLocalFlavorTests(SimpleTestCase):
self.assertHTMLEqual(f.render('provinces', '08'), out)
def test_ESPostalCodeField(self):
- error_invalid = [u'Enter a valid postal code in the range and format 01XXX - 52XXX.']
+ error_invalid = ['Enter a valid postal code in the range and format 01XXX - 52XXX.']
valid = {
'08028': '08028',
'28080': '28080',
@@ -103,7 +105,7 @@ class ESLocalFlavorTests(SimpleTestCase):
self.assertFieldOutput(ESPostalCodeField, valid, invalid)
def test_ESPhoneNumberField(self):
- error_invalid = [u'Enter a valid phone number in one of the formats 6XXXXXXXX, 8XXXXXXXX or 9XXXXXXXX.']
+ error_invalid = ['Enter a valid phone number in one of the formats 6XXXXXXXX, 8XXXXXXXX or 9XXXXXXXX.']
valid = {
'650010101': '650010101',
'931234567': '931234567',
@@ -119,10 +121,10 @@ class ESLocalFlavorTests(SimpleTestCase):
self.assertFieldOutput(ESPhoneNumberField, valid, invalid)
def test_ESIdentityCardNumberField(self):
- error_invalid = [u'Please enter a valid NIF, NIE, or CIF.']
- error_checksum_nif = [u'Invalid checksum for NIF.']
- error_checksum_nie = [u'Invalid checksum for NIE.']
- error_checksum_cif = [u'Invalid checksum for CIF.']
+ error_invalid = ['Please enter a valid NIF, NIE, or CIF.']
+ error_checksum_nif = ['Invalid checksum for NIF.']
+ error_checksum_nie = ['Invalid checksum for NIE.']
+ error_checksum_cif = ['Invalid checksum for CIF.']
valid = {
'78699688J': '78699688J',
'78699688-J': '78699688J',
@@ -155,8 +157,8 @@ class ESLocalFlavorTests(SimpleTestCase):
self.assertFieldOutput(ESIdentityCardNumberField, valid, invalid)
def test_ESCCCField(self):
- error_invalid = [u'Please enter a valid bank account number in format XXXX-XXXX-XX-XXXXXXXXXX.']
- error_checksum = [u'Invalid checksum for bank account number.']
+ error_invalid = ['Please enter a valid bank account number in format XXXX-XXXX-XX-XXXXXXXXXX.']
+ error_checksum = ['Invalid checksum for bank account number.']
valid = {
'20770338793100254321': '20770338793100254321',
'2077 0338 79 3100254321': '2077 0338 79 3100254321',
diff --git a/tests/regressiontests/localflavor/fi/tests.py b/tests/regressiontests/localflavor/fi/tests.py
index 70fce29f45..bfd2e2a010 100644
--- a/tests/regressiontests/localflavor/fi/tests.py
+++ b/tests/regressiontests/localflavor/fi/tests.py
@@ -1,3 +1,5 @@
+from __future__ import unicode_literals
+
from django.contrib.localflavor.fi.forms import (FIZipCodeField,
FISocialSecurityNumber, FIMunicipalitySelect)
@@ -7,7 +9,7 @@ from django.test import SimpleTestCase
class FILocalFlavorTests(SimpleTestCase):
def test_FIMunicipalitySelect(self):
f = FIMunicipalitySelect()
- out = u'''<select name="municipalities">
+ out = '''<select name="municipalities">
<option value="akaa">Akaa</option>
<option value="alajarvi">Alaj\xe4rvi</option>
<option value="alavieska">Alavieska</option>
@@ -354,7 +356,7 @@ class FILocalFlavorTests(SimpleTestCase):
self.assertHTMLEqual(f.render('municipalities', 'turku'), out)
def test_FIZipCodeField(self):
- error_format = [u'Enter a zip code in the format XXXXX.']
+ error_format = ['Enter a zip code in the format XXXXX.']
valid = {
'20540': '20540',
'20101': '20101',
@@ -366,7 +368,7 @@ class FILocalFlavorTests(SimpleTestCase):
self.assertFieldOutput(FIZipCodeField, valid, invalid)
def test_FISocialSecurityNumber(self):
- error_invalid = [u'Enter a valid Finnish social security number.']
+ error_invalid = ['Enter a valid Finnish social security number.']
valid = {
'010101-0101': '010101-0101',
'010101+0101': '010101+0101',
diff --git a/tests/regressiontests/localflavor/fr/tests.py b/tests/regressiontests/localflavor/fr/tests.py
index 9b65e1ec0d..55f8a68b3b 100644
--- a/tests/regressiontests/localflavor/fr/tests.py
+++ b/tests/regressiontests/localflavor/fr/tests.py
@@ -1,4 +1,6 @@
# -*- coding: utf-8 -*-
+from __future__ import unicode_literals
+
from django.contrib.localflavor.fr.forms import (FRZipCodeField,
FRPhoneNumberField, FRDepartmentSelect)
@@ -7,7 +9,7 @@ from django.test import SimpleTestCase
class FRLocalFlavorTests(SimpleTestCase):
def test_FRZipCodeField(self):
- error_format = [u'Enter a zip code in the format XXXXX.']
+ error_format = ['Enter a zip code in the format XXXXX.']
valid = {
'75001': '75001',
'93200': '93200',
@@ -19,7 +21,7 @@ class FRLocalFlavorTests(SimpleTestCase):
self.assertFieldOutput(FRZipCodeField, valid, invalid)
def test_FRPhoneNumberField(self):
- error_format = [u'Phone numbers must be in 0X XX XX XX XX format.']
+ error_format = ['Phone numbers must be in 0X XX XX XX XX format.']
valid = {
'01 55 44 58 64': '01 55 44 58 64',
'0155445864': '01 55 44 58 64',
@@ -35,7 +37,7 @@ class FRLocalFlavorTests(SimpleTestCase):
def test_FRDepartmentSelect(self):
f = FRDepartmentSelect()
- out = u'''<select name="dep">
+ out = '''<select name="dep">
<option value="01">01 - Ain</option>
<option value="02">02 - Aisne</option>
<option value="03">03 - Allier</option>
diff --git a/tests/regressiontests/localflavor/gb/tests.py b/tests/regressiontests/localflavor/gb/tests.py
index b32162d365..5a267105d5 100644
--- a/tests/regressiontests/localflavor/gb/tests.py
+++ b/tests/regressiontests/localflavor/gb/tests.py
@@ -1,3 +1,5 @@
+from __future__ import unicode_literals
+
from django.contrib.localflavor.gb.forms import GBPostcodeField
from django.test import SimpleTestCase
@@ -5,7 +7,7 @@ from django.test import SimpleTestCase
class GBLocalFlavorTests(SimpleTestCase):
def test_GBPostcodeField(self):
- error_invalid = [u'Enter a valid postcode.']
+ error_invalid = ['Enter a valid postcode.']
valid = {
'BT32 4PX': 'BT32 4PX',
'GIR 0AA': 'GIR 0AA',
@@ -24,7 +26,7 @@ class GBLocalFlavorTests(SimpleTestCase):
self.assertFieldOutput(GBPostcodeField, valid, invalid)
valid = {}
invalid = {
- '1NV 4L1D': [u'Enter a bloody postcode!'],
+ '1NV 4L1D': ['Enter a bloody postcode!'],
}
kwargs = {'error_messages': {'invalid': 'Enter a bloody postcode!'}}
self.assertFieldOutput(GBPostcodeField, valid, invalid, field_kwargs=kwargs)
diff --git a/tests/regressiontests/localflavor/generic/tests.py b/tests/regressiontests/localflavor/generic/tests.py
index 12462a0ef2..4db26838fa 100644
--- a/tests/regressiontests/localflavor/generic/tests.py
+++ b/tests/regressiontests/localflavor/generic/tests.py
@@ -1,3 +1,5 @@
+from __future__ import unicode_literals
+
import datetime
from django.contrib.localflavor.generic.forms import DateField, DateTimeField
@@ -7,7 +9,7 @@ from django.test import SimpleTestCase
class GenericLocalFlavorTests(SimpleTestCase):
def test_GenericDateField(self):
- error_invalid = [u'Enter a valid date.']
+ error_invalid = ['Enter a valid date.']
valid = {
datetime.date(2006, 10, 25): datetime.date(2006, 10, 25),
datetime.datetime(2006, 10, 25, 14, 30): datetime.date(2006, 10, 25),
@@ -46,7 +48,7 @@ class GenericLocalFlavorTests(SimpleTestCase):
)
def test_GenericDateTimeField(self):
- error_invalid = [u'Enter a valid date/time.']
+ error_invalid = ['Enter a valid date/time.']
valid = {
datetime.date(2006, 10, 25): datetime.datetime(2006, 10, 25, 0, 0),
datetime.datetime(2006, 10, 25, 14, 30): datetime.datetime(2006, 10, 25, 14, 30),
diff --git a/tests/regressiontests/localflavor/hr/tests.py b/tests/regressiontests/localflavor/hr/tests.py
index 7050d7c5c2..c1b097c03f 100644
--- a/tests/regressiontests/localflavor/hr/tests.py
+++ b/tests/regressiontests/localflavor/hr/tests.py
@@ -1,4 +1,6 @@
# -*- coding: utf-8 -*-
+from __future__ import unicode_literals
+
from django.contrib.localflavor.hr.forms import (HRCountySelect,
HRPhoneNumberPrefixSelect, HRLicensePlatePrefixSelect, HRPhoneNumberField,
HRLicensePlateField, HRPostalCodeField, HROIBField, HRJMBGField,
@@ -9,7 +11,7 @@ from django.test import SimpleTestCase
class HRLocalFlavorTests(SimpleTestCase):
def test_HRCountySelect(self):
f = HRCountySelect()
- out = u'''<select name="county">
+ out = '''<select name="county">
<option value="GZG" selected="selected">Grad Zagreb</option>
<option value="BBŽ">Bjelovarsko-bilogorska županija</option>
<option value="BPŽ">Brodsko-posavska županija</option>
@@ -36,7 +38,7 @@ class HRLocalFlavorTests(SimpleTestCase):
def test_HRPhoneNumberPrefixSelect(self):
f = HRPhoneNumberPrefixSelect()
- out = u'''<select name="phone">
+ out = '''<select name="phone">
<option value="1" selected="selected">01</option>
<option value="20">020</option>
<option value="21">021</option>
@@ -68,7 +70,7 @@ class HRLocalFlavorTests(SimpleTestCase):
def test_HRLicensePlatePrefixSelect(self):
f = HRLicensePlatePrefixSelect()
- out = u'''<select name="license">
+ out = '''<select name="license">
<option value="BJ" selected="selected">BJ</option>
<option value="BM">BM</option>
<option value="ČK">ČK</option>
@@ -107,9 +109,9 @@ class HRLocalFlavorTests(SimpleTestCase):
self.assertHTMLEqual(f.render('license', 'BJ'), out)
def test_HRPhoneNumberField(self):
- error_invalid = [u'Enter a valid phone number']
- error_area = [u'Enter a valid area or mobile network code']
- error_number = [u'The phone nubmer is too long']
+ error_invalid = ['Enter a valid phone number']
+ error_area = ['Enter a valid area or mobile network code']
+ error_number = ['The phone nubmer is too long']
valid = {
'+38511234567': '+38511234567',
'0038511234567': '+38511234567',
@@ -126,12 +128,12 @@ class HRLocalFlavorTests(SimpleTestCase):
self.assertFieldOutput(HRPhoneNumberField, valid, invalid)
def test_HRLicensePlateField(self):
- error_invalid = [u'Enter a valid vehicle license plate number']
- error_area = [u'Enter a valid location code']
- error_number = [u'Number part cannot be zero']
+ error_invalid = ['Enter a valid vehicle license plate number']
+ error_area = ['Enter a valid location code']
+ error_number = ['Number part cannot be zero']
valid = {
- 'ZG 1234-AA': u'ZG 1234-AA',
- 'ZG 123-A': u'ZG 123-A',
+ 'ZG 1234-AA': 'ZG 1234-AA',
+ 'ZG 123-A': 'ZG 123-A',
}
invalid = {
'PV12345': error_invalid,
@@ -141,7 +143,7 @@ class HRLocalFlavorTests(SimpleTestCase):
self.assertFieldOutput(HRLicensePlateField, valid, invalid)
def test_HRPostalCodeField(self):
- error_invalid = [u'Enter a valid 5 digit postal code']
+ error_invalid = ['Enter a valid 5 digit postal code']
valid = {
'10000': '10000',
'35410': '35410',
@@ -153,19 +155,19 @@ class HRLocalFlavorTests(SimpleTestCase):
self.assertFieldOutput(HRPostalCodeField, valid, invalid)
def test_HROIBField(self):
- error_invalid = [u'Enter a valid 11 digit OIB']
+ error_invalid = ['Enter a valid 11 digit OIB']
valid = {
'12345678901': '12345678901',
}
invalid = {
- '1234567890': [u'Ensure this value has at least 11 characters (it has 10).'] + error_invalid,
+ '1234567890': ['Ensure this value has at least 11 characters (it has 10).'] + error_invalid,
'ABCDEFGHIJK': error_invalid,
}
self.assertFieldOutput(HROIBField, valid, invalid)
def test_HRJMBGField(self):
- error_invalid = [u'Enter a valid 13 digit JMBG']
- error_date = [u'Error in date segment']
+ error_invalid = ['Enter a valid 13 digit JMBG']
+ error_date = ['Error in date segment']
valid = {
'1211984302155': '1211984302155',
'2701984307107': '2701984307107',
@@ -178,8 +180,8 @@ class HRLocalFlavorTests(SimpleTestCase):
self.assertFieldOutput(HRJMBGField, valid, invalid)
def test_HRJMBAGField(self):
- error_invalid = [u'Enter a valid 19 digit JMBAG starting with 601983']
- error_copy = [u'Card issue number cannot be zero']
+ error_invalid = ['Enter a valid 19 digit JMBAG starting with 601983']
+ error_copy = ['Card issue number cannot be zero']
valid = {
'601983 11 0130185856 4': '6019831101301858564',
}
diff --git a/tests/regressiontests/localflavor/id/tests.py b/tests/regressiontests/localflavor/id/tests.py
index 580083d3bf..dd712d02a3 100644
--- a/tests/regressiontests/localflavor/id/tests.py
+++ b/tests/regressiontests/localflavor/id/tests.py
@@ -1,3 +1,5 @@
+from __future__ import unicode_literals
+
import warnings
from django.contrib.localflavor.id.forms import (IDPhoneNumberField,
@@ -21,7 +23,7 @@ class IDLocalFlavorTests(SimpleTestCase):
def test_IDProvinceSelect(self):
f = IDProvinceSelect()
- out = u'''<select name="provinces">
+ out = '''<select name="provinces">
<option value="ACE">Aceh</option>
<option value="BLI">Bali</option>
<option value="BTN">Banten</option>
@@ -60,7 +62,7 @@ class IDLocalFlavorTests(SimpleTestCase):
def test_IDLicensePlatePrefixSelect(self):
f = IDLicensePlatePrefixSelect()
- out = u'''<select name="codes">
+ out = '''<select name="codes">
<option value="A">Banten</option>
<option value="AA">Magelang</option>
<option value="AB">Yogyakarta</option>
@@ -121,14 +123,14 @@ class IDLocalFlavorTests(SimpleTestCase):
self.assertHTMLEqual(f.render('codes', 'BE'), out)
def test_IDPhoneNumberField(self):
- error_invalid = [u'Enter a valid phone number']
+ error_invalid = ['Enter a valid phone number']
valid = {
- '0812-3456789': u'0812-3456789',
- '081234567890': u'081234567890',
- '021 345 6789': u'021 345 6789',
- '0213456789': u'0213456789',
- '+62-21-3456789': u'+62-21-3456789',
- '(021) 345 6789': u'(021) 345 6789',
+ '0812-3456789': '0812-3456789',
+ '081234567890': '081234567890',
+ '021 345 6789': '021 345 6789',
+ '0213456789': '0213456789',
+ '+62-21-3456789': '+62-21-3456789',
+ '(021) 345 6789': '(021) 345 6789',
}
invalid = {
'0123456789': error_invalid,
@@ -140,11 +142,11 @@ class IDLocalFlavorTests(SimpleTestCase):
self.assertFieldOutput(IDPhoneNumberField, valid, invalid)
def test_IDPostCodeField(self):
- error_invalid = [u'Enter a valid post code']
+ error_invalid = ['Enter a valid post code']
valid = {
- '12340': u'12340',
- '25412': u'25412',
- ' 12340 ': u'12340',
+ '12340': '12340',
+ '25412': '25412',
+ ' 12340 ': '12340',
}
invalid = {
'12 3 4 0': error_invalid,
@@ -156,11 +158,11 @@ class IDLocalFlavorTests(SimpleTestCase):
self.assertFieldOutput(IDPostCodeField, valid, invalid)
def test_IDNationalIdentityNumberField(self):
- error_invalid = [u'Enter a valid NIK/KTP number']
+ error_invalid = ['Enter a valid NIK/KTP number']
valid = {
- ' 12.3456.010178 3456 ': u'12.3456.010178.3456',
- '1234560101783456': u'12.3456.010178.3456',
- '12.3456.010101.3456': u'12.3456.010101.3456',
+ ' 12.3456.010178 3456 ': '12.3456.010178.3456',
+ '1234560101783456': '12.3456.010178.3456',
+ '12.3456.010101.3456': '12.3456.010101.3456',
}
invalid = {
'12.3456.310278.3456': error_invalid,
@@ -171,14 +173,14 @@ class IDLocalFlavorTests(SimpleTestCase):
self.assertFieldOutput(IDNationalIdentityNumberField, valid, invalid)
def test_IDLicensePlateField(self):
- error_invalid = [u'Enter a valid vehicle license plate number']
+ error_invalid = ['Enter a valid vehicle license plate number']
valid = {
- ' b 1234 ab ': u'B 1234 AB',
- 'B 1234 ABC': u'B 1234 ABC',
- 'A 12': u'A 12',
- 'DK 12345 12': u'DK 12345 12',
- 'RI 10': u'RI 10',
- 'CD 12 12': u'CD 12 12',
+ ' b 1234 ab ': 'B 1234 AB',
+ 'B 1234 ABC': 'B 1234 ABC',
+ 'A 12': 'A 12',
+ 'DK 12345 12': 'DK 12345 12',
+ 'RI 10': 'RI 10',
+ 'CD 12 12': 'CD 12 12',
}
invalid = {
'CD 10 12': error_invalid,
diff --git a/tests/regressiontests/localflavor/ie/tests.py b/tests/regressiontests/localflavor/ie/tests.py
index 712f492a65..717fa9d1c7 100644
--- a/tests/regressiontests/localflavor/ie/tests.py
+++ b/tests/regressiontests/localflavor/ie/tests.py
@@ -1,3 +1,5 @@
+from __future__ import unicode_literals
+
from django.contrib.localflavor.ie.forms import IECountySelect
from django.test import SimpleTestCase
@@ -6,7 +8,7 @@ from django.test import SimpleTestCase
class IELocalFlavorTests(SimpleTestCase):
def test_IECountySelect(self):
f = IECountySelect()
- out = u'''<select name="counties">
+ out = '''<select name="counties">
<option value="antrim">Antrim</option>
<option value="armagh">Armagh</option>
<option value="carlow">Carlow</option>
diff --git a/tests/regressiontests/localflavor/il/tests.py b/tests/regressiontests/localflavor/il/tests.py
index a3b91e850e..1b87cf2c19 100644
--- a/tests/regressiontests/localflavor/il/tests.py
+++ b/tests/regressiontests/localflavor/il/tests.py
@@ -1,3 +1,5 @@
+from __future__ import unicode_literals
+
from django.contrib.localflavor.il.forms import (ILPostalCodeField,
ILIDNumberField)
@@ -6,7 +8,7 @@ from django.test import SimpleTestCase
class ILLocalFlavorTests(SimpleTestCase):
def test_ILPostalCodeField(self):
- error_format = [u'Enter a postal code in the format XXXXX']
+ error_format = ['Enter a postal code in the format XXXXX']
valid = {
'69973': '69973',
'699 73': '69973',
@@ -21,7 +23,7 @@ class ILLocalFlavorTests(SimpleTestCase):
self.assertFieldOutput(ILPostalCodeField, valid, invalid)
def test_ILIDNumberField(self):
- error_invalid = [u'Enter a valid ID number.']
+ error_invalid = ['Enter a valid ID number.']
valid = {
'3933742-3': '39337423',
'39337423': '39337423',
diff --git a/tests/regressiontests/localflavor/in_/tests.py b/tests/regressiontests/localflavor/in_/tests.py
index d079aed1f5..57d50f0ebf 100644
--- a/tests/regressiontests/localflavor/in_/tests.py
+++ b/tests/regressiontests/localflavor/in_/tests.py
@@ -1,3 +1,5 @@
+from __future__ import unicode_literals
+
from django.contrib.localflavor.in_.forms import (INZipCodeField,
INStateField, INStateSelect, INPhoneNumberField)
@@ -7,7 +9,7 @@ from django.test import SimpleTestCase
class INLocalFlavorTests(SimpleTestCase):
def test_INPhoneNumberField(self):
- error_format = [u'Phone numbers must be in 02X-8X or 03X-7X or 04X-6X format.']
+ error_format = ['Phone numbers must be in 02X-8X or 03X-7X or 04X-6X format.']
valid = {
'0423-2443667': '0423-2443667',
'0423 2443667': '0423 2443667',
@@ -27,7 +29,7 @@ class INLocalFlavorTests(SimpleTestCase):
def test_INPStateSelect(self):
f = INStateSelect()
- out = u'''<select name="state">
+ out = '''<select name="state">
<option value="KA">Karnataka</option>
<option value="AP" selected="selected">Andhra Pradesh</option>
<option value="KL">Kerala</option>
@@ -67,7 +69,7 @@ class INLocalFlavorTests(SimpleTestCase):
self.assertHTMLEqual(f.render('state', 'AP'), out)
def test_INZipCodeField(self):
- error_format = [u'Enter a zip code in the format XXXXXX or XXX XXX.']
+ error_format = ['Enter a zip code in the format XXXXXX or XXX XXX.']
valid = {
'360311': '360311',
'360 311': '360311',
@@ -82,7 +84,7 @@ class INLocalFlavorTests(SimpleTestCase):
self.assertFieldOutput(INZipCodeField, valid, invalid)
def test_INStateField(self):
- error_format = [u'Enter an Indian state or territory.']
+ error_format = ['Enter an Indian state or territory.']
valid = {
'an': 'AN',
'AN': 'AN',
diff --git a/tests/regressiontests/localflavor/is_/tests.py b/tests/regressiontests/localflavor/is_/tests.py
index 835df6a8a7..3ed15e937b 100644
--- a/tests/regressiontests/localflavor/is_/tests.py
+++ b/tests/regressiontests/localflavor/is_/tests.py
@@ -1,3 +1,5 @@
+from __future__ import unicode_literals
+
from django.contrib.localflavor.is_.forms import (ISIdNumberField,
ISPhoneNumberField, ISPostalCodeSelect)
@@ -7,7 +9,7 @@ from django.test import SimpleTestCase
class ISLocalFlavorTests(SimpleTestCase):
def test_ISPostalCodeSelect(self):
f = ISPostalCodeSelect()
- out = u'''<select name="foo">
+ out = '''<select name="foo">
<option value="101">101 Reykjav\xedk</option>
<option value="103">103 Reykjav\xedk</option>
<option value="104">104 Reykjav\xedk</option>
@@ -159,10 +161,10 @@ class ISLocalFlavorTests(SimpleTestCase):
self.assertHTMLEqual(f.render('foo', 'bar'), out)
def test_ISIdNumberField(self):
- error_atleast = [u'Ensure this value has at least 10 characters (it has 9).']
- error_invalid = [u'Enter a valid Icelandic identification number. The format is XXXXXX-XXXX.']
- error_atmost = [u'Ensure this value has at most 11 characters (it has 12).']
- error_notvalid = [u'The Icelandic identification number is not valid.']
+ error_atleast = ['Ensure this value has at least 10 characters (it has 9).']
+ error_invalid = ['Enter a valid Icelandic identification number. The format is XXXXXX-XXXX.']
+ error_atmost = ['Ensure this value has at most 11 characters (it has 12).']
+ error_notvalid = ['The Icelandic identification number is not valid.']
valid = {
'2308803449': '230880-3449',
'230880-3449': '230880-3449',
@@ -179,9 +181,9 @@ class ISLocalFlavorTests(SimpleTestCase):
self.assertFieldOutput(ISIdNumberField, valid, invalid)
def test_ISPhoneNumberField(self):
- error_invalid = [u'Enter a valid value.']
- error_atleast = [u'Ensure this value has at least 7 characters (it has 6).']
- error_atmost = [u'Ensure this value has at most 8 characters (it has 9).']
+ error_invalid = ['Enter a valid value.']
+ error_atleast = ['Ensure this value has at least 7 characters (it has 6).']
+ error_atmost = ['Ensure this value has at most 8 characters (it has 9).']
valid = {
'1234567': '1234567',
'123 4567': '1234567',
diff --git a/tests/regressiontests/localflavor/it/tests.py b/tests/regressiontests/localflavor/it/tests.py
index b774141c2d..680444400f 100644
--- a/tests/regressiontests/localflavor/it/tests.py
+++ b/tests/regressiontests/localflavor/it/tests.py
@@ -1,3 +1,5 @@
+from __future__ import unicode_literals
+
from django.contrib.localflavor.it.forms import (ITZipCodeField, ITRegionSelect,
ITSocialSecurityNumberField, ITVatNumberField)
@@ -7,7 +9,7 @@ from django.test import SimpleTestCase
class ITLocalFlavorTests(SimpleTestCase):
def test_ITRegionSelect(self):
f = ITRegionSelect()
- out = u'''<select name="regions">
+ out = '''<select name="regions">
<option value="ABR">Abruzzo</option>
<option value="BAS">Basilicata</option>
<option value="CAL">Calabria</option>
@@ -32,7 +34,7 @@ class ITLocalFlavorTests(SimpleTestCase):
self.assertHTMLEqual(f.render('regions', 'PMN'), out)
def test_ITZipCodeField(self):
- error_invalid = [u'Enter a valid zip code.']
+ error_invalid = ['Enter a valid zip code.']
valid = {
'00100': '00100',
}
@@ -42,7 +44,7 @@ class ITLocalFlavorTests(SimpleTestCase):
self.assertFieldOutput(ITZipCodeField, valid, invalid)
def test_ITSocialSecurityNumberField(self):
- error_invalid = [u'Enter a valid Social Security number.']
+ error_invalid = ['Enter a valid Social Security number.']
valid = {
'LVSGDU99T71H501L': 'LVSGDU99T71H501L',
'LBRRME11A01L736W': 'LBRRME11A01L736W',
@@ -56,7 +58,7 @@ class ITLocalFlavorTests(SimpleTestCase):
self.assertFieldOutput(ITSocialSecurityNumberField, valid, invalid)
def test_ITVatNumberField(self):
- error_invalid = [u'Enter a valid VAT number.']
+ error_invalid = ['Enter a valid VAT number.']
valid = {
'07973780013': '07973780013',
'7973780013': '07973780013',
diff --git a/tests/regressiontests/localflavor/jp/tests.py b/tests/regressiontests/localflavor/jp/tests.py
index 7f0e8be184..d31c679bcb 100644
--- a/tests/regressiontests/localflavor/jp/tests.py
+++ b/tests/regressiontests/localflavor/jp/tests.py
@@ -1,3 +1,5 @@
+from __future__ import unicode_literals
+
from django.contrib.localflavor.jp.forms import (JPPostalCodeField,
JPPrefectureSelect)
@@ -7,7 +9,7 @@ from django.test import SimpleTestCase
class JPLocalFlavorTests(SimpleTestCase):
def test_JPPrefectureSelect(self):
f = JPPrefectureSelect()
- out = u'''<select name="prefecture">
+ out = '''<select name="prefecture">
<option value="hokkaido">Hokkaido</option>
<option value="aomori">Aomori</option>
<option value="iwate">Iwate</option>
@@ -59,7 +61,7 @@ class JPLocalFlavorTests(SimpleTestCase):
self.assertHTMLEqual(f.render('prefecture', 'kanagawa'), out)
def test_JPPostalCodeField(self):
- error_format = [u'Enter a postal code in the format XXXXXXX or XXX-XXXX.']
+ error_format = ['Enter a postal code in the format XXXXXXX or XXX-XXXX.']
valid = {
'251-0032': '2510032',
'2510032': '2510032',
diff --git a/tests/regressiontests/localflavor/kw/tests.py b/tests/regressiontests/localflavor/kw/tests.py
index c46241f4f4..0cf645b918 100644
--- a/tests/regressiontests/localflavor/kw/tests.py
+++ b/tests/regressiontests/localflavor/kw/tests.py
@@ -1,3 +1,5 @@
+from __future__ import unicode_literals
+
from django.contrib.localflavor.kw.forms import KWCivilIDNumberField
from django.test import SimpleTestCase
@@ -5,7 +7,7 @@ from django.test import SimpleTestCase
class KWLocalFlavorTests(SimpleTestCase):
def test_KWCivilIDNumberField(self):
- error_invalid = [u'Enter a valid Kuwaiti Civil ID number']
+ error_invalid = ['Enter a valid Kuwaiti Civil ID number']
valid = {
'282040701483': '282040701483',
}
diff --git a/tests/regressiontests/localflavor/mk/tests.py b/tests/regressiontests/localflavor/mk/tests.py
index 3a8add6e34..fdc9932f6a 100644
--- a/tests/regressiontests/localflavor/mk/tests.py
+++ b/tests/regressiontests/localflavor/mk/tests.py
@@ -1,4 +1,4 @@
-from __future__ import absolute_import
+from __future__ import absolute_import, unicode_literals
from django.contrib.localflavor.mk.forms import (
MKIdentityCardNumberField, MKMunicipalitySelect, UMCNField)
@@ -41,7 +41,7 @@ class MKLocalFlavorTests(SimpleTestCase):
})
self.assertFalse(form.is_valid())
self.assertEqual(
- form.errors['municipality_req'], [u'This field is required.'])
+ form.errors['municipality_req'], ['This field is required.'])
def test_umcn_invalid(self):
"""
@@ -56,7 +56,7 @@ class MKLocalFlavorTests(SimpleTestCase):
'id_number':'A1234567',
})
self.assertFalse(form.is_valid())
- self.assertEqual(form.errors['umcn'], [u'The UMCN is not valid.'])
+ self.assertEqual(form.errors['umcn'], ['The UMCN is not valid.'])
form = MKPersonForm({
'first_name':'Someone',
@@ -67,7 +67,7 @@ class MKLocalFlavorTests(SimpleTestCase):
'id_number':'A1234567',
})
self.assertEqual(form.errors['umcn'],
- [u'The first 7 digits of the UMCN must represent a valid past date.'])
+ ['The first 7 digits of the UMCN must represent a valid past date.'])
def test_idnumber_invalid(self):
"""
@@ -85,8 +85,8 @@ class MKLocalFlavorTests(SimpleTestCase):
})
self.assertFalse(form.is_valid())
self.assertEqual(form.errors['id_number'],
- [u'Identity card numbers must contain either 4 to 7 '
- 'digits or an uppercase letter and 7 digits.'])
+ ['Identity card numbers must contain either 4 to 7 '
+ 'digits or an uppercase letter and 7 digits.'])
def test_field_blank_option(self):
"""
@@ -183,7 +183,7 @@ class MKLocalFlavorTests(SimpleTestCase):
self.assertHTMLEqual(str(self.form['municipality']), municipality_select_html)
def test_MKIdentityCardNumberField(self):
- error_invalid = [u'Identity card numbers must contain either 4 to 7 '
+ error_invalid = ['Identity card numbers must contain either 4 to 7 '
'digits or an uppercase letter and 7 digits.']
valid = {
'L0018077':'L0018077',
@@ -198,7 +198,7 @@ class MKLocalFlavorTests(SimpleTestCase):
def test_MKMunicipalitySelect(self):
f = MKMunicipalitySelect()
- out=u'''<select name="municipality">
+ out='''<select name="municipality">
<option value="AD">Aerodrom</option>
<option value="AR">Ara\u010dinovo</option>
<option value="BR">Berovo</option>
@@ -287,10 +287,10 @@ class MKLocalFlavorTests(SimpleTestCase):
self.assertHTMLEqual(f.render('municipality', 'DL' ), out)
def test_UMCNField(self):
- error_invalid = [u'This field should contain exactly 13 digits.']
- error_checksum = [u'The UMCN is not valid.']
- error_date = [u'The first 7 digits of the UMCN '
- 'must represent a valid past date.']
+ error_invalid = ['This field should contain exactly 13 digits.']
+ error_checksum = ['The UMCN is not valid.']
+ error_date = ['The first 7 digits of the UMCN '
+ 'must represent a valid past date.']
valid = {
'2402983450006': '2402983450006',
'2803984430038': '2803984430038',
diff --git a/tests/regressiontests/localflavor/mx/tests.py b/tests/regressiontests/localflavor/mx/tests.py
index 1657596223..5eeceec276 100644
--- a/tests/regressiontests/localflavor/mx/tests.py
+++ b/tests/regressiontests/localflavor/mx/tests.py
@@ -1,5 +1,5 @@
# -*- coding: utf-8 -*-
-from __future__ import absolute_import
+from __future__ import absolute_import, unicode_literals
from django.contrib.localflavor.mx.forms import (MXZipCodeField, MXRFCField,
MXStateSelect, MXCURPField)
@@ -21,7 +21,7 @@ class MXLocalFlavorTests(SimpleTestCase):
def test_get_display_methods(self):
"""Test that the get_*_display() methods are added to the model instances."""
place = self.form.save()
- self.assertEqual(place.get_state_display(), u'Michoacán')
+ self.assertEqual(place.get_state_display(), 'Michoacán')
def test_errors(self):
"""Test that required MXFields throw appropriate errors."""
@@ -32,10 +32,10 @@ class MXLocalFlavorTests(SimpleTestCase):
'zip_code': 'xxx',
})
self.assertFalse(form.is_valid())
- self.assertEqual(form.errors['state'], [u'Select a valid choice. Invalid state is not one of the available choices.'])
- self.assertEqual(form.errors['rfc'], [u'Enter a valid RFC.'])
- self.assertEqual(form.errors['curp'], [u'Ensure this value has at least 18 characters (it has 12).', u'Enter a valid CURP.'])
- self.assertEqual(form.errors['zip_code'], [u'Enter a valid zip code in the format XXXXX.'])
+ self.assertEqual(form.errors['state'], ['Select a valid choice. Invalid state is not one of the available choices.'])
+ self.assertEqual(form.errors['rfc'], ['Enter a valid RFC.'])
+ self.assertEqual(form.errors['curp'], ['Ensure this value has at least 18 characters (it has 12).', 'Enter a valid CURP.'])
+ self.assertEqual(form.errors['zip_code'], ['Enter a valid zip code in the format XXXXX.'])
def test_field_blank_option(self):
"""Test that the empty option is there."""
@@ -79,7 +79,7 @@ class MXLocalFlavorTests(SimpleTestCase):
def test_MXStateSelect(self):
f = MXStateSelect()
- out = u'''<select name="state">
+ out = '''<select name="state">
<option value="AGU">Aguascalientes</option>
<option value="BCN">Baja California</option>
<option value="BCS">Baja California Sur</option>
@@ -116,12 +116,12 @@ class MXLocalFlavorTests(SimpleTestCase):
self.assertHTMLEqual(f.render('state', 'MIC'), out)
def test_MXZipCodeField(self):
- error_format = [u'Enter a valid zip code in the format XXXXX.']
+ error_format = ['Enter a valid zip code in the format XXXXX.']
valid = {
- '58120': u'58120',
- '58502': u'58502',
- '59310': u'59310',
- '99999': u'99999',
+ '58120': '58120',
+ '58502': '58502',
+ '59310': '59310',
+ '99999': '99999',
}
invalid = {
'17000': error_format,
@@ -132,16 +132,16 @@ class MXLocalFlavorTests(SimpleTestCase):
self.assertFieldOutput(MXZipCodeField, valid, invalid)
def test_MXRFCField(self):
- error_format = [u'Enter a valid RFC.']
- error_checksum = [u'Invalid checksum for RFC.']
+ error_format = ['Enter a valid RFC.']
+ error_checksum = ['Invalid checksum for RFC.']
valid = {
- 'MoFN641205eX5': u'MOFN641205EX5',
- 'ICa060120873': u'ICA060120873',
- 'eUcG751104rT0': u'EUCG751104RT0',
- 'GME08100195A': u'GME08100195A',
- 'AA&060524KX5': u'AA&060524KX5',
- 'CAÑ0708045P7': u'CAÑ0708045P7',
- 'aaa000101aa9': u'AAA000101AA9',
+ 'MoFN641205eX5': 'MOFN641205EX5',
+ 'ICa060120873': 'ICA060120873',
+ 'eUcG751104rT0': 'EUCG751104RT0',
+ 'GME08100195A': 'GME08100195A',
+ 'AA&060524KX5': 'AA&060524KX5',
+ 'CAÑ0708045P7': 'CAÑ0708045P7',
+ 'aaa000101aa9': 'AAA000101AA9',
}
invalid = {
'MED0000000XA': error_format,
@@ -166,19 +166,19 @@ class MXLocalFlavorTests(SimpleTestCase):
self.assertFieldOutput(MXRFCField, valid, invalid)
def test_MXCURPField(self):
- error_format = [u'Enter a valid CURP.']
- error_checksum = [u'Invalid checksum for CURP.']
+ error_format = ['Enter a valid CURP.']
+ error_checksum = ['Invalid checksum for CURP.']
valid = {
- 'AaMG890608HDFLJL00': u'AAMG890608HDFLJL00',
- 'BAAd890419HMNRRV07': u'BAAD890419HMNRRV07',
- 'VIAA900930MMNClL08': u'VIAA900930MMNCLL08',
- 'HEGR891009HMNRRD09': u'HEGR891009HMNRRD09',
- 'MARR890512HMNRMN09': u'MARR890512HMNRMN09',
- 'MESJ890928HMNZNS00': u'MESJ890928HMNZNS00',
- 'BAAA890317HDFRLL03': u'BAAA890317HDFRLL03',
- 'TOMA880125HMNRRNO2': u'TOMA880125HMNRRNO2',
- 'OOMG890727HMNRSR06': u'OOMG890727HMNRSR06',
- 'AAAA000101HDFCCC09': u'AAAA000101HDFCCC09',
+ 'AaMG890608HDFLJL00': 'AAMG890608HDFLJL00',
+ 'BAAd890419HMNRRV07': 'BAAD890419HMNRRV07',
+ 'VIAA900930MMNClL08': 'VIAA900930MMNCLL08',
+ 'HEGR891009HMNRRD09': 'HEGR891009HMNRRD09',
+ 'MARR890512HMNRMN09': 'MARR890512HMNRMN09',
+ 'MESJ890928HMNZNS00': 'MESJ890928HMNZNS00',
+ 'BAAA890317HDFRLL03': 'BAAA890317HDFRLL03',
+ 'TOMA880125HMNRRNO2': 'TOMA880125HMNRRNO2',
+ 'OOMG890727HMNRSR06': 'OOMG890727HMNRSR06',
+ 'AAAA000101HDFCCC09': 'AAAA000101HDFCCC09',
}
invalid = {
'AAAA000000HDFCCC09': error_format,
diff --git a/tests/regressiontests/localflavor/nl/tests.py b/tests/regressiontests/localflavor/nl/tests.py
index ebe4cc138f..ef8bd3cf35 100644
--- a/tests/regressiontests/localflavor/nl/tests.py
+++ b/tests/regressiontests/localflavor/nl/tests.py
@@ -1,3 +1,5 @@
+from __future__ import unicode_literals
+
from django.contrib.localflavor.nl.forms import (NLPhoneNumberField,
NLZipCodeField, NLSoFiNumberField, NLProvinceSelect)
@@ -7,7 +9,7 @@ from django.test import SimpleTestCase
class NLLocalFlavorTests(SimpleTestCase):
def test_NLProvinceSelect(self):
f = NLProvinceSelect()
- out = u'''<select name="provinces">
+ out = '''<select name="provinces">
<option value="DR">Drenthe</option>
<option value="FL">Flevoland</option>
<option value="FR">Friesland</option>
@@ -24,7 +26,7 @@ class NLLocalFlavorTests(SimpleTestCase):
self.assertHTMLEqual(f.render('provinces', 'OV'), out)
def test_NLPhoneNumberField(self):
- error_invalid = [u'Enter a valid phone number']
+ error_invalid = ['Enter a valid phone number']
valid = {
'012-3456789': '012-3456789',
'0123456789': '0123456789',
@@ -37,7 +39,7 @@ class NLLocalFlavorTests(SimpleTestCase):
self.assertFieldOutput(NLPhoneNumberField, valid, invalid)
def test_NLZipCodeField(self):
- error_invalid = [u'Enter a valid postal code']
+ error_invalid = ['Enter a valid postal code']
valid = {
'1234ab': '1234 AB',
'1234 ab': '1234 AB',
@@ -50,7 +52,7 @@ class NLLocalFlavorTests(SimpleTestCase):
self.assertFieldOutput(NLZipCodeField, valid, invalid)
def test_NLSoFiNumberField(self):
- error_invalid = [u'Enter a valid SoFi number']
+ error_invalid = ['Enter a valid SoFi number']
valid = {
'123456782': '123456782',
}
diff --git a/tests/regressiontests/localflavor/pl/tests.py b/tests/regressiontests/localflavor/pl/tests.py
index bc4d260abc..82c5d615c1 100644
--- a/tests/regressiontests/localflavor/pl/tests.py
+++ b/tests/regressiontests/localflavor/pl/tests.py
@@ -1,3 +1,5 @@
+from __future__ import unicode_literals
+
from django.contrib.localflavor.pl.forms import (PLProvinceSelect,
PLCountySelect, PLPostalCodeField, PLNIPField, PLPESELField, PLNationalIDCardNumberField, PLREGONField)
@@ -7,7 +9,7 @@ from django.test import SimpleTestCase
class PLLocalFlavorTests(SimpleTestCase):
def test_PLProvinceSelect(self):
f = PLProvinceSelect()
- out = u'''<select name="voivodeships">
+ out = '''<select name="voivodeships">
<option value="lower_silesia">Lower Silesia</option>
<option value="kuyavia-pomerania">Kuyavia-Pomerania</option>
<option value="lublin">Lublin</option>
@@ -29,7 +31,7 @@ class PLLocalFlavorTests(SimpleTestCase):
def test_PLCountrySelect(self):
f = PLCountySelect()
- out = u'''<select name="administrativeunit">
+ out = '''<select name="administrativeunit">
<option value="wroclaw">Wroc\u0142aw</option>
<option value="jeleniagora">Jelenia G\xf3ra</option>
<option value="legnica">Legnica</option>
@@ -410,7 +412,7 @@ class PLLocalFlavorTests(SimpleTestCase):
self.assertHTMLEqual(f.render('administrativeunit', 'katowice'), out)
def test_PLPostalCodeField(self):
- error_format = [u'Enter a postal code in the format XX-XXX.']
+ error_format = ['Enter a postal code in the format XX-XXX.']
valid = {
'41-403': '41-403',
}
@@ -420,8 +422,8 @@ class PLLocalFlavorTests(SimpleTestCase):
self.assertFieldOutput(PLPostalCodeField, valid, invalid)
def test_PLNIPField(self):
- error_format = [u'Enter a tax number field (NIP) in the format XXX-XXX-XX-XX, XXX-XX-XX-XXX or XXXXXXXXXX.']
- error_checksum = [u'Wrong checksum for the Tax Number (NIP).']
+ error_format = ['Enter a tax number field (NIP) in the format XXX-XXX-XX-XX, XXX-XX-XX-XXX or XXXXXXXXXX.']
+ error_checksum = ['Wrong checksum for the Tax Number (NIP).']
valid = {
'646-241-41-24': '6462414124',
'646-24-14-124': '6462414124',
@@ -429,14 +431,14 @@ class PLLocalFlavorTests(SimpleTestCase):
}
invalid = {
'43-343-234-323': error_format,
- '64-62-414-124': error_format,
+ '64-62-414-124': error_format,
'646-241-41-23': error_checksum,
}
self.assertFieldOutput(PLNIPField, valid, invalid)
def test_PLPESELField(self):
- error_checksum = [u'Wrong checksum for the National Identification Number.']
- error_format = [u'National Identification Number consists of 11 digits.']
+ error_checksum = ['Wrong checksum for the National Identification Number.']
+ error_format = ['National Identification Number consists of 11 digits.']
valid = {
'80071610614': '80071610614',
}
@@ -448,8 +450,8 @@ class PLLocalFlavorTests(SimpleTestCase):
self.assertFieldOutput(PLPESELField, valid, invalid)
def test_PLNationalIDCardNumberField(self):
- error_checksum = [u'Wrong checksum for the National ID Card Number.']
- error_format = [u'National ID Card Number consists of 3 letters and 6 digits.']
+ error_checksum = ['Wrong checksum for the National ID Card Number.']
+ error_format = ['National ID Card Number consists of 3 letters and 6 digits.']
valid = {
'ABC123458': 'ABC123458',
'abc123458': 'ABC123458',
@@ -463,8 +465,8 @@ class PLLocalFlavorTests(SimpleTestCase):
self.assertFieldOutput(PLNationalIDCardNumberField, valid, invalid)
def test_PLREGONField(self):
- error_checksum = [u'Wrong checksum for the National Business Register Number (REGON).']
- error_format = [u'National Business Register Number (REGON) consists of 9 or 14 digits.']
+ error_checksum = ['Wrong checksum for the National Business Register Number (REGON).']
+ error_format = ['National Business Register Number (REGON) consists of 9 or 14 digits.']
valid = {
'12345678512347': '12345678512347',
'590096454': '590096454',
diff --git a/tests/regressiontests/localflavor/pt/tests.py b/tests/regressiontests/localflavor/pt/tests.py
index 29aa1781eb..051e78084b 100644
--- a/tests/regressiontests/localflavor/pt/tests.py
+++ b/tests/regressiontests/localflavor/pt/tests.py
@@ -1,3 +1,5 @@
+from __future__ import unicode_literals
+
from django.contrib.localflavor.pt.forms import PTZipCodeField, PTPhoneNumberField
from django.test import SimpleTestCase
@@ -5,7 +7,7 @@ from django.test import SimpleTestCase
class PTLocalFlavorTests(SimpleTestCase):
def test_PTZipCodeField(self):
- error_format = [u'Enter a zip code in the format XXXX-XXX.']
+ error_format = ['Enter a zip code in the format XXXX-XXX.']
valid = {
'3030-034': '3030-034',
'1003456': '1003-456',
@@ -17,7 +19,7 @@ class PTLocalFlavorTests(SimpleTestCase):
self.assertFieldOutput(PTZipCodeField, valid, invalid)
def test_PTPhoneNumberField(self):
- error_format = [u'Phone numbers must have 9 digits, or start by + or 00.']
+ error_format = ['Phone numbers must have 9 digits, or start by + or 00.']
valid = {
'917845189': '917845189',
'91 784 5189': '917845189',
diff --git a/tests/regressiontests/localflavor/py/tests.py b/tests/regressiontests/localflavor/py/tests.py
index 772039d3ef..fb7836dc9a 100644
--- a/tests/regressiontests/localflavor/py/tests.py
+++ b/tests/regressiontests/localflavor/py/tests.py
@@ -1,3 +1,5 @@
+from __future__ import unicode_literals
+
from django.contrib.localflavor.py.forms import (PyDepartmentSelect,
PyNumberedDepartmentSelect)
@@ -6,7 +8,7 @@ from django.test import SimpleTestCase
class PYLocalFlavorTests(SimpleTestCase):
def test_PyDepartmentSelect(self):
py = PyDepartmentSelect()
- out = u'''<select name="department">
+ out = '''<select name="department">
<option value="AG">Alto Paraguay</option>
<option value="AA">Alto Paran\xe1</option>
<option value="AM">Amambay</option>
@@ -30,7 +32,7 @@ class PYLocalFlavorTests(SimpleTestCase):
def test_PyNumberedDepartmentSelect(self):
py = PyNumberedDepartmentSelect()
- out = u'''<select name="department">
+ out = '''<select name="department">
<option value="CN">I Concepci\xf3n</option>
<option value="SP">II San Pedro</option>
<option value="CR">III Cordillera</option>
diff --git a/tests/regressiontests/localflavor/ro/tests.py b/tests/regressiontests/localflavor/ro/tests.py
index 407e614b3e..2e63bdc619 100644
--- a/tests/regressiontests/localflavor/ro/tests.py
+++ b/tests/regressiontests/localflavor/ro/tests.py
@@ -1,4 +1,6 @@
# -*- coding: utf-8 -*-
+from __future__ import unicode_literals
+
from django.contrib.localflavor.ro.forms import (ROCIFField, ROCNPField,
ROCountyField, ROCountySelect, ROIBANField, ROPhoneNumberField,
ROPostalCodeField)
@@ -9,7 +11,7 @@ from django.test import SimpleTestCase
class ROLocalFlavorTests(SimpleTestCase):
def test_ROCountySelect(self):
f = ROCountySelect()
- out = u'''<select name="county">
+ out = '''<select name="county">
<option value="AB">Alba</option>
<option value="AR">Arad</option>
<option value="AG">Arge\u015f</option>
@@ -56,12 +58,12 @@ class ROLocalFlavorTests(SimpleTestCase):
self.assertHTMLEqual(f.render('county', 'CJ'), out)
def test_ROCIFField(self):
- error_invalid = [u'Enter a valid CIF.']
- error_atmost = [u'Ensure this value has at most 10 characters (it has 11).']
- error_atleast = [u'Ensure this value has at least 2 characters (it has 1).']
+ error_invalid = ['Enter a valid CIF.']
+ error_atmost = ['Ensure this value has at most 10 characters (it has 11).']
+ error_atleast = ['Ensure this value has at least 2 characters (it has 1).']
valid = {
- '21694681': u'21694681',
- 'RO21694681': u'21694681',
+ '21694681': '21694681',
+ 'RO21694681': '21694681',
}
invalid = {
'21694680': error_invalid,
@@ -71,9 +73,9 @@ class ROLocalFlavorTests(SimpleTestCase):
self.assertFieldOutput(ROCIFField, valid, invalid)
def test_ROCNPField(self):
- error_invalid = [u'Enter a valid CNP.']
- error_atleast = [u'Ensure this value has at least 13 characters (it has 10).']
- error_atmost = [u'Ensure this value has at most 13 characters (it has 14).']
+ error_invalid = ['Enter a valid CNP.']
+ error_atleast = ['Ensure this value has at least 13 characters (it has 10).']
+ error_atmost = ['Ensure this value has at most 13 characters (it has 14).']
valid = {
'1981211204489': '1981211204489',
}
@@ -87,12 +89,12 @@ class ROLocalFlavorTests(SimpleTestCase):
self.assertFieldOutput(ROCNPField, valid, invalid)
def test_ROCountyField(self):
- error_format = [u'Enter a Romanian county code or name.']
+ error_format = ['Enter a Romanian county code or name.']
valid = {
'CJ': 'CJ',
'cj': 'CJ',
- u'Argeş': 'AG',
- u'argeş': 'AG',
+ 'Argeş': 'AG',
+ 'argeş': 'AG',
}
invalid = {
'Arges': error_format,
@@ -100,8 +102,8 @@ class ROLocalFlavorTests(SimpleTestCase):
self.assertFieldOutput(ROCountyField, valid, invalid)
def test_ROIBANField(self):
- error_invalid = [u'Enter a valid IBAN in ROXX-XXXX-XXXX-XXXX-XXXX-XXXX format']
- error_atleast = [u'Ensure this value has at least 24 characters (it has 23).']
+ error_invalid = ['Enter a valid IBAN in ROXX-XXXX-XXXX-XXXX-XXXX-XXXX format']
+ error_atleast = ['Ensure this value has at least 24 characters (it has 23).']
valid = {
'RO56RZBR0000060003291177': 'RO56RZBR0000060003291177',
'RO56-RZBR-0000-0600-0329-1177': 'RO56RZBR0000060003291177',
@@ -114,9 +116,9 @@ class ROLocalFlavorTests(SimpleTestCase):
self.assertFieldOutput(ROIBANField, valid, invalid)
def test_ROPhoneNumberField(self):
- error_format = [u'Phone numbers must be in XXXX-XXXXXX format.']
- error_atleast = [u'Ensure this value has at least 10 characters (it has 9).']
- error_invalid = [u'Phone numbers must be in XXXX-XXXXXX format.']
+ error_format = ['Phone numbers must be in XXXX-XXXXXX format.']
+ error_atleast = ['Ensure this value has at least 10 characters (it has 9).']
+ error_invalid = ['Phone numbers must be in XXXX-XXXXXX format.']
valid = {
'0264485936': '0264485936',
'(0264)-485936': '0264485936',
@@ -128,9 +130,9 @@ class ROLocalFlavorTests(SimpleTestCase):
self.assertFieldOutput(ROPhoneNumberField, valid, invalid)
def test_ROPostalCodeField(self):
- error_atleast = [u'Ensure this value has at least 6 characters (it has 5).']
- error_atmost = [u'Ensure this value has at most 6 characters (it has 7).']
- error_invalid = [u'Enter a valid postal code in the format XXXXXX']
+ error_atleast = ['Ensure this value has at least 6 characters (it has 5).']
+ error_atmost = ['Ensure this value has at most 6 characters (it has 7).']
+ error_invalid = ['Enter a valid postal code in the format XXXXXX']
valid = {
'400473': '400473',
diff --git a/tests/regressiontests/localflavor/ru/tests.py b/tests/regressiontests/localflavor/ru/tests.py
index bb85fe8181..758c5ae7d8 100644
--- a/tests/regressiontests/localflavor/ru/tests.py
+++ b/tests/regressiontests/localflavor/ru/tests.py
@@ -1,3 +1,5 @@
+from __future__ import unicode_literals
+
from django.contrib.localflavor.ru.forms import *
from django.test import SimpleTestCase
@@ -6,7 +8,7 @@ from django.test import SimpleTestCase
class RULocalFlavorTests(SimpleTestCase):
def test_RUPassportNumberField(self):
- error = [u'Enter a passport number in the format XXXX XXXXXX.']
+ error = ['Enter a passport number in the format XXXX XXXXXX.']
valid = {
'1981 211204': '1981 211204',
'0305 967876': '0305 967876',
@@ -19,7 +21,7 @@ class RULocalFlavorTests(SimpleTestCase):
self.assertFieldOutput(RUPassportNumberField, valid, invalid)
def test_RUAlienPassportNumberField(self):
- error = [u'Enter a passport number in the format XX XXXXXXX.']
+ error = ['Enter a passport number in the format XX XXXXXXX.']
valid = {
'19 8111204': '19 8111204',
'03 0567876': '03 0567876',
@@ -32,7 +34,7 @@ class RULocalFlavorTests(SimpleTestCase):
self.assertFieldOutput(RUAlienPassportNumberField, valid, invalid)
def test_RUPostalCodeField(self):
- error = [u'Enter a postal code in the format XXXXXX.']
+ error = ['Enter a postal code in the format XXXXXX.']
valid = {
'987654': '987654',
'123456': '123456'
@@ -46,7 +48,7 @@ class RULocalFlavorTests(SimpleTestCase):
def test_RUCountySelect(self):
f = RUCountySelect()
- out = u'''<select name="county">
+ out = '''<select name="county">
<option value="Central Federal County">Central Federal County</option>
<option value="South Federal County">South Federal County</option>
<option value="North-West Federal County">North-West Federal County</option>
@@ -60,7 +62,7 @@ class RULocalFlavorTests(SimpleTestCase):
def test_RURegionSelect(self):
f = RURegionSelect()
- out = u'''<select name="region">
+ out = '''<select name="region">
<option value="77">Moskva</option>
<option value="78">Saint-Peterburg</option>
<option value="50">Moskovskaya oblast&#39;</option>
diff --git a/tests/regressiontests/localflavor/se/tests.py b/tests/regressiontests/localflavor/se/tests.py
index ead9053ea2..f61c61e9d4 100644
--- a/tests/regressiontests/localflavor/se/tests.py
+++ b/tests/regressiontests/localflavor/se/tests.py
@@ -1,4 +1,6 @@
# -*- coding: utf-8 -*-
+from __future__ import unicode_literals
+
from django.contrib.localflavor.se.forms import (SECountySelect,
SEOrganisationNumberField, SEPersonalIdentityNumberField,
SEPostalCodeField)
@@ -24,7 +26,7 @@ class SELocalFlavorTests(SimpleTestCase):
def test_SECountySelect(self):
f = SECountySelect()
- out = u'''<select name="swedish_county">
+ out = '''<select name="swedish_county">
<option value="AB">Stockholm</option>
<option value="AC">V\xe4sterbotten</option>
<option value="BD">Norrbotten</option>
@@ -50,7 +52,7 @@ class SELocalFlavorTests(SimpleTestCase):
self.assertHTMLEqual(f.render('swedish_county', 'E'), out)
def test_SEOrganizationNumberField(self):
- error_invalid = [u'Enter a valid Swedish organisation number.']
+ error_invalid = ['Enter a valid Swedish organisation number.']
valid = {
'870512-1989': '198705121989',
'19870512-1989': '198705121989',
@@ -95,8 +97,8 @@ class SELocalFlavorTests(SimpleTestCase):
self.assertFieldOutput(SEOrganisationNumberField, valid, invalid)
def test_SEPersonalIdentityNumberField(self):
- error_invalid = [u'Enter a valid Swedish personal identity number.']
- error_coord = [u'Co-ordination numbers are not allowed.']
+ error_invalid = ['Enter a valid Swedish personal identity number.']
+ error_coord = ['Co-ordination numbers are not allowed.']
valid = {
'870512-1989': '198705121989',
'870512-2128': '198705122128',
@@ -148,7 +150,7 @@ class SELocalFlavorTests(SimpleTestCase):
field_kwargs=kwargs)
def test_SEPostalCodeField(self):
- error_format = [u'Enter a Swedish postal code in the format XXXXX.']
+ error_format = ['Enter a Swedish postal code in the format XXXXX.']
valid = {
'589 37': '58937',
'58937': '58937',
diff --git a/tests/regressiontests/localflavor/si/tests.py b/tests/regressiontests/localflavor/si/tests.py
index 4e8fe25c47..123683bff4 100644
--- a/tests/regressiontests/localflavor/si/tests.py
+++ b/tests/regressiontests/localflavor/si/tests.py
@@ -1,4 +1,5 @@
# -*- coding: utf-8 -*-
+from __future__ import unicode_literals
from datetime import date
@@ -9,7 +10,7 @@ from django.test import SimpleTestCase
class SILocalFlavorTests(SimpleTestCase):
def test_SITaxNumberField(self):
- error_invalid = [u'Enter a valid tax number in form SIXXXXXXXX']
+ error_invalid = ['Enter a valid tax number in form SIXXXXXXXX']
valid = {
'15012557': '15012557',
'SI15012557': '15012557',
@@ -26,9 +27,9 @@ class SILocalFlavorTests(SimpleTestCase):
self.assertFieldOutput(SITaxNumberField, valid, invalid)
def test_SIEMSOField(self):
- error_invalid = [u'This field should contain exactly 13 digits.']
- error_invalid_date = [u'The first 7 digits of the EMSO must represent a valid past date.']
- error_invalid_chksum = [u'The EMSO is not valid.']
+ error_invalid = ['This field should contain exactly 13 digits.']
+ error_invalid_date = ['The first 7 digits of the EMSO must represent a valid past date.']
+ error_invalid_chksum = ['The EMSO is not valid.']
valid = {
'0205951500462': '0205951500462',
'2309002500068': '2309002500068',
@@ -58,7 +59,7 @@ class SILocalFlavorTests(SimpleTestCase):
self.assertEqual(f.info, info)
def test_SIPhoneNumberField(self):
- error_invalid = [u'Enter phone number in form +386XXXXXXXX or 0XXXXXXXX.']
+ error_invalid = ['Enter phone number in form +386XXXXXXXX or 0XXXXXXXX.']
valid = {
'+38640999999': '40999999',
'+3861999999': '1999999',
@@ -81,14 +82,14 @@ class SILocalFlavorTests(SimpleTestCase):
'1000': '1000'
}
invalid = {
- '1113': [u'Select a valid choice. 1113 is not one of the available choices.'],
- '111': [u'Select a valid choice. 111 is not one of the available choices.'],
+ '1113': ['Select a valid choice. 1113 is not one of the available choices.'],
+ '111': ['Select a valid choice. 111 is not one of the available choices.'],
}
self.assertFieldOutput(SIPostalCodeField, valid, invalid)
def test_SIPostalCodeSelect(self):
f = SIPostalCodeSelect()
- out = u'''<select name="Kranj">
+ out = '''<select name="Kranj">
<option value="8341">Adle\u0161i\u010di</option>
<option value="5270">Ajdov\u0161\u010dina</option>
<option value="6280">Ankaran - Ancarano</option>
diff --git a/tests/regressiontests/localflavor/sk/tests.py b/tests/regressiontests/localflavor/sk/tests.py
index 319fd827be..b51fee2681 100644
--- a/tests/regressiontests/localflavor/sk/tests.py
+++ b/tests/regressiontests/localflavor/sk/tests.py
@@ -1,3 +1,5 @@
+from __future__ import unicode_literals
+
from django.contrib.localflavor.sk.forms import (SKRegionSelect,
SKPostalCodeField, SKDistrictSelect)
@@ -7,7 +9,7 @@ from django.test import SimpleTestCase
class SKLocalFlavorTests(SimpleTestCase):
def test_SKRegionSelect(self):
f = SKRegionSelect()
- out = u'''<select name="regions">
+ out = '''<select name="regions">
<option value="BB">Banska Bystrica region</option>
<option value="BA">Bratislava region</option>
<option value="KE">Kosice region</option>
@@ -21,7 +23,7 @@ class SKLocalFlavorTests(SimpleTestCase):
def test_SKDistrictSelect(self):
f = SKDistrictSelect()
- out = u'''<select name="Districts">
+ out = '''<select name="Districts">
<option value="BB">Banska Bystrica</option>
<option value="BS">Banska Stiavnica</option>
<option value="BJ">Bardejov</option>
@@ -105,7 +107,7 @@ class SKLocalFlavorTests(SimpleTestCase):
self.assertHTMLEqual(f.render('Districts', 'RK'), out)
def test_SKPostalCodeField(self):
- error_format = [u'Enter a postal code in the format XXXXX or XXX XX.']
+ error_format = ['Enter a postal code in the format XXXXX or XXX XX.']
valid = {
'91909': '91909',
'917 01': '91701',
diff --git a/tests/regressiontests/localflavor/us/tests.py b/tests/regressiontests/localflavor/us/tests.py
index a7f84ac4ae..45967cb9dc 100644
--- a/tests/regressiontests/localflavor/us/tests.py
+++ b/tests/regressiontests/localflavor/us/tests.py
@@ -1,4 +1,4 @@
-from __future__ import absolute_import
+from __future__ import absolute_import, unicode_literals
from django.contrib.localflavor.us.forms import (USZipCodeField,
USPhoneNumberField, USStateField, USStateSelect,
@@ -23,7 +23,7 @@ class USLocalFlavorTests(SimpleTestCase):
"""Test that required USStateFields throw appropriate errors."""
form = USPlaceForm({'state':'GA', 'name':'Place in GA'})
self.assertFalse(form.is_valid())
- self.assertEqual(form.errors['state_req'], [u'This field is required.'])
+ self.assertEqual(form.errors['state_req'], ['This field is required.'])
def test_field_blank_option(self):
"""Test that the empty option is there."""
@@ -164,7 +164,7 @@ class USLocalFlavorTests(SimpleTestCase):
def test_USStateSelect(self):
f = USStateSelect()
- out = u'''<select name="state">
+ out = '''<select name="state">
<option value="AL">Alabama</option>
<option value="AK">Alaska</option>
<option value="AS">American Samoa</option>
@@ -228,7 +228,7 @@ class USLocalFlavorTests(SimpleTestCase):
self.assertHTMLEqual(f.render('state', 'IL'), out)
def test_USZipCodeField(self):
- error_format = [u'Enter a zip code in the format XXXXX or XXXXX-XXXX.']
+ error_format = ['Enter a zip code in the format XXXXX or XXXXX-XXXX.']
valid = {
'60606': '60606',
60606: '60606',
@@ -243,7 +243,7 @@ class USLocalFlavorTests(SimpleTestCase):
self.assertFieldOutput(USZipCodeField, valid, invalid)
def test_USPhoneNumberField(self):
- error_format = [u'Phone numbers must be in XXX-XXX-XXXX format.']
+ error_format = ['Phone numbers must be in XXX-XXX-XXXX format.']
valid = {
'312-555-1212': '312-555-1212',
'3125551212': '312-555-1212',
@@ -261,7 +261,7 @@ class USLocalFlavorTests(SimpleTestCase):
self.assertFieldOutput(USPhoneNumberField, valid, invalid)
def test_USStateField(self):
- error_invalid = [u'Enter a U.S. state or territory.']
+ error_invalid = ['Enter a U.S. state or territory.']
valid = {
'il': 'IL',
'IL': 'IL',
@@ -274,7 +274,7 @@ class USLocalFlavorTests(SimpleTestCase):
self.assertFieldOutput(USStateField, valid, invalid)
def test_USSocialSecurityNumberField(self):
- error_invalid = [u'Enter a valid U.S. Social Security number in XXX-XX-XXXX format.']
+ error_invalid = ['Enter a valid U.S. Social Security number in XXX-XX-XXXX format.']
valid = {
'987-65-4330': '987-65-4330',
diff --git a/tests/regressiontests/localflavor/uy/tests.py b/tests/regressiontests/localflavor/uy/tests.py
index eda0068d3e..5bbbbe4122 100644
--- a/tests/regressiontests/localflavor/uy/tests.py
+++ b/tests/regressiontests/localflavor/uy/tests.py
@@ -1,3 +1,5 @@
+from __future__ import unicode_literals
+
from django.contrib.localflavor.uy.forms import UYDepartamentSelect, UYCIField
from django.contrib.localflavor.uy.util import get_validation_digit
@@ -7,7 +9,7 @@ from django.test import SimpleTestCase
class UYLocalFlavorTests(SimpleTestCase):
def test_UYDepartmentSelect(self):
f = UYDepartamentSelect()
- out = u'''<select name="departamentos">
+ out = '''<select name="departamentos">
<option value="G">Artigas</option>
<option value="A">Canelones</option>
<option value="E">Cerro Largo</option>
@@ -31,8 +33,8 @@ class UYLocalFlavorTests(SimpleTestCase):
self.assertHTMLEqual(f.render('departamentos', 'S'), out)
def test_UYCIField(self):
- error_format = [u'Enter a valid CI number in X.XXX.XXX-X,XXXXXXX-X or XXXXXXXX format.']
- error_invalid = [u'Enter a valid CI number.']
+ error_format = ['Enter a valid CI number in X.XXX.XXX-X,XXXXXXX-X or XXXXXXXX format.']
+ error_invalid = ['Enter a valid CI number.']
valid = {
'4098053': '4098053',
'409805-3': '409805-3',
@@ -42,9 +44,9 @@ class UYLocalFlavorTests(SimpleTestCase):
'1.005.411-2': '1.005.411-2',
}
invalid = {
- 'foo': [u'Enter a valid CI number in X.XXX.XXX-X,XXXXXXX-X or XXXXXXXX format.'],
- '409805-2': [u'Enter a valid CI number.'],
- '1.005.411-5': [u'Enter a valid CI number.'],
+ 'foo': ['Enter a valid CI number in X.XXX.XXX-X,XXXXXXX-X or XXXXXXXX format.'],
+ '409805-2': ['Enter a valid CI number.'],
+ '1.005.411-5': ['Enter a valid CI number.'],
}
self.assertFieldOutput(UYCIField, valid, invalid)
self.assertEqual(get_validation_digit(409805), 3)
diff --git a/tests/regressiontests/localflavor/za/tests.py b/tests/regressiontests/localflavor/za/tests.py
index 948bd7f320..81e8d65eec 100644
--- a/tests/regressiontests/localflavor/za/tests.py
+++ b/tests/regressiontests/localflavor/za/tests.py
@@ -1,3 +1,5 @@
+from __future__ import unicode_literals
+
from django.contrib.localflavor.za.forms import ZAIDField, ZAPostCodeField
from django.test import SimpleTestCase
@@ -5,7 +7,7 @@ from django.test import SimpleTestCase
class ZALocalFlavorTests(SimpleTestCase):
def test_ZAIDField(self):
- error_invalid = [u'Enter a valid South African ID number']
+ error_invalid = ['Enter a valid South African ID number']
valid = {
'0002290001003': '0002290001003',
'000229 0001 003': '0002290001003',
@@ -18,7 +20,7 @@ class ZALocalFlavorTests(SimpleTestCase):
self.assertFieldOutput(ZAIDField, valid, invalid)
def test_ZAPostCodeField(self):
- error_invalid = [u'Enter a valid South African postal code']
+ error_invalid = ['Enter a valid South African postal code']
valid = {
'0000': '0000',
}
diff --git a/tests/regressiontests/logging_tests/tests.py b/tests/regressiontests/logging_tests/tests.py
index 887897a16f..4ae3c1b1a9 100644
--- a/tests/regressiontests/logging_tests/tests.py
+++ b/tests/regressiontests/logging_tests/tests.py
@@ -1,3 +1,5 @@
+from __future__ import unicode_literals
+
import copy
import warnings
@@ -215,8 +217,8 @@ class AdminEmailHandlerTest(TestCase):
AdminErrorHandler to fail.
Refs #17281.
"""
- message = u'Message \r\n with newlines'
- expected_subject = u'ERROR: Message \\r\\n with newlines'
+ message = 'Message \r\n with newlines'
+ expected_subject = 'ERROR: Message \\r\\n with newlines'
self.assertEqual(len(mail.outbox), 0)
diff --git a/tests/regressiontests/m2m_through_regress/models.py b/tests/regressiontests/m2m_through_regress/models.py
index ff71348931..1db3de1a4c 100644
--- a/tests/regressiontests/m2m_through_regress/models.py
+++ b/tests/regressiontests/m2m_through_regress/models.py
@@ -1,3 +1,5 @@
+from __future__ import unicode_literals
+
from django.contrib.auth.models import User
from django.db import models
@@ -71,4 +73,4 @@ class CarDriver(models.Model):
driver = models.ForeignKey('Driver', to_field='name')
def __unicode__(self, ):
- return u"pk=%s car=%s driver=%s" % (str(self.pk), self.car, self.driver)
+ return "pk=%s car=%s driver=%s" % (str(self.pk), self.car, self.driver)
diff --git a/tests/regressiontests/mail/tests.py b/tests/regressiontests/mail/tests.py
index 85e73c197f..cdd6dd1b9e 100644
--- a/tests/regressiontests/mail/tests.py
+++ b/tests/regressiontests/mail/tests.py
@@ -1,4 +1,6 @@
# coding: utf-8
+from __future__ import unicode_literals
+
import asyncore
import email
import os
@@ -137,7 +139,7 @@ class MailTests(TestCase):
self.assertEqual(email.message()['To'], '=?utf-8?q?S=C3=BCrname=2C_Firstname?= <to@example.com>, other@example.com')
def test_unicode_headers(self):
- email = EmailMessage(u"Gżegżółka", "Content", "from@example.com", ["to@example.com"],
+ email = EmailMessage("Gżegżółka", "Content", "from@example.com", ["to@example.com"],
headers={"Sender": '"Firstname Sürname" <sender@example.com>',
"Comments": 'My Sürname is non-ASCII'})
message = email.message()
@@ -158,7 +160,7 @@ class MailTests(TestCase):
msg.attach_alternative(html_content, "text/html")
msg.encoding = 'iso-8859-1'
self.assertEqual(msg.message()['To'], '=?iso-8859-1?q?S=FCrname=2C_Firstname?= <to@example.com>')
- self.assertEqual(msg.message()['Subject'].encode(), u'=?iso-8859-1?q?Message_from_Firstname_S=FCrname?=')
+ self.assertEqual(msg.message()['Subject'].encode(), '=?iso-8859-1?q?Message_from_Firstname_S=FCrname?=')
def test_encoding(self):
"""
@@ -205,11 +207,11 @@ class MailTests(TestCase):
content = 'This is the message.'
msg = EmailMessage(subject, content, from_email, [to], headers=headers)
# Unicode in file name
- msg.attach(u"une pièce jointe.pdf", b"%PDF-1.4.%...", mimetype="application/pdf")
+ msg.attach("une pièce jointe.pdf", b"%PDF-1.4.%...", mimetype="application/pdf")
msg_str = msg.message().as_string()
message = email.message_from_string(msg_str)
payload = message.get_payload()
- self.assertEqual(payload[1].get_filename(), u'une pièce jointe.pdf')
+ self.assertEqual(payload[1].get_filename(), 'une pièce jointe.pdf')
def test_dummy_backend(self):
"""
@@ -310,7 +312,7 @@ class MailTests(TestCase):
self.assertFalse(b'Content-Transfer-Encoding: quoted-printable' in s)
self.assertTrue(b'Content-Transfer-Encoding: 8bit' in s)
- msg = EmailMessage('Subject', u'Body with non latin characters: А Б В Г Д Е Ж Ѕ З И І К Л М Н О П.', 'bounce@example.com', ['to@example.com'], headers={'From': 'from@example.com'})
+ msg = EmailMessage('Subject', 'Body with non latin characters: А Б В Г Д Е Ж Ѕ З И І К Л М Н О П.', 'bounce@example.com', ['to@example.com'], headers={'From': 'from@example.com'})
s = msg.message().as_string()
self.assertFalse(b'Content-Transfer-Encoding: quoted-printable' in s)
self.assertTrue(b'Content-Transfer-Encoding: 8bit' in s)
@@ -444,7 +446,7 @@ class BaseEmailBackendTests(object):
"""
Regression test for #14301
"""
- self.assertTrue(send_mail('Subject', 'Content', 'from@öäü.com', [u'to@öäü.com']))
+ self.assertTrue(send_mail('Subject', 'Content', 'from@öäü.com', ['to@öäü.com']))
message = self.get_the_message()
self.assertEqual(message.get('subject'), 'Subject')
self.assertEqual(message.get('from'), 'from@xn--4ca9at.com')
@@ -452,7 +454,7 @@ class BaseEmailBackendTests(object):
self.flush_mailbox()
m = EmailMessage('Subject', 'Content', 'from@öäü.com',
- [u'to@öäü.com'], cc=[u'cc@öäü.com'])
+ ['to@öäü.com'], cc=['cc@öäü.com'])
m.send()
message = self.get_the_message()
self.assertEqual(message.get('subject'), 'Subject')
diff --git a/tests/regressiontests/many_to_one_regress/models.py b/tests/regressiontests/many_to_one_regress/models.py
index 53348a753d..1e59c4c8c8 100644
--- a/tests/regressiontests/many_to_one_regress/models.py
+++ b/tests/regressiontests/many_to_one_regress/models.py
@@ -1,6 +1,7 @@
"""
Regression tests for a few ForeignKey bugs.
"""
+from __future__ import unicode_literals
from django.db import models
@@ -43,4 +44,4 @@ class Relation(models.Model):
right = models.ForeignKey(Record, related_name='right_set')
def __unicode__(self):
- return u"%s - %s" % (self.left.category.name, self.right.category.name)
+ return "%s - %s" % (self.left.category.name, self.right.category.name)
diff --git a/tests/regressiontests/model_fields/tests.py b/tests/regressiontests/model_fields/tests.py
index 9c0f888a99..5d3d42ef2a 100644
--- a/tests/regressiontests/model_fields/tests.py
+++ b/tests/regressiontests/model_fields/tests.py
@@ -1,4 +1,4 @@
-from __future__ import absolute_import
+from __future__ import absolute_import, unicode_literals
import datetime
from decimal import Decimal
@@ -78,8 +78,8 @@ class DecimalFieldTests(test.TestCase):
def test_format(self):
f = models.DecimalField(max_digits=5, decimal_places=1)
- self.assertEqual(f._format(f.to_python(2)), u'2.0')
- self.assertEqual(f._format(f.to_python('2.6')), u'2.6')
+ self.assertEqual(f._format(f.to_python(2)), '2.0')
+ self.assertEqual(f._format(f.to_python('2.6')), '2.6')
self.assertEqual(f._format(None), None)
def test_get_db_prep_lookup(self):
@@ -92,7 +92,7 @@ class DecimalFieldTests(test.TestCase):
We should be able to filter decimal fields using strings (#8023)
"""
Foo.objects.create(id=1, a='abc', d=Decimal("12.34"))
- self.assertEqual(list(Foo.objects.filter(d=u'1.23')), [])
+ self.assertEqual(list(Foo.objects.filter(d='1.23')), [])
def test_save_without_float_conversion(self):
"""
@@ -168,7 +168,7 @@ class BooleanFieldTests(unittest.TestCase):
Test that BooleanField with choices and defaults doesn't generate a
formfield with the blank option (#9640, #10549).
"""
- choices = [(1, u'Si'), (2, 'No')]
+ choices = [(1, 'Si'), (2, 'No')]
f = models.BooleanField(choices=choices, default=1, null=True)
self.assertEqual(f.formfield().choices, [('', '---------')] + choices)
diff --git a/tests/regressiontests/model_forms_regress/models.py b/tests/regressiontests/model_forms_regress/models.py
index d070a9be75..9259e260f0 100644
--- a/tests/regressiontests/model_forms_regress/models.py
+++ b/tests/regressiontests/model_forms_regress/models.py
@@ -1,3 +1,5 @@
+from __future__ import unicode_literals
+
import os
from django.core.exceptions import ValidationError
@@ -13,7 +15,7 @@ class Triple(models.Model):
right = models.IntegerField()
class Meta:
- unique_together = (('left', 'middle'), (u'middle', u'right'))
+ unique_together = (('left', 'middle'), ('middle', 'right'))
class FilePathModel(models.Model):
path = models.FilePathField(path=os.path.dirname(__file__), match=".*\.py$", blank=True)
diff --git a/tests/regressiontests/model_forms_regress/tests.py b/tests/regressiontests/model_forms_regress/tests.py
index d33f52af9a..a0f9bba170 100644
--- a/tests/regressiontests/model_forms_regress/tests.py
+++ b/tests/regressiontests/model_forms_regress/tests.py
@@ -1,4 +1,4 @@
-from __future__ import absolute_import
+from __future__ import absolute_import, unicode_literals
from datetime import date
@@ -134,7 +134,7 @@ class ManyToManyCallableInitialTests(TestCase):
# Create a ModelForm, instantiate it, and check that the output is as expected
ModelForm = modelform_factory(Article, formfield_callback=formfield_for_dbfield)
form = ModelForm()
- self.assertHTMLEqual(form.as_ul(), u"""<li><label for="id_headline">Headline:</label> <input id="id_headline" type="text" name="headline" maxlength="100" /></li>
+ self.assertHTMLEqual(form.as_ul(), """<li><label for="id_headline">Headline:</label> <input id="id_headline" type="text" name="headline" maxlength="100" /></li>
<li><label for="id_publications">Publications:</label> <select multiple="multiple" name="publications" id="id_publications">
<option value="%d" selected="selected">First Book</option>
<option value="%d" selected="selected">Second Book</option>
@@ -194,7 +194,7 @@ class OneToOneFieldTests(TestCase):
publication = Publication.objects.create(title="Pravda",
date_published=date(1991, 8, 22))
author = Author.objects.create(publication=publication, full_name='John Doe')
- form = AuthorForm({'publication':u'', 'full_name':'John Doe'}, instance=author)
+ form = AuthorForm({'publication':'', 'full_name':'John Doe'}, instance=author)
self.assertTrue(form.is_valid())
self.assertEqual(form.cleaned_data['publication'], None)
author = form.save()
@@ -212,7 +212,7 @@ class OneToOneFieldTests(TestCase):
publication = Publication.objects.create(title="Pravda",
date_published=date(1991, 8, 22))
author = Author1.objects.create(publication=publication, full_name='John Doe')
- form = AuthorForm({'publication':u'', 'full_name':'John Doe'}, instance=author)
+ form = AuthorForm({'publication':'', 'full_name':'John Doe'}, instance=author)
self.assertTrue(not form.is_valid())
@@ -419,7 +419,7 @@ class FileFieldTests(unittest.TestCase):
data={'myfile-clear': 'true'})
self.assertTrue(not form.is_valid())
self.assertEqual(form.errors['myfile'],
- [u'Please either submit a file or check the clear checkbox, not both.'])
+ ['Please either submit a file or check the clear checkbox, not both.'])
rendered = unicode(form)
self.assertTrue('something.txt' in rendered)
self.assertTrue('myfile-clear' in rendered)
@@ -435,8 +435,8 @@ class EditionForm(forms.ModelForm):
class UniqueErrorsTests(TestCase):
def setUp(self):
- self.author1 = Person.objects.create(name=u'Author #1')
- self.author2 = Person.objects.create(name=u'Author #2')
+ self.author1 = Person.objects.create(name='Author #1')
+ self.author2 = Person.objects.create(name='Author #2')
self.pub1 = Publication.objects.create(title='Pub #1', date_published=date(2000, 10, 31))
self.pub2 = Publication.objects.create(title='Pub #2', date_published=date(2004, 1, 5))
form = EditionForm(data={'author': self.author1.pk, 'publication': self.pub1.pk, 'edition': 1, 'isbn': '9783161484100'})
@@ -444,13 +444,13 @@ class UniqueErrorsTests(TestCase):
def test_unique_error_message(self):
form = EditionForm(data={'author': self.author1.pk, 'publication': self.pub2.pk, 'edition': 1, 'isbn': '9783161484100'})
- self.assertEqual(form.errors, {'isbn': [u'Edition with this Isbn already exists.']})
+ self.assertEqual(form.errors, {'isbn': ['Edition with this Isbn already exists.']})
def test_unique_together_error_message(self):
form = EditionForm(data={'author': self.author1.pk, 'publication': self.pub1.pk, 'edition': 2, 'isbn': '9783161489999'})
- self.assertEqual(form.errors, {'__all__': [u'Edition with this Author and Publication already exists.']})
+ self.assertEqual(form.errors, {'__all__': ['Edition with this Author and Publication already exists.']})
form = EditionForm(data={'author': self.author2.pk, 'publication': self.pub1.pk, 'edition': 1, 'isbn': '9783161487777'})
- self.assertEqual(form.errors, {'__all__': [u'Edition with this Publication and Edition already exists.']})
+ self.assertEqual(form.errors, {'__all__': ['Edition with this Publication and Edition already exists.']})
class EmptyFieldsTestCase(TestCase):
diff --git a/tests/regressiontests/model_formsets_regress/tests.py b/tests/regressiontests/model_formsets_regress/tests.py
index f1e935e2ea..68ebe48bde 100644
--- a/tests/regressiontests/model_formsets_regress/tests.py
+++ b/tests/regressiontests/model_formsets_regress/tests.py
@@ -1,4 +1,4 @@
-from __future__ import absolute_import
+from __future__ import absolute_import, unicode_literals
from django import forms
from django.forms.formsets import BaseFormSet, DELETION_FIELD_NAME
@@ -22,13 +22,13 @@ class InlineFormsetTests(TestCase):
# Now create a new User and UserSite instance
data = {
- 'serial': u'1',
- 'username': u'apollo13',
- 'usersite_set-TOTAL_FORMS': u'1',
- 'usersite_set-INITIAL_FORMS': u'0',
- 'usersite_set-MAX_NUM_FORMS': u'0',
- 'usersite_set-0-data': u'10',
- 'usersite_set-0-user': u'apollo13'
+ 'serial': '1',
+ 'username': 'apollo13',
+ 'usersite_set-TOTAL_FORMS': '1',
+ 'usersite_set-INITIAL_FORMS': '0',
+ 'usersite_set-MAX_NUM_FORMS': '0',
+ 'usersite_set-0-data': '10',
+ 'usersite_set-0-user': 'apollo13'
}
user = User()
form = Form(data)
@@ -42,47 +42,47 @@ class InlineFormsetTests(TestCase):
form_set.save()
usersite = UserSite.objects.all().values()
self.assertEqual(usersite[0]['data'], 10)
- self.assertEqual(usersite[0]['user_id'], u'apollo13')
+ self.assertEqual(usersite[0]['user_id'], 'apollo13')
else:
self.fail('Errors found on formset:%s' % form_set.errors)
# Now update the UserSite instance
data = {
- 'usersite_set-TOTAL_FORMS': u'1',
- 'usersite_set-INITIAL_FORMS': u'1',
- 'usersite_set-MAX_NUM_FORMS': u'0',
+ 'usersite_set-TOTAL_FORMS': '1',
+ 'usersite_set-INITIAL_FORMS': '1',
+ 'usersite_set-MAX_NUM_FORMS': '0',
'usersite_set-0-id': unicode(usersite[0]['id']),
- 'usersite_set-0-data': u'11',
- 'usersite_set-0-user': u'apollo13'
+ 'usersite_set-0-data': '11',
+ 'usersite_set-0-user': 'apollo13'
}
form_set = FormSet(data, instance=user)
if form_set.is_valid():
form_set.save()
usersite = UserSite.objects.all().values()
self.assertEqual(usersite[0]['data'], 11)
- self.assertEqual(usersite[0]['user_id'], u'apollo13')
+ self.assertEqual(usersite[0]['user_id'], 'apollo13')
else:
self.fail('Errors found on formset:%s' % form_set.errors)
# Now add a new UserSite instance
data = {
- 'usersite_set-TOTAL_FORMS': u'2',
- 'usersite_set-INITIAL_FORMS': u'1',
- 'usersite_set-MAX_NUM_FORMS': u'0',
+ 'usersite_set-TOTAL_FORMS': '2',
+ 'usersite_set-INITIAL_FORMS': '1',
+ 'usersite_set-MAX_NUM_FORMS': '0',
'usersite_set-0-id': unicode(usersite[0]['id']),
- 'usersite_set-0-data': u'11',
- 'usersite_set-0-user': u'apollo13',
- 'usersite_set-1-data': u'42',
- 'usersite_set-1-user': u'apollo13'
+ 'usersite_set-0-data': '11',
+ 'usersite_set-0-user': 'apollo13',
+ 'usersite_set-1-data': '42',
+ 'usersite_set-1-user': 'apollo13'
}
form_set = FormSet(data, instance=user)
if form_set.is_valid():
form_set.save()
usersite = UserSite.objects.all().values().order_by('data')
self.assertEqual(usersite[0]['data'], 11)
- self.assertEqual(usersite[0]['user_id'], u'apollo13')
+ self.assertEqual(usersite[0]['user_id'], 'apollo13')
self.assertEqual(usersite[1]['data'], 42)
- self.assertEqual(usersite[1]['user_id'], u'apollo13')
+ self.assertEqual(usersite[1]['user_id'], 'apollo13')
else:
self.fail('Errors found on formset:%s' % form_set.errors)
@@ -98,11 +98,11 @@ class InlineFormsetTests(TestCase):
# Now create a new Restaurant and Manager instance
data = {
- 'name': u"Guido's House of Pasta",
- 'manager_set-TOTAL_FORMS': u'1',
- 'manager_set-INITIAL_FORMS': u'0',
- 'manager_set-MAX_NUM_FORMS': u'0',
- 'manager_set-0-name': u'Guido Van Rossum'
+ 'name': "Guido's House of Pasta",
+ 'manager_set-TOTAL_FORMS': '1',
+ 'manager_set-INITIAL_FORMS': '0',
+ 'manager_set-MAX_NUM_FORMS': '0',
+ 'manager_set-0-name': 'Guido Van Rossum'
}
restaurant = User()
form = Form(data)
@@ -121,11 +121,11 @@ class InlineFormsetTests(TestCase):
# Now update the Manager instance
data = {
- 'manager_set-TOTAL_FORMS': u'1',
- 'manager_set-INITIAL_FORMS': u'1',
- 'manager_set-MAX_NUM_FORMS': u'0',
+ 'manager_set-TOTAL_FORMS': '1',
+ 'manager_set-INITIAL_FORMS': '1',
+ 'manager_set-MAX_NUM_FORMS': '0',
'manager_set-0-id': unicode(manager[0]['id']),
- 'manager_set-0-name': u'Terry Gilliam'
+ 'manager_set-0-name': 'Terry Gilliam'
}
form_set = FormSet(data, instance=restaurant)
if form_set.is_valid():
@@ -137,12 +137,12 @@ class InlineFormsetTests(TestCase):
# Now add a new Manager instance
data = {
- 'manager_set-TOTAL_FORMS': u'2',
- 'manager_set-INITIAL_FORMS': u'1',
- 'manager_set-MAX_NUM_FORMS': u'0',
+ 'manager_set-TOTAL_FORMS': '2',
+ 'manager_set-INITIAL_FORMS': '1',
+ 'manager_set-MAX_NUM_FORMS': '0',
'manager_set-0-id': unicode(manager[0]['id']),
- 'manager_set-0-name': u'Terry Gilliam',
- 'manager_set-1-name': u'John Cleese'
+ 'manager_set-0-name': 'Terry Gilliam',
+ 'manager_set-1-name': 'John Cleese'
}
form_set = FormSet(data, instance=restaurant)
if form_set.is_valid():
@@ -185,12 +185,12 @@ class InlineFormsetTests(TestCase):
# Add a new host, modify previous host, and save-as-new
data = {
- 'host_set-TOTAL_FORMS': u'2',
- 'host_set-INITIAL_FORMS': u'1',
- 'host_set-MAX_NUM_FORMS': u'0',
+ 'host_set-TOTAL_FORMS': '2',
+ 'host_set-INITIAL_FORMS': '1',
+ 'host_set-MAX_NUM_FORMS': '0',
'host_set-0-id': unicode(host1.id),
- 'host_set-0-hostname': u'tranquility.hub.dal.net',
- 'host_set-1-hostname': u'matrix.de.eu.dal.net'
+ 'host_set-0-hostname': 'tranquility.hub.dal.net',
+ 'host_set-1-hostname': 'matrix.de.eu.dal.net'
}
# To save a formset as new, it needs a new hub instance
@@ -212,7 +212,7 @@ class InlineFormsetTests(TestCase):
formset = FormSet(instance=user, initial=[{'data': 41}, {'data': 42}])
self.assertEqual(formset.forms[0].initial['data'], 7)
self.assertEqual(formset.extra_forms[0].initial['data'], 41)
- self.assertTrue(u'value="42"' in formset.extra_forms[1].as_p())
+ self.assertTrue('value="42"' in formset.extra_forms[1].as_p())
class FormsetTests(TestCase):
@@ -222,15 +222,15 @@ class FormsetTests(TestCase):
'''
Formset = modelformset_factory(User)
data = {
- 'form-TOTAL_FORMS': u'2',
- 'form-INITIAL_FORMS': u'0',
- 'form-MAX_NUM_FORMS': u'0',
+ 'form-TOTAL_FORMS': '2',
+ 'form-INITIAL_FORMS': '0',
+ 'form-MAX_NUM_FORMS': '0',
'form-0-id': '',
- 'form-0-username': u'apollo13',
- 'form-0-serial': u'1',
+ 'form-0-username': 'apollo13',
+ 'form-0-serial': '1',
'form-1-id': '',
- 'form-1-username': u'apollo13',
- 'form-1-serial': u'2',
+ 'form-1-username': 'apollo13',
+ 'form-1-serial': '2',
}
formset = Formset(data)
# check if the returned error classes are correct
@@ -244,17 +244,17 @@ class FormsetTests(TestCase):
def test_initial_data(self):
User.objects.create(username="bibi", serial=1)
Formset = modelformset_factory(User, extra=2)
- formset = Formset(initial=[{'username': u'apollo11'}, {'username': u'apollo12'}])
+ formset = Formset(initial=[{'username': 'apollo11'}, {'username': 'apollo12'}])
self.assertEqual(formset.forms[0].initial['username'], "bibi")
self.assertEqual(formset.extra_forms[0].initial['username'], "apollo11")
- self.assertTrue(u'value="apollo12"' in formset.extra_forms[1].as_p())
+ self.assertTrue('value="apollo12"' in formset.extra_forms[1].as_p())
def test_extraneous_query_is_not_run(self):
Formset = modelformset_factory(Network)
- data = {u'test-TOTAL_FORMS': u'1',
- u'test-INITIAL_FORMS': u'0',
- u'test-MAX_NUM_FORMS': u'',
- u'test-0-name': u'Random Place', }
+ data = {'test-TOTAL_FORMS': '1',
+ 'test-INITIAL_FORMS': '0',
+ 'test-MAX_NUM_FORMS': '',
+ 'test-0-name': 'Random Place', }
with self.assertNumQueries(1):
formset = Formset(data, prefix="test")
formset.save()
diff --git a/tests/regressiontests/model_inheritance_regress/models.py b/tests/regressiontests/model_inheritance_regress/models.py
index 161569bcb3..5481298963 100644
--- a/tests/regressiontests/model_inheritance_regress/models.py
+++ b/tests/regressiontests/model_inheritance_regress/models.py
@@ -1,3 +1,5 @@
+from __future__ import unicode_literals
+
import datetime
from django.db import models
@@ -10,20 +12,20 @@ class Place(models.Model):
ordering = ('name',)
def __unicode__(self):
- return u"%s the place" % self.name
+ return "%s the place" % self.name
class Restaurant(Place):
serves_hot_dogs = models.BooleanField()
serves_pizza = models.BooleanField()
def __unicode__(self):
- return u"%s the restaurant" % self.name
+ return "%s the restaurant" % self.name
class ItalianRestaurant(Restaurant):
serves_gnocchi = models.BooleanField()
def __unicode__(self):
- return u"%s the italian restaurant" % self.name
+ return "%s the italian restaurant" % self.name
class ParkingLot(Place):
# An explicit link to the parent (we can control the attribute name).
@@ -31,7 +33,7 @@ class ParkingLot(Place):
capacity = models.IntegerField()
def __unicode__(self):
- return u"%s the parking lot" % self.name
+ return "%s the parking lot" % self.name
class ParkingLot2(Place):
# In lieu of any other connector, an existing OneToOneField will be
@@ -108,7 +110,7 @@ class AuditBase(models.Model):
class Meta:
abstract = True
- verbose_name_plural = u'Audits'
+ verbose_name_plural = 'Audits'
class CertificationAudit(AuditBase):
class Meta(AuditBase.Meta):
diff --git a/tests/regressiontests/model_inheritance_regress/tests.py b/tests/regressiontests/model_inheritance_regress/tests.py
index 3cb6f9d603..6855d70071 100644
--- a/tests/regressiontests/model_inheritance_regress/tests.py
+++ b/tests/regressiontests/model_inheritance_regress/tests.py
@@ -1,8 +1,7 @@
"""
Regression tests for Model inheritance behavior.
"""
-
-from __future__ import absolute_import
+from __future__ import absolute_import, unicode_literals
import datetime
from operator import attrgetter
@@ -53,14 +52,14 @@ class ModelInheritanceTest(TestCase):
dicts = list(Restaurant.objects.values('name','serves_hot_dogs'))
self.assertEqual(dicts, [{
- 'name': u"Guido's House of Pasta",
+ 'name': "Guido's House of Pasta",
'serves_hot_dogs': True
}])
dicts = list(ItalianRestaurant.objects.values(
'name','serves_hot_dogs','serves_gnocchi'))
self.assertEqual(dicts, [{
- 'name': u"Guido's House of Pasta",
+ 'name': "Guido's House of Pasta",
'serves_gnocchi': True,
'serves_hot_dogs': True,
}])
@@ -68,7 +67,7 @@ class ModelInheritanceTest(TestCase):
dicts = list(ParkingLot.objects.values('name','capacity'))
self.assertEqual(dicts, [{
'capacity': 100,
- 'name': u'Main St',
+ 'name': 'Main St',
}])
# You can also update objects when using a raw save.
@@ -95,14 +94,14 @@ class ModelInheritanceTest(TestCase):
dicts = list(Restaurant.objects.values('name','serves_hot_dogs'))
self.assertEqual(dicts, [{
- 'name': u"Guido's All New House of Pasta",
+ 'name': "Guido's All New House of Pasta",
'serves_hot_dogs': False,
}])
dicts = list(ItalianRestaurant.objects.values(
'name', 'serves_hot_dogs', 'serves_gnocchi'))
self.assertEqual(dicts, [{
- 'name': u"Guido's All New House of Pasta",
+ 'name': "Guido's All New House of Pasta",
'serves_gnocchi': False,
'serves_hot_dogs': False,
}])
@@ -110,7 +109,7 @@ class ModelInheritanceTest(TestCase):
dicts = list(ParkingLot.objects.values('name','capacity'))
self.assertEqual(dicts, [{
'capacity': 50,
- 'name': u'Derelict lot',
+ 'name': 'Derelict lot',
}])
# If you try to raw_save a parent attribute onto a child object,
@@ -124,7 +123,7 @@ class ModelInheritanceTest(TestCase):
dicts = list(ItalianRestaurant.objects.values(
'name','serves_hot_dogs','serves_gnocchi'))
self.assertEqual(dicts, [{
- 'name': u"Guido's All New House of Pasta",
+ 'name': "Guido's All New House of Pasta",
'serves_gnocchi': False,
'serves_hot_dogs': False,
}])
@@ -372,7 +371,7 @@ class ModelInheritanceTest(TestCase):
# verbose_name.
self.assertEqual(
InternalCertificationAudit._meta.verbose_name_plural,
- u'Audits'
+ 'Audits'
)
def test_inherited_nullable_exclude(self):
diff --git a/tests/regressiontests/model_inheritance_select_related/models.py b/tests/regressiontests/model_inheritance_select_related/models.py
index d5f4152d0a..f810531bff 100644
--- a/tests/regressiontests/model_inheritance_select_related/models.py
+++ b/tests/regressiontests/model_inheritance_select_related/models.py
@@ -2,6 +2,7 @@
Regression tests for the interaction between model inheritance and
select_related().
"""
+from __future__ import unicode_literals
from django.db import models
@@ -13,14 +14,14 @@ class Place(models.Model):
ordering = ('name',)
def __unicode__(self):
- return u"%s the place" % self.name
+ return "%s the place" % self.name
class Restaurant(Place):
serves_sushi = models.BooleanField()
serves_steak = models.BooleanField()
def __unicode__(self):
- return u"%s the restaurant" % self.name
+ return "%s the restaurant" % self.name
class Person(models.Model):
name = models.CharField(max_length=50)
diff --git a/tests/regressiontests/model_regress/tests.py b/tests/regressiontests/model_regress/tests.py
index 77bb4f23eb..7ba9d421d7 100644
--- a/tests/regressiontests/model_regress/tests.py
+++ b/tests/regressiontests/model_regress/tests.py
@@ -1,4 +1,4 @@
-from __future__ import absolute_import
+from __future__ import absolute_import, unicode_literals
import datetime
from operator import attrgetter
@@ -38,7 +38,7 @@ class ModelTests(TestCase):
# Empty strings should be returned as Unicode
a = Article.objects.get(pk=a.pk)
- self.assertEqual(a.misc_data, u'')
+ self.assertEqual(a.misc_data, '')
self.assertIs(type(a.misc_data), unicode)
def test_long_textfield(self):
diff --git a/tests/regressiontests/modeladmin/tests.py b/tests/regressiontests/modeladmin/tests.py
index 04b02eb36b..c2a1ca05ba 100644
--- a/tests/regressiontests/modeladmin/tests.py
+++ b/tests/regressiontests/modeladmin/tests.py
@@ -1,4 +1,4 @@
-from __future__ import absolute_import
+from __future__ import absolute_import, unicode_literals
from datetime import date
@@ -15,7 +15,7 @@ from django.core.exceptions import ImproperlyConfigured
from django.forms.models import BaseModelFormSet
from django.forms.widgets import Select
from django.test import TestCase
-from django.test.utils import override_settings
+from django.test.utils import override_settings, str_prefix
from django.utils import unittest
from .models import Band, Concert, ValidationTestModel, ValidationTestInlineModel
@@ -387,13 +387,13 @@ class ModelAdminTests(TestCase):
Select)
self.assertEqual(
list(cmafa.base_fields['main_band'].widget.choices),
- [(u'', u'---------'), (self.band.id, u'The Doors')])
+ [('', '---------'), (self.band.id, 'The Doors')])
self.assertEqual(
type(cmafa.base_fields['opening_band'].widget.widget), Select)
self.assertEqual(
list(cmafa.base_fields['opening_band'].widget.choices),
- [(u'', u'---------'), (self.band.id, u'The Doors')])
+ [('', '---------'), (self.band.id, 'The Doors')])
self.assertEqual(type(cmafa.base_fields['day'].widget), Select)
self.assertEqual(list(cmafa.base_fields['day'].widget.choices),
@@ -427,7 +427,7 @@ class ModelAdminTests(TestCase):
self.assertEqual(cmafa.base_fields['main_band'].widget.attrs,
{'class': 'radiolist inline'})
self.assertEqual(list(cmafa.base_fields['main_band'].widget.choices),
- [(self.band.id, u'The Doors')])
+ [(self.band.id, 'The Doors')])
self.assertEqual(
type(cmafa.base_fields['opening_band'].widget.widget),
@@ -436,7 +436,7 @@ class ModelAdminTests(TestCase):
{'class': 'radiolist'})
self.assertEqual(
list(cmafa.base_fields['opening_band'].widget.choices),
- [(u'', u'None'), (self.band.id, u'The Doors')])
+ [('', 'None'), (self.band.id, 'The Doors')])
self.assertEqual(type(cmafa.base_fields['day'].widget),
AdminRadioSelect)
@@ -450,7 +450,7 @@ class ModelAdminTests(TestCase):
self.assertEqual(cmafa.base_fields['transport'].widget.attrs,
{'class': 'radiolist inline'})
self.assertEqual(list(cmafa.base_fields['transport'].widget.choices),
- [('', u'None'), (1, 'Plane'), (2, 'Train'), (3, 'Bus')])
+ [('', 'None'), (1, 'Plane'), (2, 'Train'), (3, 'Bus')])
class AdminConcertForm(forms.ModelForm):
class Meta:
@@ -947,7 +947,7 @@ class ValidationTests(unittest.TestCase):
self.assertRaisesRegexp(
ImproperlyConfigured,
- "ValidationTestModelAdmin.list_display\[0\], 'non_existent_field' is not a callable or an attribute of 'ValidationTestModelAdmin' or found in the model 'ValidationTestModel'.",
+ str_prefix("ValidationTestModelAdmin.list_display\[0\], %(_)s'non_existent_field' is not a callable or an attribute of 'ValidationTestModelAdmin' or found in the model 'ValidationTestModel'."),
validate,
ValidationTestModelAdmin,
ValidationTestModel,
diff --git a/tests/regressiontests/multiple_database/tests.py b/tests/regressiontests/multiple_database/tests.py
index e2f433ece1..595c5edb3b 100644
--- a/tests/regressiontests/multiple_database/tests.py
+++ b/tests/regressiontests/multiple_database/tests.py
@@ -1,4 +1,4 @@
-from __future__ import absolute_import
+from __future__ import absolute_import, unicode_literals
import datetime
import pickle
@@ -172,14 +172,14 @@ class QueryTestCase(TestCase):
# Check that queries work across m2m joins
self.assertEqual(list(Book.objects.using('default').filter(authors__name='Marty Alchin').values_list('title', flat=True)),
- [u'Pro Django'])
+ ['Pro Django'])
self.assertEqual(list(Book.objects.using('other').filter(authors__name='Marty Alchin').values_list('title', flat=True)),
[])
self.assertEqual(list(Book.objects.using('default').filter(authors__name='Mark Pilgrim').values_list('title', flat=True)),
[])
self.assertEqual(list(Book.objects.using('other').filter(authors__name='Mark Pilgrim').values_list('title', flat=True)),
- [u'Dive into Python'])
+ ['Dive into Python'])
# Reget the objects to clear caches
dive = Book.objects.using('other').get(title="Dive into Python")
@@ -187,10 +187,10 @@ class QueryTestCase(TestCase):
# Retrive related object by descriptor. Related objects should be database-baound
self.assertEqual(list(dive.authors.all().values_list('name', flat=True)),
- [u'Mark Pilgrim'])
+ ['Mark Pilgrim'])
self.assertEqual(list(mark.book_set.all().values_list('title', flat=True)),
- [u'Dive into Python'])
+ ['Dive into Python'])
def test_m2m_forward_operations(self):
"M2M forward manipulations are all constrained to a single DB"
@@ -211,14 +211,14 @@ class QueryTestCase(TestCase):
dive.authors.add(john)
self.assertEqual(list(Book.objects.using('other').filter(authors__name='Mark Pilgrim').values_list('title', flat=True)),
- [u'Dive into Python'])
+ ['Dive into Python'])
self.assertEqual(list(Book.objects.using('other').filter(authors__name='John Smith').values_list('title', flat=True)),
- [u'Dive into Python'])
+ ['Dive into Python'])
# Remove the second author
dive.authors.remove(john)
self.assertEqual(list(Book.objects.using('other').filter(authors__name='Mark Pilgrim').values_list('title', flat=True)),
- [u'Dive into Python'])
+ ['Dive into Python'])
self.assertEqual(list(Book.objects.using('other').filter(authors__name='John Smith').values_list('title', flat=True)),
[])
@@ -234,7 +234,7 @@ class QueryTestCase(TestCase):
self.assertEqual(list(Book.objects.using('other').filter(authors__name='Mark Pilgrim').values_list('title', flat=True)),
[])
self.assertEqual(list(Book.objects.using('other').filter(authors__name='Jane Brown').values_list('title', flat=True)),
- [u'Dive into Python'])
+ ['Dive into Python'])
def test_m2m_reverse_operations(self):
"M2M reverse manipulations are all constrained to a single DB"
@@ -254,14 +254,14 @@ class QueryTestCase(TestCase):
# Add a books to the m2m
mark.book_set.add(grease)
self.assertEqual(list(Person.objects.using('other').filter(book__title='Dive into Python').values_list('name', flat=True)),
- [u'Mark Pilgrim'])
+ ['Mark Pilgrim'])
self.assertEqual(list(Person.objects.using('other').filter(book__title='Greasemonkey Hacks').values_list('name', flat=True)),
- [u'Mark Pilgrim'])
+ ['Mark Pilgrim'])
# Remove a book from the m2m
mark.book_set.remove(grease)
self.assertEqual(list(Person.objects.using('other').filter(book__title='Dive into Python').values_list('name', flat=True)),
- [u'Mark Pilgrim'])
+ ['Mark Pilgrim'])
self.assertEqual(list(Person.objects.using('other').filter(book__title='Greasemonkey Hacks').values_list('name', flat=True)),
[])
@@ -277,7 +277,7 @@ class QueryTestCase(TestCase):
self.assertEqual(list(Person.objects.using('other').filter(book__title='Dive into Python').values_list('name', flat=True)),
[])
self.assertEqual(list(Person.objects.using('other').filter(book__title='Dive into HTML5').values_list('name', flat=True)),
- [u'Mark Pilgrim'])
+ ['Mark Pilgrim'])
def test_m2m_cross_database_protection(self):
"Operations that involve sharing M2M objects across databases raise an error"
@@ -418,14 +418,14 @@ class QueryTestCase(TestCase):
# Check that queries work across foreign key joins
self.assertEqual(list(Person.objects.using('default').filter(edited__title='Pro Django').values_list('name', flat=True)),
- [u'George Vilches'])
+ ['George Vilches'])
self.assertEqual(list(Person.objects.using('other').filter(edited__title='Pro Django').values_list('name', flat=True)),
[])
self.assertEqual(list(Person.objects.using('default').filter(edited__title='Dive into Python').values_list('name', flat=True)),
[])
self.assertEqual(list(Person.objects.using('other').filter(edited__title='Dive into Python').values_list('name', flat=True)),
- [u'Chris Mills'])
+ ['Chris Mills'])
# Reget the objects to clear caches
chris = Person.objects.using('other').get(name="Chris Mills")
@@ -433,7 +433,7 @@ class QueryTestCase(TestCase):
# Retrive related object by descriptor. Related objects should be database-baound
self.assertEqual(list(chris.edited.values_list('title', flat=True)),
- [u'Dive into Python'])
+ ['Dive into Python'])
def test_foreign_key_reverse_operations(self):
"FK reverse manipulations are all constrained to a single DB"
@@ -454,16 +454,16 @@ class QueryTestCase(TestCase):
chris.edited.add(html5)
self.assertEqual(list(Person.objects.using('other').filter(edited__title='Dive into HTML5').values_list('name', flat=True)),
- [u'Chris Mills'])
+ ['Chris Mills'])
self.assertEqual(list(Person.objects.using('other').filter(edited__title='Dive into Python').values_list('name', flat=True)),
- [u'Chris Mills'])
+ ['Chris Mills'])
# Remove the second editor
chris.edited.remove(html5)
self.assertEqual(list(Person.objects.using('other').filter(edited__title='Dive into HTML5').values_list('name', flat=True)),
[])
self.assertEqual(list(Person.objects.using('other').filter(edited__title='Dive into Python').values_list('name', flat=True)),
- [u'Chris Mills'])
+ ['Chris Mills'])
# Clear all edited books
chris.edited.clear()
@@ -477,7 +477,7 @@ class QueryTestCase(TestCase):
self.assertEqual(list(Person.objects.using('other').filter(edited__title='Dive into HTML5').values_list('name', flat=True)),
[])
self.assertEqual(list(Person.objects.using('other').filter(edited__title='Dive into Water').values_list('name', flat=True)),
- [u'Chris Mills'])
+ ['Chris Mills'])
self.assertEqual(list(Person.objects.using('other').filter(edited__title='Dive into Python').values_list('name', flat=True)),
[])
@@ -532,37 +532,37 @@ class QueryTestCase(TestCase):
self.assertEqual(html5._state.db, 'other')
# ... but it isn't saved yet
self.assertEqual(list(Person.objects.using('other').values_list('name',flat=True)),
- [u'Mark Pilgrim'])
+ ['Mark Pilgrim'])
self.assertEqual(list(Book.objects.using('other').values_list('title',flat=True)),
- [u'Dive into Python'])
+ ['Dive into Python'])
# When saved (no using required), new objects goes to 'other'
chris.save()
html5.save()
self.assertEqual(list(Person.objects.using('default').values_list('name',flat=True)),
- [u'Marty Alchin'])
+ ['Marty Alchin'])
self.assertEqual(list(Person.objects.using('other').values_list('name',flat=True)),
- [u'Chris Mills', u'Mark Pilgrim'])
+ ['Chris Mills', 'Mark Pilgrim'])
self.assertEqual(list(Book.objects.using('default').values_list('title',flat=True)),
- [u'Pro Django'])
+ ['Pro Django'])
self.assertEqual(list(Book.objects.using('other').values_list('title',flat=True)),
- [u'Dive into HTML5', u'Dive into Python'])
+ ['Dive into HTML5', 'Dive into Python'])
# This also works if you assign the FK in the constructor
water = Book(title="Dive into Water", published=datetime.date(2001, 1, 1), editor=mark)
self.assertEqual(water._state.db, 'other')
# ... but it isn't saved yet
self.assertEqual(list(Book.objects.using('default').values_list('title',flat=True)),
- [u'Pro Django'])
+ ['Pro Django'])
self.assertEqual(list(Book.objects.using('other').values_list('title',flat=True)),
- [u'Dive into HTML5', u'Dive into Python'])
+ ['Dive into HTML5', 'Dive into Python'])
# When saved, the new book goes to 'other'
water.save()
self.assertEqual(list(Book.objects.using('default').values_list('title',flat=True)),
- [u'Pro Django'])
+ ['Pro Django'])
self.assertEqual(list(Book.objects.using('other').values_list('title',flat=True)),
- [u'Dive into HTML5', u'Dive into Python', u'Dive into Water'])
+ ['Dive into HTML5', 'Dive into Python', 'Dive into Water'])
def test_foreign_key_deletion(self):
"Cascaded deletions of Foreign Key relations issue queries on the right database"
@@ -611,14 +611,14 @@ class QueryTestCase(TestCase):
# Check that queries work across joins
self.assertEqual(list(User.objects.using('default').filter(userprofile__flavor='chocolate').values_list('username', flat=True)),
- [u'alice'])
+ ['alice'])
self.assertEqual(list(User.objects.using('other').filter(userprofile__flavor='chocolate').values_list('username', flat=True)),
[])
self.assertEqual(list(User.objects.using('default').filter(userprofile__flavor='crunchy frog').values_list('username', flat=True)),
[])
self.assertEqual(list(User.objects.using('other').filter(userprofile__flavor='crunchy frog').values_list('username', flat=True)),
- [u'bob'])
+ ['bob'])
# Reget the objects to clear caches
alice_profile = UserProfile.objects.using('default').get(flavor='chocolate')
@@ -666,22 +666,22 @@ class QueryTestCase(TestCase):
# ... but it isn't saved yet
self.assertEqual(list(User.objects.using('other').values_list('username',flat=True)),
- [u'bob'])
+ ['bob'])
self.assertEqual(list(UserProfile.objects.using('other').values_list('flavor',flat=True)),
- [u'crunchy frog'])
+ ['crunchy frog'])
# When saved (no using required), new objects goes to 'other'
charlie.save()
bob_profile.save()
new_bob_profile.save()
self.assertEqual(list(User.objects.using('default').values_list('username',flat=True)),
- [u'alice'])
+ ['alice'])
self.assertEqual(list(User.objects.using('other').values_list('username',flat=True)),
- [u'bob', u'charlie'])
+ ['bob', 'charlie'])
self.assertEqual(list(UserProfile.objects.using('default').values_list('flavor',flat=True)),
- [u'chocolate'])
+ ['chocolate'])
self.assertEqual(list(UserProfile.objects.using('other').values_list('flavor',flat=True)),
- [u'crunchy frog', u'spring surprise'])
+ ['crunchy frog', 'spring surprise'])
# This also works if you assign the O2O relation in the constructor
denise = User.objects.db_manager('other').create_user('denise','denise@example.com')
@@ -690,16 +690,16 @@ class QueryTestCase(TestCase):
self.assertEqual(denise_profile._state.db, 'other')
# ... but it isn't saved yet
self.assertEqual(list(UserProfile.objects.using('default').values_list('flavor',flat=True)),
- [u'chocolate'])
+ ['chocolate'])
self.assertEqual(list(UserProfile.objects.using('other').values_list('flavor',flat=True)),
- [u'crunchy frog', u'spring surprise'])
+ ['crunchy frog', 'spring surprise'])
# When saved, the new profile goes to 'other'
denise_profile.save()
self.assertEqual(list(UserProfile.objects.using('default').values_list('flavor',flat=True)),
- [u'chocolate'])
+ ['chocolate'])
self.assertEqual(list(UserProfile.objects.using('other').values_list('flavor',flat=True)),
- [u'crunchy frog', u'spring surprise', u'tofu'])
+ ['crunchy frog', 'spring surprise', 'tofu'])
def test_generic_key_separation(self):
"Generic fields are constrained to a single database"
@@ -728,7 +728,7 @@ class QueryTestCase(TestCase):
# Retrive related object by descriptor. Related objects should be database-bound
self.assertEqual(list(dive.reviews.all().values_list('source', flat=True)),
- [u'Python Weekly'])
+ ['Python Weekly'])
def test_generic_key_reverse_operations(self):
"Generic reverse manipulations are all constrained to a single DB"
@@ -746,21 +746,21 @@ class QueryTestCase(TestCase):
self.assertEqual(list(Review.objects.using('default').filter(object_id=dive.pk).values_list('source', flat=True)),
[])
self.assertEqual(list(Review.objects.using('other').filter(object_id=dive.pk).values_list('source', flat=True)),
- [u'Python Weekly'])
+ ['Python Weekly'])
# Add a second review
dive.reviews.add(review2)
self.assertEqual(list(Review.objects.using('default').filter(object_id=dive.pk).values_list('source', flat=True)),
[])
self.assertEqual(list(Review.objects.using('other').filter(object_id=dive.pk).values_list('source', flat=True)),
- [u'Python Monthly', u'Python Weekly'])
+ ['Python Monthly', 'Python Weekly'])
# Remove the second author
dive.reviews.remove(review1)
self.assertEqual(list(Review.objects.using('default').filter(object_id=dive.pk).values_list('source', flat=True)),
[])
self.assertEqual(list(Review.objects.using('other').filter(object_id=dive.pk).values_list('source', flat=True)),
- [u'Python Monthly'])
+ ['Python Monthly'])
# Clear all reviews
dive.reviews.clear()
@@ -774,7 +774,7 @@ class QueryTestCase(TestCase):
self.assertEqual(list(Review.objects.using('default').filter(object_id=dive.pk).values_list('source', flat=True)),
[])
self.assertEqual(list(Review.objects.using('other').filter(object_id=dive.pk).values_list('source', flat=True)),
- [u'Python Daily'])
+ ['Python Daily'])
def test_generic_key_cross_database_protection(self):
"Operations that involve sharing generic key objects across databases raise an error"
@@ -818,16 +818,16 @@ class QueryTestCase(TestCase):
self.assertEqual(review3._state.db, 'other')
# ... but it isn't saved yet
self.assertEqual(list(Review.objects.using('default').filter(object_id=pro.pk).values_list('source', flat=True)),
- [u'Python Monthly'])
+ ['Python Monthly'])
self.assertEqual(list(Review.objects.using('other').filter(object_id=dive.pk).values_list('source',flat=True)),
- [u'Python Weekly'])
+ ['Python Weekly'])
# When saved, John goes to 'other'
review3.save()
self.assertEqual(list(Review.objects.using('default').filter(object_id=pro.pk).values_list('source', flat=True)),
- [u'Python Monthly'])
+ ['Python Monthly'])
self.assertEqual(list(Review.objects.using('other').filter(object_id=dive.pk).values_list('source',flat=True)),
- [u'Python Daily', u'Python Weekly'])
+ ['Python Daily', 'Python Weekly'])
def test_generic_key_deletion(self):
"Cascaded deletions of Generic Key relations issue queries on the right database"
@@ -1103,8 +1103,8 @@ class RouterTestCase(TestCase):
# Related object queries stick to the same database
# as the original object, regardless of the router
- self.assertEqual(list(pro.authors.values_list('name', flat=True)), [u'Marty Alchin'])
- self.assertEqual(pro.editor.name, u'Marty Alchin')
+ self.assertEqual(list(pro.authors.values_list('name', flat=True)), ['Marty Alchin'])
+ self.assertEqual(pro.editor.name, 'Marty Alchin')
# get_or_create is a special case. The get needs to be targeted at
# the write database in order to avoid potential transaction
@@ -1543,7 +1543,7 @@ class RouterTestCase(TestCase):
str(qs.query)
# If you evaluate the query, it should work, running on 'other'
- self.assertEqual(list(qs.values_list('title', flat=True)), [u'Dive into Python'])
+ self.assertEqual(list(qs.values_list('title', flat=True)), ['Dive into Python'])
class AuthTestCase(TestCase):
multi_db = True
diff --git a/tests/regressiontests/null_fk/tests.py b/tests/regressiontests/null_fk/tests.py
index abcfde9391..96a06b6769 100644
--- a/tests/regressiontests/null_fk/tests.py
+++ b/tests/regressiontests/null_fk/tests.py
@@ -1,4 +1,4 @@
-from __future__ import absolute_import
+from __future__ import absolute_import, unicode_literals
from django.db.models import Q
from django.test import TestCase
@@ -28,8 +28,8 @@ class NullFkTests(TestCase):
self.assertQuerysetEqual(
Comment.objects.select_related('post__forum__system_info').all(),
[
- (c1.id, u'My first comment', '<Post: First Post>'),
- (c2.id, u'My second comment', 'None')
+ (c1.id, 'My first comment', '<Post: First Post>'),
+ (c2.id, 'My second comment', 'None')
],
transform = lambda c: (c.id, c.comment_text, repr(c.post))
)
@@ -40,8 +40,8 @@ class NullFkTests(TestCase):
self.assertQuerysetEqual(
Comment.objects.select_related('post__forum__system_info__system_details'),
[
- (c1.id, u'My first comment', '<Post: First Post>'),
- (c2.id, u'My second comment', 'None')
+ (c1.id, 'My first comment', '<Post: First Post>'),
+ (c2.id, 'My second comment', 'None')
],
transform = lambda c: (c.id, c.comment_text, repr(c.post))
)
diff --git a/tests/regressiontests/null_fk_ordering/models.py b/tests/regressiontests/null_fk_ordering/models.py
index ac714f9ad5..e4a19f1512 100644
--- a/tests/regressiontests/null_fk_ordering/models.py
+++ b/tests/regressiontests/null_fk_ordering/models.py
@@ -5,6 +5,7 @@ Regression tests for proper working of ForeignKey(null=True). Tests these bugs:
xpected results
"""
+from __future__ import unicode_literals
from django.db import models
@@ -18,7 +19,7 @@ class Article(models.Model):
author = models.ForeignKey(Author, null=True)
def __unicode__(self):
- return u'Article titled: %s' % (self.title, )
+ return 'Article titled: %s' % (self.title, )
class Meta:
ordering = ['author__name', ]
diff --git a/tests/regressiontests/null_queries/models.py b/tests/regressiontests/null_queries/models.py
index ff9916fa2f..886bd75276 100644
--- a/tests/regressiontests/null_queries/models.py
+++ b/tests/regressiontests/null_queries/models.py
@@ -1,3 +1,5 @@
+from __future__ import unicode_literals
+
from django.db import models
@@ -5,14 +7,14 @@ class Poll(models.Model):
question = models.CharField(max_length=200)
def __unicode__(self):
- return u"Q: %s " % self.question
+ return "Q: %s " % self.question
class Choice(models.Model):
poll = models.ForeignKey(Poll)
choice = models.CharField(max_length=200)
def __unicode__(self):
- return u"Choice: %s in poll %s" % (self.choice, self.poll)
+ return "Choice: %s in poll %s" % (self.choice, self.poll)
# A set of models with an inner one pointing to two outer ones.
class OuterA(models.Model):
diff --git a/tests/regressiontests/one_to_one_regress/models.py b/tests/regressiontests/one_to_one_regress/models.py
index 0e4eef65ca..5d32bf03f8 100644
--- a/tests/regressiontests/one_to_one_regress/models.py
+++ b/tests/regressiontests/one_to_one_regress/models.py
@@ -1,3 +1,5 @@
+from __future__ import unicode_literals
+
from django.db import models
@@ -6,7 +8,7 @@ class Place(models.Model):
address = models.CharField(max_length=80)
def __unicode__(self):
- return u"%s the place" % self.name
+ return "%s the place" % self.name
class Restaurant(models.Model):
place = models.OneToOneField(Place)
@@ -14,14 +16,14 @@ class Restaurant(models.Model):
serves_pizza = models.BooleanField()
def __unicode__(self):
- return u"%s the restaurant" % self.place.name
+ return "%s the restaurant" % self.place.name
class Bar(models.Model):
place = models.OneToOneField(Place)
serves_cocktails = models.BooleanField()
def __unicode__(self):
- return u"%s the bar" % self.place.name
+ return "%s the bar" % self.place.name
class UndergroundBar(models.Model):
place = models.OneToOneField(Place, null=True)
@@ -32,7 +34,7 @@ class Favorites(models.Model):
restaurants = models.ManyToManyField(Restaurant)
def __unicode__(self):
- return u"Favorites for %s" % self.name
+ return "Favorites for %s" % self.name
class Target(models.Model):
pass
diff --git a/tests/regressiontests/pagination_regress/tests.py b/tests/regressiontests/pagination_regress/tests.py
index 9f381a5981..59ac41e062 100644
--- a/tests/regressiontests/pagination_regress/tests.py
+++ b/tests/regressiontests/pagination_regress/tests.py
@@ -1,3 +1,5 @@
+from __future__ import unicode_literals
+
from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger
from django.utils.unittest import TestCase
@@ -96,9 +98,9 @@ class PaginatorTests(TestCase):
((eleven, 10, 1, True), (11, 1, [1])),
# Non-integer inputs
((ten, '4', 1, False), (10, 3, [1, 2, 3])),
- ((ten, u'4', 1, False), (10, 3, [1, 2, 3])),
+ ((ten, '4', 1, False), (10, 3, [1, 2, 3])),
+ ((ten, 4, '1', False), (10, 3, [1, 2, 3])),
((ten, 4, '1', False), (10, 3, [1, 2, 3])),
- ((ten, 4, u'1', False), (10, 3, [1, 2, 3])),
)
for params, output in tests:
self.check_paginator(params, output)
diff --git a/tests/regressiontests/queries/models.py b/tests/regressiontests/queries/models.py
index e4ce9d7b60..8c34b50e93 100644
--- a/tests/regressiontests/queries/models.py
+++ b/tests/regressiontests/queries/models.py
@@ -1,6 +1,7 @@
"""
Various complex queries that have been problematic in the past.
"""
+from __future__ import unicode_literals
import threading
@@ -294,14 +295,14 @@ class Eaten(models.Model):
meal = models.CharField(max_length=20)
def __unicode__(self):
- return u"%s at %s" % (self.food, self.meal)
+ return "%s at %s" % (self.food, self.meal)
class Node(models.Model):
num = models.IntegerField(unique=True)
parent = models.ForeignKey("self", to_field="num", null=True)
def __unicode__(self):
- return u"%s" % self.num
+ return "%s" % self.num
# Bug #12252
class ObjectA(models.Model):
diff --git a/tests/regressiontests/queries/tests.py b/tests/regressiontests/queries/tests.py
index 1035a38840..4cc7208a96 100644
--- a/tests/regressiontests/queries/tests.py
+++ b/tests/regressiontests/queries/tests.py
@@ -1,4 +1,4 @@
-from __future__ import absolute_import
+from __future__ import absolute_import,unicode_literals
import datetime
from operator import attrgetter
@@ -11,6 +11,7 @@ from django.db import DatabaseError, connection, connections, DEFAULT_DB_ALIAS
from django.db.models import Count
from django.db.models.query import Q, ITER_CHUNK_SIZE, EmptyQuerySet
from django.test import TestCase, skipUnlessDBFeature
+from django.test.utils import str_prefix
from django.utils import unittest
from django.utils.datastructures import SortedDict
@@ -466,7 +467,7 @@ class Queries1Tests(BaseQuerysetTest):
# ordering columns.
self.assertValueQuerysetEqual(
Note.objects.values('misc').distinct().order_by('note', '-misc'),
- [{'misc': u'foo'}, {'misc': u'bar'}, {'misc': u'foo'}]
+ [{'misc': 'foo'}, {'misc': 'bar'}, {'misc': 'foo'}]
)
def test_ticket4358(self):
@@ -506,7 +507,7 @@ class Queries1Tests(BaseQuerysetTest):
# return 'one' and 'two' as strings, not Unicode objects. It's a side-effect of
# using constants here and not a real concern.
d = Item.objects.extra(select=SortedDict(s), select_params=params).values('a', 'b')[0]
- self.assertEqual(d, {'a': u'one', 'b': u'two'})
+ self.assertEqual(d, {'a': 'one', 'b': 'two'})
# Order by the number of tags attached to an item.
l = Item.objects.extra(select={'count': 'select count(*) from queries_item_tags where queries_item_tags.item_id = queries_item.id'}).order_by('-count')
@@ -582,7 +583,7 @@ class Queries1Tests(BaseQuerysetTest):
# works.
self.assertValueQuerysetEqual(
Item.objects.values('note__note').order_by('queries_note.note', 'id'),
- [{'note__note': u'n2'}, {'note__note': u'n3'}, {'note__note': u'n3'}, {'note__note': u'n3'}]
+ [{'note__note': 'n2'}, {'note__note': 'n3'}, {'note__note': 'n3'}, {'note__note': 'n3'}]
)
def test_ticket7096(self):
@@ -1051,15 +1052,15 @@ class Queries4Tests(BaseQuerysetTest):
# A values() or values_list() query across joined models must use outer
# joins appropriately.
- # Note: In Oracle, we expect a null CharField to return u'' instead of
+ # Note: In Oracle, we expect a null CharField to return '' instead of
# None.
if connection.features.interprets_empty_strings_as_nulls:
- expected_null_charfield_repr = u''
+ expected_null_charfield_repr = ''
else:
expected_null_charfield_repr = None
self.assertValueQuerysetEqual(
Report.objects.values_list("creator__extra__info", flat=True).order_by("name"),
- [u'e1', u'e2', expected_null_charfield_repr],
+ ['e1', 'e2', expected_null_charfield_repr],
)
# Similarly for select_related(), joins beyond an initial nullable join
@@ -1080,7 +1081,7 @@ class Queries4Tests(BaseQuerysetTest):
m2 = Member.objects.create(name="m2", details=d2)
Child.objects.create(person=m2, parent=m1)
obj = m1.children.select_related("person__details")[0]
- self.assertEqual(obj.person.details.data, u'd2')
+ self.assertEqual(obj.person.details.data, 'd2')
def test_order_by_resetting(self):
# Calling order_by() with no parameters removes any existing ordering on the
@@ -1530,12 +1531,12 @@ class RawQueriesTests(TestCase):
query = "SELECT * FROM queries_note WHERE note = %s"
params = ['n1']
qs = Note.objects.raw(query, params=params)
- self.assertEqual(repr(qs), "<RawQuerySet: 'SELECT * FROM queries_note WHERE note = n1'>")
+ self.assertEqual(repr(qs), str_prefix("<RawQuerySet: %(_)s'SELECT * FROM queries_note WHERE note = n1'>"))
query = "SELECT * FROM queries_note WHERE note = %s and misc = %s"
params = ['n1', 'foo']
qs = Note.objects.raw(query, params=params)
- self.assertEqual(repr(qs), "<RawQuerySet: 'SELECT * FROM queries_note WHERE note = n1 and misc = foo'>")
+ self.assertEqual(repr(qs), str_prefix("<RawQuerySet: %(_)s'SELECT * FROM queries_note WHERE note = n1 and misc = foo'>"))
class GeneratorExpressionTests(TestCase):
diff --git a/tests/regressiontests/requests/tests.py b/tests/regressiontests/requests/tests.py
index 3d2b196194..146dca2b7b 100644
--- a/tests/regressiontests/requests/tests.py
+++ b/tests/regressiontests/requests/tests.py
@@ -1,3 +1,5 @@
+from __future__ import unicode_literals
+
import time
import warnings
from datetime import datetime, timedelta
@@ -6,6 +8,7 @@ from StringIO import StringIO
from django.conf import settings
from django.core.handlers.wsgi import WSGIRequest, LimitedStream
from django.http import HttpRequest, HttpResponse, parse_cookie, build_request_repr, UnreadablePostError
+from django.test.utils import str_prefix
from django.utils import unittest
from django.utils.http import cookie_date
from django.utils.timezone import utc
@@ -21,15 +24,15 @@ class RequestsTests(unittest.TestCase):
def test_httprequest_repr(self):
request = HttpRequest()
- request.path = u'/somepath/'
- request.GET = {u'get-key': u'get-value'}
- request.POST = {u'post-key': u'post-value'}
- request.COOKIES = {u'post-key': u'post-value'}
- request.META = {u'post-key': u'post-value'}
- self.assertEqual(repr(request), u"<HttpRequest\npath:/somepath/,\nGET:{u'get-key': u'get-value'},\nPOST:{u'post-key': u'post-value'},\nCOOKIES:{u'post-key': u'post-value'},\nMETA:{u'post-key': u'post-value'}>")
+ request.path = '/somepath/'
+ request.GET = {'get-key': 'get-value'}
+ request.POST = {'post-key': 'post-value'}
+ request.COOKIES = {'post-key': 'post-value'}
+ request.META = {'post-key': 'post-value'}
+ self.assertEqual(repr(request), str_prefix("<HttpRequest\npath:/somepath/,\nGET:{%(_)s'get-key': %(_)s'get-value'},\nPOST:{%(_)s'post-key': %(_)s'post-value'},\nCOOKIES:{%(_)s'post-key': %(_)s'post-value'},\nMETA:{%(_)s'post-key': %(_)s'post-value'}>"))
self.assertEqual(build_request_repr(request), repr(request))
- self.assertEqual(build_request_repr(request, path_override='/otherpath/', GET_override={u'a': u'b'}, POST_override={u'c': u'd'}, COOKIES_override={u'e': u'f'}, META_override={u'g': u'h'}),
- u"<HttpRequest\npath:/otherpath/,\nGET:{u'a': u'b'},\nPOST:{u'c': u'd'},\nCOOKIES:{u'e': u'f'},\nMETA:{u'g': u'h'}>")
+ self.assertEqual(build_request_repr(request, path_override='/otherpath/', GET_override={'a': 'b'}, POST_override={'c': 'd'}, COOKIES_override={'e': 'f'}, META_override={'g': 'h'}),
+ str_prefix("<HttpRequest\npath:/otherpath/,\nGET:{%(_)s'a': %(_)s'b'},\nPOST:{%(_)s'c': %(_)s'd'},\nCOOKIES:{%(_)s'e': %(_)s'f'},\nMETA:{%(_)s'g': %(_)s'h'}>"))
def test_wsgirequest(self):
request = WSGIRequest({'PATH_INFO': 'bogus', 'REQUEST_METHOD': 'bogus', 'wsgi.input': StringIO('')})
@@ -43,14 +46,14 @@ class RequestsTests(unittest.TestCase):
def test_wsgirequest_repr(self):
request = WSGIRequest({'PATH_INFO': '/somepath/', 'REQUEST_METHOD': 'get', 'wsgi.input': StringIO('')})
- request.GET = {u'get-key': u'get-value'}
- request.POST = {u'post-key': u'post-value'}
- request.COOKIES = {u'post-key': u'post-value'}
- request.META = {u'post-key': u'post-value'}
- self.assertEqual(repr(request), u"<WSGIRequest\npath:/somepath/,\nGET:{u'get-key': u'get-value'},\nPOST:{u'post-key': u'post-value'},\nCOOKIES:{u'post-key': u'post-value'},\nMETA:{u'post-key': u'post-value'}>")
+ request.GET = {'get-key': 'get-value'}
+ request.POST = {'post-key': 'post-value'}
+ request.COOKIES = {'post-key': 'post-value'}
+ request.META = {'post-key': 'post-value'}
+ self.assertEqual(repr(request), str_prefix("<WSGIRequest\npath:/somepath/,\nGET:{%(_)s'get-key': %(_)s'get-value'},\nPOST:{%(_)s'post-key': %(_)s'post-value'},\nCOOKIES:{%(_)s'post-key': %(_)s'post-value'},\nMETA:{%(_)s'post-key': %(_)s'post-value'}>"))
self.assertEqual(build_request_repr(request), repr(request))
- self.assertEqual(build_request_repr(request, path_override='/otherpath/', GET_override={u'a': u'b'}, POST_override={u'c': u'd'}, COOKIES_override={u'e': u'f'}, META_override={u'g': u'h'}),
- u"<WSGIRequest\npath:/otherpath/,\nGET:{u'a': u'b'},\nPOST:{u'c': u'd'},\nCOOKIES:{u'e': u'f'},\nMETA:{u'g': u'h'}>")
+ self.assertEqual(build_request_repr(request, path_override='/otherpath/', GET_override={'a': 'b'}, POST_override={'c': 'd'}, COOKIES_override={'e': 'f'}, META_override={'g': 'h'}),
+ str_prefix("<WSGIRequest\npath:/otherpath/,\nGET:{%(_)s'a': %(_)s'b'},\nPOST:{%(_)s'c': %(_)s'd'},\nCOOKIES:{%(_)s'e': %(_)s'f'},\nMETA:{%(_)s'g': %(_)s'h'}>"))
def test_parse_cookie(self):
self.assertEqual(parse_cookie('invalid:key=true'), {})
@@ -73,10 +76,10 @@ class RequestsTests(unittest.TestCase):
# Check if X_FORWARDED_HOST is provided.
request = HttpRequest()
request.META = {
- u'HTTP_X_FORWARDED_HOST': u'forward.com',
- u'HTTP_HOST': u'example.com',
- u'SERVER_NAME': u'internal.com',
- u'SERVER_PORT': 80,
+ 'HTTP_X_FORWARDED_HOST': 'forward.com',
+ 'HTTP_HOST': 'example.com',
+ 'SERVER_NAME': 'internal.com',
+ 'SERVER_PORT': 80,
}
# X_FORWARDED_HOST is ignored.
self.assertEqual(request.get_host(), 'example.com')
@@ -84,25 +87,25 @@ class RequestsTests(unittest.TestCase):
# Check if X_FORWARDED_HOST isn't provided.
request = HttpRequest()
request.META = {
- u'HTTP_HOST': u'example.com',
- u'SERVER_NAME': u'internal.com',
- u'SERVER_PORT': 80,
+ 'HTTP_HOST': 'example.com',
+ 'SERVER_NAME': 'internal.com',
+ 'SERVER_PORT': 80,
}
self.assertEqual(request.get_host(), 'example.com')
# Check if HTTP_HOST isn't provided.
request = HttpRequest()
request.META = {
- u'SERVER_NAME': u'internal.com',
- u'SERVER_PORT': 80,
+ 'SERVER_NAME': 'internal.com',
+ 'SERVER_PORT': 80,
}
self.assertEqual(request.get_host(), 'internal.com')
# Check if HTTP_HOST isn't provided, and we're on a nonstandard port
request = HttpRequest()
request.META = {
- u'SERVER_NAME': u'internal.com',
- u'SERVER_PORT': 8042,
+ 'SERVER_NAME': 'internal.com',
+ 'SERVER_PORT': 8042,
}
self.assertEqual(request.get_host(), 'internal.com:8042')
@@ -117,10 +120,10 @@ class RequestsTests(unittest.TestCase):
# Check if X_FORWARDED_HOST is provided.
request = HttpRequest()
request.META = {
- u'HTTP_X_FORWARDED_HOST': u'forward.com',
- u'HTTP_HOST': u'example.com',
- u'SERVER_NAME': u'internal.com',
- u'SERVER_PORT': 80,
+ 'HTTP_X_FORWARDED_HOST': 'forward.com',
+ 'HTTP_HOST': 'example.com',
+ 'SERVER_NAME': 'internal.com',
+ 'SERVER_PORT': 80,
}
# X_FORWARDED_HOST is obeyed.
self.assertEqual(request.get_host(), 'forward.com')
@@ -128,25 +131,25 @@ class RequestsTests(unittest.TestCase):
# Check if X_FORWARDED_HOST isn't provided.
request = HttpRequest()
request.META = {
- u'HTTP_HOST': u'example.com',
- u'SERVER_NAME': u'internal.com',
- u'SERVER_PORT': 80,
+ 'HTTP_HOST': 'example.com',
+ 'SERVER_NAME': 'internal.com',
+ 'SERVER_PORT': 80,
}
self.assertEqual(request.get_host(), 'example.com')
# Check if HTTP_HOST isn't provided.
request = HttpRequest()
request.META = {
- u'SERVER_NAME': u'internal.com',
- u'SERVER_PORT': 80,
+ 'SERVER_NAME': 'internal.com',
+ 'SERVER_PORT': 80,
}
self.assertEqual(request.get_host(), 'internal.com')
# Check if HTTP_HOST isn't provided, and we're on a nonstandard port
request = HttpRequest()
request.META = {
- u'SERVER_NAME': u'internal.com',
- u'SERVER_PORT': 8042,
+ 'SERVER_NAME': 'internal.com',
+ 'SERVER_PORT': 8042,
}
self.assertEqual(request.get_host(), 'internal.com:8042')
@@ -275,7 +278,7 @@ class RequestsTests(unittest.TestCase):
request = WSGIRequest({'REQUEST_METHOD': 'POST',
'CONTENT_LENGTH': len(payload),
'wsgi.input': StringIO(payload)})
- self.assertEqual(request.POST, {u'name': [u'value']})
+ self.assertEqual(request.POST, {'name': ['value']})
self.assertEqual(request.body, b'name=value')
self.assertEqual(request.read(), b'name=value')
@@ -305,12 +308,12 @@ class RequestsTests(unittest.TestCase):
'',
'value',
'--boundary--'
- ''])
+ '']).encode('utf-8')
request = WSGIRequest({'REQUEST_METHOD': 'POST',
'CONTENT_TYPE': 'multipart/form-data; boundary=boundary',
'CONTENT_LENGTH': len(payload),
'wsgi.input': StringIO(payload)})
- self.assertEqual(request.POST, {u'name': [u'value']})
+ self.assertEqual(request.POST, {'name': ['value']})
self.assertRaises(Exception, lambda: request.body)
def test_POST_multipart_with_content_length_zero(self):
@@ -327,7 +330,7 @@ class RequestsTests(unittest.TestCase):
'',
'value',
'--boundary--'
- ''])
+ '']).encode('utf-8')
request = WSGIRequest({'REQUEST_METHOD': 'POST',
'CONTENT_TYPE': 'multipart/form-data; boundary=boundary',
'CONTENT_LENGTH': 0,
@@ -350,7 +353,7 @@ class RequestsTests(unittest.TestCase):
'CONTENT_LENGTH': len(payload),
'wsgi.input': StringIO(payload)})
raw_data = request.body
- self.assertEqual(request.POST, {u'name': [u'value']})
+ self.assertEqual(request.POST, {'name': ['value']})
def test_POST_after_body_read_and_stream_read(self):
"""
@@ -363,7 +366,7 @@ class RequestsTests(unittest.TestCase):
'wsgi.input': StringIO(payload)})
raw_data = request.body
self.assertEqual(request.read(1), b'n')
- self.assertEqual(request.POST, {u'name': [u'value']})
+ self.assertEqual(request.POST, {'name': ['value']})
def test_POST_after_body_read_and_stream_read_multipart(self):
"""
@@ -376,7 +379,7 @@ class RequestsTests(unittest.TestCase):
'',
'value',
'--boundary--'
- ''])
+ '']).encode('utf-8')
request = WSGIRequest({'REQUEST_METHOD': 'POST',
'CONTENT_TYPE': 'multipart/form-data; boundary=boundary',
'CONTENT_LENGTH': len(payload),
@@ -384,7 +387,7 @@ class RequestsTests(unittest.TestCase):
raw_data = request.body
# Consume enough data to mess up the parsing:
self.assertEqual(request.read(13), b'--boundary\r\nC')
- self.assertEqual(request.POST, {u'name': [u'value']})
+ self.assertEqual(request.POST, {'name': ['value']})
def test_raw_post_data_returns_body(self):
"""
diff --git a/tests/regressiontests/select_related_regress/models.py b/tests/regressiontests/select_related_regress/models.py
index 43e64f0e69..1af9ff4bca 100644
--- a/tests/regressiontests/select_related_regress/models.py
+++ b/tests/regressiontests/select_related_regress/models.py
@@ -1,3 +1,5 @@
+from __future__ import unicode_literals
+
from django.db import models
@@ -5,21 +7,21 @@ class Building(models.Model):
name = models.CharField(max_length=10)
def __unicode__(self):
- return u"Building: %s" % self.name
+ return "Building: %s" % self.name
class Device(models.Model):
building = models.ForeignKey('Building')
name = models.CharField(max_length=10)
def __unicode__(self):
- return u"device '%s' in building %s" % (self.name, self.building)
+ return "device '%s' in building %s" % (self.name, self.building)
class Port(models.Model):
device = models.ForeignKey('Device')
port_number = models.CharField(max_length=10)
def __unicode__(self):
- return u"%s/%s" % (self.device.name, self.port_number)
+ return "%s/%s" % (self.device.name, self.port_number)
class Connection(models.Model):
start = models.ForeignKey(Port, related_name='connection_start',
@@ -27,7 +29,7 @@ class Connection(models.Model):
end = models.ForeignKey(Port, related_name='connection_end', unique=True)
def __unicode__(self):
- return u"%s to %s" % (self.start, self.end)
+ return "%s to %s" % (self.start, self.end)
# Another non-tree hierarchy that exercises code paths similar to the above
# example, but in a slightly different configuration.
diff --git a/tests/regressiontests/select_related_regress/tests.py b/tests/regressiontests/select_related_regress/tests.py
index 4cd4f788e2..e35157dbaf 100644
--- a/tests/regressiontests/select_related_regress/tests.py
+++ b/tests/regressiontests/select_related_regress/tests.py
@@ -1,4 +1,4 @@
-from __future__ import absolute_import
+from __future__ import absolute_import, unicode_literals
from django.test import TestCase
@@ -34,11 +34,11 @@ class SelectRelatedRegressTests(TestCase):
connections=Connection.objects.filter(start__device__building=b, end__device__building=b).order_by('id')
self.assertEqual([(c.id, unicode(c.start), unicode(c.end)) for c in connections],
- [(c1.id, u'router/4', u'switch/7'), (c2.id, u'switch/7', u'server/1')])
+ [(c1.id, 'router/4', 'switch/7'), (c2.id, 'switch/7', 'server/1')])
connections=Connection.objects.filter(start__device__building=b, end__device__building=b).select_related().order_by('id')
self.assertEqual([(c.id, unicode(c.start), unicode(c.end)) for c in connections],
- [(c1.id, u'router/4', u'switch/7'), (c2.id, u'switch/7', u'server/1')])
+ [(c1.id, 'router/4', 'switch/7'), (c2.id, 'switch/7', 'server/1')])
# This final query should only have seven tables (port, device and building
# twice each, plus connection once). Thus, 6 joins plus the FROM table.
@@ -64,8 +64,8 @@ class SelectRelatedRegressTests(TestCase):
e = Enrollment.objects.create(std=s, cls=c)
e_related = Enrollment.objects.all().select_related()[0]
- self.assertEqual(e_related.std.person.user.name, u"std")
- self.assertEqual(e_related.cls.org.person.user.name, u"org")
+ self.assertEqual(e_related.std.person.user.name, "std")
+ self.assertEqual(e_related.cls.org.person.user.name, "org")
def test_regression_8036(self):
"""
@@ -114,27 +114,27 @@ class SelectRelatedRegressTests(TestCase):
c1 = Client.objects.create(name='Brian Burke', state=wa, status=active)
burke = Client.objects.select_related('state').defer('state__name').get(name='Brian Burke')
- self.assertEqual(burke.name, u'Brian Burke')
- self.assertEqual(burke.state.name, u'Western Australia')
+ self.assertEqual(burke.name, 'Brian Burke')
+ self.assertEqual(burke.state.name, 'Western Australia')
# Still works if we're dealing with an inherited class
sc1 = SpecialClient.objects.create(name='Troy Buswell', state=wa, status=active, value=42)
troy = SpecialClient.objects.select_related('state').defer('state__name').get(name='Troy Buswell')
- self.assertEqual(troy.name, u'Troy Buswell')
+ self.assertEqual(troy.name, 'Troy Buswell')
self.assertEqual(troy.value, 42)
- self.assertEqual(troy.state.name, u'Western Australia')
+ self.assertEqual(troy.state.name, 'Western Australia')
# Still works if we defer an attribute on the inherited class
troy = SpecialClient.objects.select_related('state').defer('value', 'state__name').get(name='Troy Buswell')
- self.assertEqual(troy.name, u'Troy Buswell')
+ self.assertEqual(troy.name, 'Troy Buswell')
self.assertEqual(troy.value, 42)
- self.assertEqual(troy.state.name, u'Western Australia')
+ self.assertEqual(troy.state.name, 'Western Australia')
# Also works if you use only, rather than defer
troy = SpecialClient.objects.select_related('state').only('name').get(name='Troy Buswell')
- self.assertEqual(troy.name, u'Troy Buswell')
+ self.assertEqual(troy.name, 'Troy Buswell')
self.assertEqual(troy.value, 42)
- self.assertEqual(troy.state.name, u'Western Australia')
+ self.assertEqual(troy.state.name, 'Western Australia')
diff --git a/tests/regressiontests/serializers_regress/tests.py b/tests/regressiontests/serializers_regress/tests.py
index 6930fbf393..f1b70a1d2e 100644
--- a/tests/regressiontests/serializers_regress/tests.py
+++ b/tests/regressiontests/serializers_regress/tests.py
@@ -6,7 +6,7 @@ test case that is capable of testing the capabilities of
the serializers. This includes all valid data values, plus
forward, backwards and self references.
"""
-from __future__ import absolute_import
+from __future__ import absolute_import, unicode_literals
import datetime
import decimal
@@ -183,7 +183,7 @@ test_data = [
(data_obj, 15, CharData, None),
# (We use something that will fit into a latin1 database encoding here,
# because that is still the default used on many system setups.)
- (data_obj, 16, CharData, u'\xa5'),
+ (data_obj, 16, CharData, '\xa5'),
(data_obj, 20, DateData, datetime.date(2006,6,16)),
(data_obj, 21, DateData, None),
(data_obj, 30, DateTimeData, datetime.datetime(2006,6,16,10,42,37)),
diff --git a/tests/regressiontests/signed_cookies_tests/tests.py b/tests/regressiontests/signed_cookies_tests/tests.py
index 5a0b5f9aa4..800092a2d7 100644
--- a/tests/regressiontests/signed_cookies_tests/tests.py
+++ b/tests/regressiontests/signed_cookies_tests/tests.py
@@ -1,3 +1,5 @@
+from __future__ import unicode_literals
+
import time
from django.core import signing
@@ -15,7 +17,7 @@ class SignedCookieTest(TestCase):
request = HttpRequest()
request.COOKIES['c'] = response.cookies['c'].value
value = request.get_signed_cookie('c')
- self.assertEqual(value, u'hello')
+ self.assertEqual(value, 'hello')
def test_can_use_salt(self):
response = HttpResponse()
@@ -23,7 +25,7 @@ class SignedCookieTest(TestCase):
request = HttpRequest()
request.COOKIES['a'] = response.cookies['a'].value
value = request.get_signed_cookie('a', salt='one')
- self.assertEqual(value, u'hello')
+ self.assertEqual(value, 'hello')
self.assertRaises(signing.BadSignature,
request.get_signed_cookie, 'a', salt='two')
@@ -43,7 +45,7 @@ class SignedCookieTest(TestCase):
self.assertEqual(request.get_signed_cookie('c', default=None), None)
def test_max_age_argument(self):
- value = u'hello'
+ value = 'hello'
_time = time.time
time.time = lambda: 123456789
try:
diff --git a/tests/regressiontests/signing/tests.py b/tests/regressiontests/signing/tests.py
index 1da3345806..f3fe5f3ec7 100644
--- a/tests/regressiontests/signing/tests.py
+++ b/tests/regressiontests/signing/tests.py
@@ -1,3 +1,5 @@
+from __future__ import unicode_literals
+
import time
from django.core import signing
@@ -14,7 +16,7 @@ class TestSigner(TestCase):
for s in (
b'hello',
b'3098247:529:087:',
- u'\u2019'.encode('utf-8'),
+ '\u2019'.encode('utf-8'),
):
self.assertEqual(
signer.signature(s),
@@ -42,7 +44,7 @@ class TestSigner(TestCase):
'3098247529087',
'3098247:529:087:',
'jkw osanteuh ,rcuh nthu aou oauh ,ud du',
- u'\u2019',
+ '\u2019',
)
for example in examples:
self.assertNotEqual(
@@ -70,7 +72,7 @@ class TestSigner(TestCase):
objects = (
['a', 'list'],
b'a string',
- u'a unicode string \u2019',
+ 'a unicode string \u2019',
{'a': 'dictionary'},
)
for o in objects:
@@ -98,7 +100,7 @@ class TestSigner(TestCase):
class TestTimestampSigner(TestCase):
def test_timestamp_signer(self):
- value = u'hello'
+ value = 'hello'
_time = time.time
time.time = lambda: 123456789
try:
diff --git a/tests/regressiontests/staticfiles_tests/tests.py b/tests/regressiontests/staticfiles_tests/tests.py
index 3711d92448..8321fc2365 100644
--- a/tests/regressiontests/staticfiles_tests/tests.py
+++ b/tests/regressiontests/staticfiles_tests/tests.py
@@ -1,4 +1,5 @@
# -*- encoding: utf-8 -*-
+from __future__ import unicode_literals
import codecs
import os
@@ -56,9 +57,9 @@ class BaseStaticFilesTestCase(object):
testfiles_path = os.path.join(TEST_ROOT, 'apps', 'test', 'static', 'test')
# To make sure SVN doesn't hangs itself with the non-ASCII characters
# during checkout, we actually create one file dynamically.
- self._nonascii_filepath = os.path.join(testfiles_path, u'fi\u015fier.txt')
+ self._nonascii_filepath = os.path.join(testfiles_path, 'fi\u015fier.txt')
with codecs.open(self._nonascii_filepath, 'w', 'utf-8') as f:
- f.write(u"fi\u015fier in the app dir")
+ f.write("fi\u015fier in the app dir")
# And also create the stupid hidden file to dwarf the setup.py's
# package data handling.
self._hidden_filepath = os.path.join(testfiles_path, '.hidden')
@@ -76,7 +77,7 @@ class BaseStaticFilesTestCase(object):
def assertFileContains(self, filepath, text):
self.assertIn(text, self._get_file(smart_unicode(filepath)),
- u"'%s' not in '%s'" % (text, filepath))
+ "'%s' not in '%s'" % (text, filepath))
def assertFileNotFound(self, filepath):
self.assertRaises(IOError, self._get_file, filepath)
@@ -173,13 +174,13 @@ class TestDefaults(object):
"""
Can find a file with non-ASCII character in an app static/ directory.
"""
- self.assertFileContains(u'test/fişier.txt', u'fişier in the app dir')
+ self.assertFileContains('test/fişier.txt', 'fişier in the app dir')
def test_camelcase_filenames(self):
"""
Can find a file with capital letters.
"""
- self.assertFileContains(u'test/camelCase.txt', u'camelCase')
+ self.assertFileContains('test/camelCase.txt', 'camelCase')
class TestFindStatic(CollectionTestCase, TestDefaults):
diff --git a/tests/regressiontests/string_lookup/tests.py b/tests/regressiontests/string_lookup/tests.py
index b3f90169ca..02f766adce 100644
--- a/tests/regressiontests/string_lookup/tests.py
+++ b/tests/regressiontests/string_lookup/tests.py
@@ -1,5 +1,5 @@
# -*- coding: utf-8 -*-
-from __future__ import absolute_import
+from __future__ import absolute_import, unicode_literals
from django.test import TestCase
from .models import Foo, Whiz, Bar, Article, Base, Child
@@ -49,9 +49,9 @@ class StringLookupTests(TestCase):
A properly configured UTF-8 database can handle this.
"""
- fx = Foo(name='Bjorn', friend=u'François')
+ fx = Foo(name='Bjorn', friend='François')
fx.save()
- self.assertEqual(Foo.objects.get(friend__contains=u'\xe7'), fx)
+ self.assertEqual(Foo.objects.get(friend__contains='\xe7'), fx)
# We can also do the above query using UTF-8 strings.
self.assertEqual(Foo.objects.get(friend__contains=b'\xc3\xa7'), fx)
diff --git a/tests/regressiontests/syndication/feeds.py b/tests/regressiontests/syndication/feeds.py
index 41feb89550..748420c9d2 100644
--- a/tests/regressiontests/syndication/feeds.py
+++ b/tests/regressiontests/syndication/feeds.py
@@ -1,4 +1,4 @@
-from __future__ import absolute_import
+from __future__ import absolute_import, unicode_literals
from django.contrib.syndication import views
from django.core.exceptions import ObjectDoesNotExist
@@ -105,21 +105,21 @@ class MyCustomAtom1Feed(feedgenerator.Atom1Feed):
"""
def root_attributes(self):
attrs = super(MyCustomAtom1Feed, self).root_attributes()
- attrs[u'django'] = u'rocks'
+ attrs['django'] = 'rocks'
return attrs
def add_root_elements(self, handler):
super(MyCustomAtom1Feed, self).add_root_elements(handler)
- handler.addQuickElement(u'spam', u'eggs')
+ handler.addQuickElement('spam', 'eggs')
def item_attributes(self, item):
attrs = super(MyCustomAtom1Feed, self).item_attributes(item)
- attrs[u'bacon'] = u'yum'
+ attrs['bacon'] = 'yum'
return attrs
def add_item_elements(self, handler, item):
super(MyCustomAtom1Feed, self).add_item_elements(handler, item)
- handler.addQuickElement(u'ministry', u'silly walks')
+ handler.addQuickElement('ministry', 'silly walks')
class TestCustomFeed(TestAtomFeed):
diff --git a/tests/regressiontests/syndication/tests.py b/tests/regressiontests/syndication/tests.py
index 95b4efb4f4..1790d8cae6 100644
--- a/tests/regressiontests/syndication/tests.py
+++ b/tests/regressiontests/syndication/tests.py
@@ -1,4 +1,4 @@
-from __future__ import absolute_import
+from __future__ import absolute_import, unicode_literals
from xml.dom import minidom
@@ -199,7 +199,7 @@ class SyndicationFeedTest(FeedTestCase):
link = item.getElementsByTagName('link')[0]
if link.firstChild.wholeText == 'http://example.com/blog/4/':
title = item.getElementsByTagName('title')[0]
- self.assertEqual(title.firstChild.wholeText, u'A &amp; B &lt; C &gt; D')
+ self.assertEqual(title.firstChild.wholeText, 'A &amp; B &lt; C &gt; D')
def test_naive_datetime_conversion(self):
"""
diff --git a/tests/regressiontests/templates/callables.py b/tests/regressiontests/templates/callables.py
index 8afa703f63..882a8c6e06 100644
--- a/tests/regressiontests/templates/callables.py
+++ b/tests/regressiontests/templates/callables.py
@@ -1,3 +1,5 @@
+from __future__ import unicode_literals
+
from django import template
from django.utils.unittest import TestCase
@@ -20,7 +22,7 @@ class CallableVariablesTests(TestCase):
# ``my_doodad.__call__`` will be invoked first, yielding a dictionary
# without a key ``value``.
t = template.Template('{{ my_doodad.value }}')
- self.assertEqual(t.render(c), u'')
+ self.assertEqual(t.render(c), '')
# We can confirm that the doodad has been called
self.assertEqual(my_doodad.num_calls, 1)
@@ -28,7 +30,7 @@ class CallableVariablesTests(TestCase):
# But we can access keys on the dict that's returned
# by ``__call__``, instead.
t = template.Template('{{ my_doodad.the_value }}')
- self.assertEqual(t.render(c), u'42')
+ self.assertEqual(t.render(c), '42')
self.assertEqual(my_doodad.num_calls, 2)
def test_alters_data(self):
@@ -48,9 +50,9 @@ class CallableVariablesTests(TestCase):
# Since ``my_doodad.alters_data`` is True, the template system will not
# try to call our doodad but will use TEMPLATE_STRING_IF_INVALID
t = template.Template('{{ my_doodad.value }}')
- self.assertEqual(t.render(c), u'')
+ self.assertEqual(t.render(c), '')
t = template.Template('{{ my_doodad.the_value }}')
- self.assertEqual(t.render(c), u'')
+ self.assertEqual(t.render(c), '')
# Double-check that the object was really never called during the
# template rendering.
@@ -75,9 +77,9 @@ class CallableVariablesTests(TestCase):
# as normal, and we don't have access to the dict that it returns when
# called.
t = template.Template('{{ my_doodad.value }}')
- self.assertEqual(t.render(c), u'42')
+ self.assertEqual(t.render(c), '42')
t = template.Template('{{ my_doodad.the_value }}')
- self.assertEqual(t.render(c), u'')
+ self.assertEqual(t.render(c), '')
# Double-check that the object was really never called during the
# template rendering.
@@ -102,9 +104,9 @@ class CallableVariablesTests(TestCase):
c = template.Context({"my_doodad": my_doodad})
t = template.Template('{{ my_doodad.value }}')
- self.assertEqual(t.render(c), u'42')
+ self.assertEqual(t.render(c), '42')
t = template.Template('{{ my_doodad.the_value }}')
- self.assertEqual(t.render(c), u'')
+ self.assertEqual(t.render(c), '')
# Double-check that the object was really never called during the
# template rendering.
diff --git a/tests/regressiontests/templates/custom.py b/tests/regressiontests/templates/custom.py
index 6bbbe35f03..4e295d990e 100644
--- a/tests/regressiontests/templates/custom.py
+++ b/tests/regressiontests/templates/custom.py
@@ -1,4 +1,4 @@
-from __future__ import absolute_import
+from __future__ import absolute_import, unicode_literals
from django import template
from django.utils.unittest import TestCase
@@ -11,7 +11,7 @@ class CustomFilterTests(TestCase):
t = template.Template("{% load custom %}{{ string|trim:5 }}")
self.assertEqual(
t.render(template.Context({"string": "abcdefghijklmnopqrstuvwxyz"})),
- u"abcde"
+ "abcde"
)
@@ -25,50 +25,50 @@ class CustomTagTests(TestCase):
c = template.Context({'value': 42})
t = template.Template('{% load custom %}{% no_params %}')
- self.assertEqual(t.render(c), u'no_params - Expected result')
+ self.assertEqual(t.render(c), 'no_params - Expected result')
t = template.Template('{% load custom %}{% one_param 37 %}')
- self.assertEqual(t.render(c), u'one_param - Expected result: 37')
+ self.assertEqual(t.render(c), 'one_param - Expected result: 37')
t = template.Template('{% load custom %}{% explicit_no_context 37 %}')
- self.assertEqual(t.render(c), u'explicit_no_context - Expected result: 37')
+ self.assertEqual(t.render(c), 'explicit_no_context - Expected result: 37')
t = template.Template('{% load custom %}{% no_params_with_context %}')
- self.assertEqual(t.render(c), u'no_params_with_context - Expected result (context value: 42)')
+ self.assertEqual(t.render(c), 'no_params_with_context - Expected result (context value: 42)')
t = template.Template('{% load custom %}{% params_and_context 37 %}')
- self.assertEqual(t.render(c), u'params_and_context - Expected result (context value: 42): 37')
+ self.assertEqual(t.render(c), 'params_and_context - Expected result (context value: 42): 37')
t = template.Template('{% load custom %}{% simple_two_params 37 42 %}')
- self.assertEqual(t.render(c), u'simple_two_params - Expected result: 37, 42')
+ self.assertEqual(t.render(c), 'simple_two_params - Expected result: 37, 42')
t = template.Template('{% load custom %}{% simple_one_default 37 %}')
- self.assertEqual(t.render(c), u'simple_one_default - Expected result: 37, hi')
+ self.assertEqual(t.render(c), 'simple_one_default - Expected result: 37, hi')
t = template.Template('{% load custom %}{% simple_one_default 37 two="hello" %}')
- self.assertEqual(t.render(c), u'simple_one_default - Expected result: 37, hello')
+ self.assertEqual(t.render(c), 'simple_one_default - Expected result: 37, hello')
t = template.Template('{% load custom %}{% simple_one_default one=99 two="hello" %}')
- self.assertEqual(t.render(c), u'simple_one_default - Expected result: 99, hello')
+ self.assertEqual(t.render(c), 'simple_one_default - Expected result: 99, hello')
self.assertRaisesRegexp(template.TemplateSyntaxError,
"'simple_one_default' received unexpected keyword argument 'three'",
template.Template, '{% load custom %}{% simple_one_default 99 two="hello" three="foo" %}')
t = template.Template('{% load custom %}{% simple_one_default 37 42 %}')
- self.assertEqual(t.render(c), u'simple_one_default - Expected result: 37, 42')
+ self.assertEqual(t.render(c), 'simple_one_default - Expected result: 37, 42')
t = template.Template('{% load custom %}{% simple_unlimited_args 37 %}')
- self.assertEqual(t.render(c), u'simple_unlimited_args - Expected result: 37, hi')
+ self.assertEqual(t.render(c), 'simple_unlimited_args - Expected result: 37, hi')
t = template.Template('{% load custom %}{% simple_unlimited_args 37 42 56 89 %}')
- self.assertEqual(t.render(c), u'simple_unlimited_args - Expected result: 37, 42, 56, 89')
+ self.assertEqual(t.render(c), 'simple_unlimited_args - Expected result: 37, 42, 56, 89')
t = template.Template('{% load custom %}{% simple_only_unlimited_args %}')
- self.assertEqual(t.render(c), u'simple_only_unlimited_args - Expected result: ')
+ self.assertEqual(t.render(c), 'simple_only_unlimited_args - Expected result: ')
t = template.Template('{% load custom %}{% simple_only_unlimited_args 37 42 56 89 %}')
- self.assertEqual(t.render(c), u'simple_only_unlimited_args - Expected result: 37, 42, 56, 89')
+ self.assertEqual(t.render(c), 'simple_only_unlimited_args - Expected result: 37, 42, 56, 89')
self.assertRaisesRegexp(template.TemplateSyntaxError,
"'simple_two_params' received too many positional arguments",
@@ -79,7 +79,7 @@ class CustomTagTests(TestCase):
template.Template, '{% load custom %}{% simple_one_default 37 42 56 %}')
t = template.Template('{% load custom %}{% simple_unlimited_args_kwargs 37 40|add:2 56 eggs="scrambled" four=1|add:3 %}')
- self.assertEqual(t.render(c), u'simple_unlimited_args_kwargs - Expected result: 37, 42, 56 / eggs=scrambled, four=4')
+ self.assertEqual(t.render(c), 'simple_unlimited_args_kwargs - Expected result: 37, 42, 56 / eggs=scrambled, four=4')
self.assertRaisesRegexp(template.TemplateSyntaxError,
"'simple_unlimited_args_kwargs' received some positional argument\(s\) after some keyword argument\(s\)",
@@ -109,50 +109,50 @@ class CustomTagTests(TestCase):
c = template.Context({'value': 42})
t = template.Template('{% load custom %}{% inclusion_no_params %}')
- self.assertEqual(t.render(c), u'inclusion_no_params - Expected result\n')
+ self.assertEqual(t.render(c), 'inclusion_no_params - Expected result\n')
t = template.Template('{% load custom %}{% inclusion_one_param 37 %}')
- self.assertEqual(t.render(c), u'inclusion_one_param - Expected result: 37\n')
+ self.assertEqual(t.render(c), 'inclusion_one_param - Expected result: 37\n')
t = template.Template('{% load custom %}{% inclusion_explicit_no_context 37 %}')
- self.assertEqual(t.render(c), u'inclusion_explicit_no_context - Expected result: 37\n')
+ self.assertEqual(t.render(c), 'inclusion_explicit_no_context - Expected result: 37\n')
t = template.Template('{% load custom %}{% inclusion_no_params_with_context %}')
- self.assertEqual(t.render(c), u'inclusion_no_params_with_context - Expected result (context value: 42)\n')
+ self.assertEqual(t.render(c), 'inclusion_no_params_with_context - Expected result (context value: 42)\n')
t = template.Template('{% load custom %}{% inclusion_params_and_context 37 %}')
- self.assertEqual(t.render(c), u'inclusion_params_and_context - Expected result (context value: 42): 37\n')
+ self.assertEqual(t.render(c), 'inclusion_params_and_context - Expected result (context value: 42): 37\n')
t = template.Template('{% load custom %}{% inclusion_two_params 37 42 %}')
- self.assertEqual(t.render(c), u'inclusion_two_params - Expected result: 37, 42\n')
+ self.assertEqual(t.render(c), 'inclusion_two_params - Expected result: 37, 42\n')
t = template.Template('{% load custom %}{% inclusion_one_default 37 %}')
- self.assertEqual(t.render(c), u'inclusion_one_default - Expected result: 37, hi\n')
+ self.assertEqual(t.render(c), 'inclusion_one_default - Expected result: 37, hi\n')
t = template.Template('{% load custom %}{% inclusion_one_default 37 two="hello" %}')
- self.assertEqual(t.render(c), u'inclusion_one_default - Expected result: 37, hello\n')
+ self.assertEqual(t.render(c), 'inclusion_one_default - Expected result: 37, hello\n')
t = template.Template('{% load custom %}{% inclusion_one_default one=99 two="hello" %}')
- self.assertEqual(t.render(c), u'inclusion_one_default - Expected result: 99, hello\n')
+ self.assertEqual(t.render(c), 'inclusion_one_default - Expected result: 99, hello\n')
self.assertRaisesRegexp(template.TemplateSyntaxError,
"'inclusion_one_default' received unexpected keyword argument 'three'",
template.Template, '{% load custom %}{% inclusion_one_default 99 two="hello" three="foo" %}')
t = template.Template('{% load custom %}{% inclusion_one_default 37 42 %}')
- self.assertEqual(t.render(c), u'inclusion_one_default - Expected result: 37, 42\n')
+ self.assertEqual(t.render(c), 'inclusion_one_default - Expected result: 37, 42\n')
t = template.Template('{% load custom %}{% inclusion_unlimited_args 37 %}')
- self.assertEqual(t.render(c), u'inclusion_unlimited_args - Expected result: 37, hi\n')
+ self.assertEqual(t.render(c), 'inclusion_unlimited_args - Expected result: 37, hi\n')
t = template.Template('{% load custom %}{% inclusion_unlimited_args 37 42 56 89 %}')
- self.assertEqual(t.render(c), u'inclusion_unlimited_args - Expected result: 37, 42, 56, 89\n')
+ self.assertEqual(t.render(c), 'inclusion_unlimited_args - Expected result: 37, 42, 56, 89\n')
t = template.Template('{% load custom %}{% inclusion_only_unlimited_args %}')
- self.assertEqual(t.render(c), u'inclusion_only_unlimited_args - Expected result: \n')
+ self.assertEqual(t.render(c), 'inclusion_only_unlimited_args - Expected result: \n')
t = template.Template('{% load custom %}{% inclusion_only_unlimited_args 37 42 56 89 %}')
- self.assertEqual(t.render(c), u'inclusion_only_unlimited_args - Expected result: 37, 42, 56, 89\n')
+ self.assertEqual(t.render(c), 'inclusion_only_unlimited_args - Expected result: 37, 42, 56, 89\n')
self.assertRaisesRegexp(template.TemplateSyntaxError,
"'inclusion_two_params' received too many positional arguments",
@@ -171,7 +171,7 @@ class CustomTagTests(TestCase):
template.Template, '{% load custom %}{% inclusion_unlimited_args %}')
t = template.Template('{% load custom %}{% inclusion_unlimited_args_kwargs 37 40|add:2 56 eggs="scrambled" four=1|add:3 %}')
- self.assertEqual(t.render(c), u'inclusion_unlimited_args_kwargs - Expected result: 37, 42, 56 / eggs=scrambled, four=4\n')
+ self.assertEqual(t.render(c), 'inclusion_unlimited_args_kwargs - Expected result: 37, 42, 56 / eggs=scrambled, four=4\n')
self.assertRaisesRegexp(template.TemplateSyntaxError,
"'inclusion_unlimited_args_kwargs' received some positional argument\(s\) after some keyword argument\(s\)",
@@ -191,40 +191,40 @@ class CustomTagTests(TestCase):
c = template.Context({'value': 42})
t = template.Template('{% load custom %}{% inclusion_no_params_from_template %}')
- self.assertEqual(t.render(c), u'inclusion_no_params_from_template - Expected result\n')
+ self.assertEqual(t.render(c), 'inclusion_no_params_from_template - Expected result\n')
t = template.Template('{% load custom %}{% inclusion_one_param_from_template 37 %}')
- self.assertEqual(t.render(c), u'inclusion_one_param_from_template - Expected result: 37\n')
+ self.assertEqual(t.render(c), 'inclusion_one_param_from_template - Expected result: 37\n')
t = template.Template('{% load custom %}{% inclusion_explicit_no_context_from_template 37 %}')
- self.assertEqual(t.render(c), u'inclusion_explicit_no_context_from_template - Expected result: 37\n')
+ self.assertEqual(t.render(c), 'inclusion_explicit_no_context_from_template - Expected result: 37\n')
t = template.Template('{% load custom %}{% inclusion_no_params_with_context_from_template %}')
- self.assertEqual(t.render(c), u'inclusion_no_params_with_context_from_template - Expected result (context value: 42)\n')
+ self.assertEqual(t.render(c), 'inclusion_no_params_with_context_from_template - Expected result (context value: 42)\n')
t = template.Template('{% load custom %}{% inclusion_params_and_context_from_template 37 %}')
- self.assertEqual(t.render(c), u'inclusion_params_and_context_from_template - Expected result (context value: 42): 37\n')
+ self.assertEqual(t.render(c), 'inclusion_params_and_context_from_template - Expected result (context value: 42): 37\n')
t = template.Template('{% load custom %}{% inclusion_two_params_from_template 37 42 %}')
- self.assertEqual(t.render(c), u'inclusion_two_params_from_template - Expected result: 37, 42\n')
+ self.assertEqual(t.render(c), 'inclusion_two_params_from_template - Expected result: 37, 42\n')
t = template.Template('{% load custom %}{% inclusion_one_default_from_template 37 %}')
- self.assertEqual(t.render(c), u'inclusion_one_default_from_template - Expected result: 37, hi\n')
+ self.assertEqual(t.render(c), 'inclusion_one_default_from_template - Expected result: 37, hi\n')
t = template.Template('{% load custom %}{% inclusion_one_default_from_template 37 42 %}')
- self.assertEqual(t.render(c), u'inclusion_one_default_from_template - Expected result: 37, 42\n')
+ self.assertEqual(t.render(c), 'inclusion_one_default_from_template - Expected result: 37, 42\n')
t = template.Template('{% load custom %}{% inclusion_unlimited_args_from_template 37 %}')
- self.assertEqual(t.render(c), u'inclusion_unlimited_args_from_template - Expected result: 37, hi\n')
+ self.assertEqual(t.render(c), 'inclusion_unlimited_args_from_template - Expected result: 37, hi\n')
t = template.Template('{% load custom %}{% inclusion_unlimited_args_from_template 37 42 56 89 %}')
- self.assertEqual(t.render(c), u'inclusion_unlimited_args_from_template - Expected result: 37, 42, 56, 89\n')
+ self.assertEqual(t.render(c), 'inclusion_unlimited_args_from_template - Expected result: 37, 42, 56, 89\n')
t = template.Template('{% load custom %}{% inclusion_only_unlimited_args_from_template %}')
- self.assertEqual(t.render(c), u'inclusion_only_unlimited_args_from_template - Expected result: \n')
+ self.assertEqual(t.render(c), 'inclusion_only_unlimited_args_from_template - Expected result: \n')
t = template.Template('{% load custom %}{% inclusion_only_unlimited_args_from_template 37 42 56 89 %}')
- self.assertEqual(t.render(c), u'inclusion_only_unlimited_args_from_template - Expected result: 37, 42, 56, 89\n')
+ self.assertEqual(t.render(c), 'inclusion_only_unlimited_args_from_template - Expected result: 37, 42, 56, 89\n')
def test_inclusion_tag_registration(self):
# Test that the decorators preserve the decorated function's docstring, name and attributes.
@@ -249,10 +249,10 @@ class CustomTagTests(TestCase):
"""
c = template.Context({})
t = template.Template('{% load custom %}{% inclusion_tag_current_app %}')
- self.assertEqual(t.render(c).strip(), u'None')
+ self.assertEqual(t.render(c).strip(), 'None')
c.current_app = 'advanced'
- self.assertEqual(t.render(c).strip(), u'advanced')
+ self.assertEqual(t.render(c).strip(), 'advanced')
def test_15070_use_l10n(self):
"""
@@ -261,59 +261,59 @@ class CustomTagTests(TestCase):
"""
c = template.Context({})
t = template.Template('{% load custom %}{% inclusion_tag_use_l10n %}')
- self.assertEqual(t.render(c).strip(), u'None')
+ self.assertEqual(t.render(c).strip(), 'None')
c.use_l10n = True
- self.assertEqual(t.render(c).strip(), u'True')
+ self.assertEqual(t.render(c).strip(), 'True')
def test_assignment_tags(self):
c = template.Context({'value': 42})
t = template.Template('{% load custom %}{% assignment_no_params as var %}The result is: {{ var }}')
- self.assertEqual(t.render(c), u'The result is: assignment_no_params - Expected result')
+ self.assertEqual(t.render(c), 'The result is: assignment_no_params - Expected result')
t = template.Template('{% load custom %}{% assignment_one_param 37 as var %}The result is: {{ var }}')
- self.assertEqual(t.render(c), u'The result is: assignment_one_param - Expected result: 37')
+ self.assertEqual(t.render(c), 'The result is: assignment_one_param - Expected result: 37')
t = template.Template('{% load custom %}{% assignment_explicit_no_context 37 as var %}The result is: {{ var }}')
- self.assertEqual(t.render(c), u'The result is: assignment_explicit_no_context - Expected result: 37')
+ self.assertEqual(t.render(c), 'The result is: assignment_explicit_no_context - Expected result: 37')
t = template.Template('{% load custom %}{% assignment_no_params_with_context as var %}The result is: {{ var }}')
- self.assertEqual(t.render(c), u'The result is: assignment_no_params_with_context - Expected result (context value: 42)')
+ self.assertEqual(t.render(c), 'The result is: assignment_no_params_with_context - Expected result (context value: 42)')
t = template.Template('{% load custom %}{% assignment_params_and_context 37 as var %}The result is: {{ var }}')
- self.assertEqual(t.render(c), u'The result is: assignment_params_and_context - Expected result (context value: 42): 37')
+ self.assertEqual(t.render(c), 'The result is: assignment_params_and_context - Expected result (context value: 42): 37')
t = template.Template('{% load custom %}{% assignment_two_params 37 42 as var %}The result is: {{ var }}')
- self.assertEqual(t.render(c), u'The result is: assignment_two_params - Expected result: 37, 42')
+ self.assertEqual(t.render(c), 'The result is: assignment_two_params - Expected result: 37, 42')
t = template.Template('{% load custom %}{% assignment_one_default 37 as var %}The result is: {{ var }}')
- self.assertEqual(t.render(c), u'The result is: assignment_one_default - Expected result: 37, hi')
+ self.assertEqual(t.render(c), 'The result is: assignment_one_default - Expected result: 37, hi')
t = template.Template('{% load custom %}{% assignment_one_default 37 two="hello" as var %}The result is: {{ var }}')
- self.assertEqual(t.render(c), u'The result is: assignment_one_default - Expected result: 37, hello')
+ self.assertEqual(t.render(c), 'The result is: assignment_one_default - Expected result: 37, hello')
t = template.Template('{% load custom %}{% assignment_one_default one=99 two="hello" as var %}The result is: {{ var }}')
- self.assertEqual(t.render(c), u'The result is: assignment_one_default - Expected result: 99, hello')
+ self.assertEqual(t.render(c), 'The result is: assignment_one_default - Expected result: 99, hello')
self.assertRaisesRegexp(template.TemplateSyntaxError,
"'assignment_one_default' received unexpected keyword argument 'three'",
template.Template, '{% load custom %}{% assignment_one_default 99 two="hello" three="foo" as var %}')
t = template.Template('{% load custom %}{% assignment_one_default 37 42 as var %}The result is: {{ var }}')
- self.assertEqual(t.render(c), u'The result is: assignment_one_default - Expected result: 37, 42')
+ self.assertEqual(t.render(c), 'The result is: assignment_one_default - Expected result: 37, 42')
t = template.Template('{% load custom %}{% assignment_unlimited_args 37 as var %}The result is: {{ var }}')
- self.assertEqual(t.render(c), u'The result is: assignment_unlimited_args - Expected result: 37, hi')
+ self.assertEqual(t.render(c), 'The result is: assignment_unlimited_args - Expected result: 37, hi')
t = template.Template('{% load custom %}{% assignment_unlimited_args 37 42 56 89 as var %}The result is: {{ var }}')
- self.assertEqual(t.render(c), u'The result is: assignment_unlimited_args - Expected result: 37, 42, 56, 89')
+ self.assertEqual(t.render(c), 'The result is: assignment_unlimited_args - Expected result: 37, 42, 56, 89')
t = template.Template('{% load custom %}{% assignment_only_unlimited_args as var %}The result is: {{ var }}')
- self.assertEqual(t.render(c), u'The result is: assignment_only_unlimited_args - Expected result: ')
+ self.assertEqual(t.render(c), 'The result is: assignment_only_unlimited_args - Expected result: ')
t = template.Template('{% load custom %}{% assignment_only_unlimited_args 37 42 56 89 as var %}The result is: {{ var }}')
- self.assertEqual(t.render(c), u'The result is: assignment_only_unlimited_args - Expected result: 37, 42, 56, 89')
+ self.assertEqual(t.render(c), 'The result is: assignment_only_unlimited_args - Expected result: 37, 42, 56, 89')
self.assertRaisesRegexp(template.TemplateSyntaxError,
"'assignment_one_param' tag takes at least 2 arguments and the second last argument must be 'as'",
@@ -344,7 +344,7 @@ class CustomTagTests(TestCase):
template.Template, '{% load custom %}{% assignment_unlimited_args as var %}The result is: {{ var }}')
t = template.Template('{% load custom %}{% assignment_unlimited_args_kwargs 37 40|add:2 56 eggs="scrambled" four=1|add:3 as var %}The result is: {{ var }}')
- self.assertEqual(t.render(c), u'The result is: assignment_unlimited_args_kwargs - Expected result: 37, 42, 56 / eggs=scrambled, four=4')
+ self.assertEqual(t.render(c), 'The result is: assignment_unlimited_args_kwargs - Expected result: 37, 42, 56 / eggs=scrambled, four=4')
self.assertRaisesRegexp(template.TemplateSyntaxError,
"'assignment_unlimited_args_kwargs' received some positional argument\(s\) after some keyword argument\(s\)",
diff --git a/tests/regressiontests/templates/filters.py b/tests/regressiontests/templates/filters.py
index 41f8e43c9e..fd570700af 100644
--- a/tests/regressiontests/templates/filters.py
+++ b/tests/regressiontests/templates/filters.py
@@ -6,20 +6,22 @@ The tests are hidden inside a function so that things like timestamps and
timezones are only evaluated at the moment of execution and will therefore be
consistent.
"""
+from __future__ import unicode_literals
from datetime import date, datetime, timedelta
+from django.test.utils import str_prefix
from django.utils.tzinfo import LocalTimezone, FixedOffset
from django.utils.safestring import mark_safe
# These two classes are used to test auto-escaping of __unicode__ output.
class UnsafeClass:
def __unicode__(self):
- return u'you & me'
+ return 'you & me'
class SafeClass:
def __unicode__(self):
- return mark_safe(u'you &gt; me')
+ return mark_safe('you &gt; me')
# RESULT SYNTAX --
# 'template_name': ('template contents', 'context dict',
@@ -84,66 +86,66 @@ def get_filter_tests():
'filter-timeuntil12' : ('{{ a|timeuntil:b }}', {'a': today, 'b': today}, '0 minutes'),
'filter-timeuntil13' : ('{{ a|timeuntil:b }}', {'a': today, 'b': today - timedelta(hours=24)}, '1 day'),
- 'filter-addslash01': ("{% autoescape off %}{{ a|addslashes }} {{ b|addslashes }}{% endautoescape %}", {"a": "<a>'", "b": mark_safe("<a>'")}, ur"<a>\' <a>\'"),
- 'filter-addslash02': ("{{ a|addslashes }} {{ b|addslashes }}", {"a": "<a>'", "b": mark_safe("<a>'")}, ur"&lt;a&gt;\&#39; <a>\'"),
+ 'filter-addslash01': ("{% autoescape off %}{{ a|addslashes }} {{ b|addslashes }}{% endautoescape %}", {"a": "<a>'", "b": mark_safe("<a>'")}, r"<a>\' <a>\'"),
+ 'filter-addslash02': ("{{ a|addslashes }} {{ b|addslashes }}", {"a": "<a>'", "b": mark_safe("<a>'")}, r"&lt;a&gt;\&#39; <a>\'"),
- 'filter-capfirst01': ("{% autoescape off %}{{ a|capfirst }} {{ b|capfirst }}{% endautoescape %}", {"a": "fred>", "b": mark_safe("fred&gt;")}, u"Fred> Fred&gt;"),
- 'filter-capfirst02': ("{{ a|capfirst }} {{ b|capfirst }}", {"a": "fred>", "b": mark_safe("fred&gt;")}, u"Fred&gt; Fred&gt;"),
+ 'filter-capfirst01': ("{% autoescape off %}{{ a|capfirst }} {{ b|capfirst }}{% endautoescape %}", {"a": "fred>", "b": mark_safe("fred&gt;")}, "Fred> Fred&gt;"),
+ 'filter-capfirst02': ("{{ a|capfirst }} {{ b|capfirst }}", {"a": "fred>", "b": mark_safe("fred&gt;")}, "Fred&gt; Fred&gt;"),
# Note that applying fix_ampsersands in autoescape mode leads to
# double escaping.
- 'filter-fix_ampersands01': ("{% autoescape off %}{{ a|fix_ampersands }} {{ b|fix_ampersands }}{% endautoescape %}", {"a": "a&b", "b": mark_safe("a&b")}, u"a&amp;b a&amp;b"),
- 'filter-fix_ampersands02': ("{{ a|fix_ampersands }} {{ b|fix_ampersands }}", {"a": "a&b", "b": mark_safe("a&b")}, u"a&amp;amp;b a&amp;b"),
+ 'filter-fix_ampersands01': ("{% autoescape off %}{{ a|fix_ampersands }} {{ b|fix_ampersands }}{% endautoescape %}", {"a": "a&b", "b": mark_safe("a&b")}, "a&amp;b a&amp;b"),
+ 'filter-fix_ampersands02': ("{{ a|fix_ampersands }} {{ b|fix_ampersands }}", {"a": "a&b", "b": mark_safe("a&b")}, "a&amp;amp;b a&amp;b"),
- 'filter-floatformat01': ("{% autoescape off %}{{ a|floatformat }} {{ b|floatformat }}{% endautoescape %}", {"a": "1.42", "b": mark_safe("1.42")}, u"1.4 1.4"),
- 'filter-floatformat02': ("{{ a|floatformat }} {{ b|floatformat }}", {"a": "1.42", "b": mark_safe("1.42")}, u"1.4 1.4"),
+ 'filter-floatformat01': ("{% autoescape off %}{{ a|floatformat }} {{ b|floatformat }}{% endautoescape %}", {"a": "1.42", "b": mark_safe("1.42")}, "1.4 1.4"),
+ 'filter-floatformat02': ("{{ a|floatformat }} {{ b|floatformat }}", {"a": "1.42", "b": mark_safe("1.42")}, "1.4 1.4"),
# The contents of "linenumbers" is escaped according to the current
# autoescape setting.
- 'filter-linenumbers01': ("{{ a|linenumbers }} {{ b|linenumbers }}", {"a": "one\n<two>\nthree", "b": mark_safe("one\n&lt;two&gt;\nthree")}, u"1. one\n2. &lt;two&gt;\n3. three 1. one\n2. &lt;two&gt;\n3. three"),
- 'filter-linenumbers02': ("{% autoescape off %}{{ a|linenumbers }} {{ b|linenumbers }}{% endautoescape %}", {"a": "one\n<two>\nthree", "b": mark_safe("one\n&lt;two&gt;\nthree")}, u"1. one\n2. <two>\n3. three 1. one\n2. &lt;two&gt;\n3. three"),
+ 'filter-linenumbers01': ("{{ a|linenumbers }} {{ b|linenumbers }}", {"a": "one\n<two>\nthree", "b": mark_safe("one\n&lt;two&gt;\nthree")}, "1. one\n2. &lt;two&gt;\n3. three 1. one\n2. &lt;two&gt;\n3. three"),
+ 'filter-linenumbers02': ("{% autoescape off %}{{ a|linenumbers }} {{ b|linenumbers }}{% endautoescape %}", {"a": "one\n<two>\nthree", "b": mark_safe("one\n&lt;two&gt;\nthree")}, "1. one\n2. <two>\n3. three 1. one\n2. &lt;two&gt;\n3. three"),
- 'filter-lower01': ("{% autoescape off %}{{ a|lower }} {{ b|lower }}{% endautoescape %}", {"a": "Apple & banana", "b": mark_safe("Apple &amp; banana")}, u"apple & banana apple &amp; banana"),
- 'filter-lower02': ("{{ a|lower }} {{ b|lower }}", {"a": "Apple & banana", "b": mark_safe("Apple &amp; banana")}, u"apple &amp; banana apple &amp; banana"),
+ 'filter-lower01': ("{% autoescape off %}{{ a|lower }} {{ b|lower }}{% endautoescape %}", {"a": "Apple & banana", "b": mark_safe("Apple &amp; banana")}, "apple & banana apple &amp; banana"),
+ 'filter-lower02': ("{{ a|lower }} {{ b|lower }}", {"a": "Apple & banana", "b": mark_safe("Apple &amp; banana")}, "apple &amp; banana apple &amp; banana"),
# The make_list filter can destroy existing escaping, so the results are
# escaped.
- 'filter-make_list01': ("{% autoescape off %}{{ a|make_list }}{% endautoescape %}", {"a": mark_safe("&")}, u"[u'&']"),
- 'filter-make_list02': ("{{ a|make_list }}", {"a": mark_safe("&")}, u"[u&#39;&amp;&#39;]"),
- 'filter-make_list03': ('{% autoescape off %}{{ a|make_list|stringformat:"s"|safe }}{% endautoescape %}', {"a": mark_safe("&")}, u"[u'&']"),
- 'filter-make_list04': ('{{ a|make_list|stringformat:"s"|safe }}', {"a": mark_safe("&")}, u"[u'&']"),
+ 'filter-make_list01': ("{% autoescape off %}{{ a|make_list }}{% endautoescape %}", {"a": mark_safe("&")}, str_prefix("[%(_)s'&']")),
+ 'filter-make_list02': ("{{ a|make_list }}", {"a": mark_safe("&")}, "[u&#39;&amp;&#39;]"),
+ 'filter-make_list03': ('{% autoescape off %}{{ a|make_list|stringformat:"s"|safe }}{% endautoescape %}', {"a": mark_safe("&")}, str_prefix("[%(_)s'&']")),
+ 'filter-make_list04': ('{{ a|make_list|stringformat:"s"|safe }}', {"a": mark_safe("&")}, str_prefix("[%(_)s'&']")),
# Running slugify on a pre-escaped string leads to odd behavior,
# but the result is still safe.
- 'filter-slugify01': ("{% autoescape off %}{{ a|slugify }} {{ b|slugify }}{% endautoescape %}", {"a": "a & b", "b": mark_safe("a &amp; b")}, u"a-b a-amp-b"),
- 'filter-slugify02': ("{{ a|slugify }} {{ b|slugify }}", {"a": "a & b", "b": mark_safe("a &amp; b")}, u"a-b a-amp-b"),
+ 'filter-slugify01': ("{% autoescape off %}{{ a|slugify }} {{ b|slugify }}{% endautoescape %}", {"a": "a & b", "b": mark_safe("a &amp; b")}, "a-b a-amp-b"),
+ 'filter-slugify02': ("{{ a|slugify }} {{ b|slugify }}", {"a": "a & b", "b": mark_safe("a &amp; b")}, "a-b a-amp-b"),
# Notice that escaping is applied *after* any filters, so the string
# formatting here only needs to deal with pre-escaped characters.
'filter-stringformat01': ('{% autoescape off %}.{{ a|stringformat:"5s" }}. .{{ b|stringformat:"5s" }}.{% endautoescape %}',
- {"a": "a<b", "b": mark_safe("a<b")}, u". a<b. . a<b."),
+ {"a": "a<b", "b": mark_safe("a<b")}, ". a<b. . a<b."),
'filter-stringformat02': ('.{{ a|stringformat:"5s" }}. .{{ b|stringformat:"5s" }}.', {"a": "a<b", "b": mark_safe("a<b")},
- u". a&lt;b. . a<b."),
+ ". a&lt;b. . a<b."),
# Test the title filter
- 'filter-title1' : ('{{ a|title }}', {'a' : 'JOE\'S CRAB SHACK'}, u'Joe&#39;s Crab Shack'),
- 'filter-title2' : ('{{ a|title }}', {'a' : '555 WEST 53RD STREET'}, u'555 West 53rd Street'),
+ 'filter-title1' : ('{{ a|title }}', {'a' : 'JOE\'S CRAB SHACK'}, 'Joe&#39;s Crab Shack'),
+ 'filter-title2' : ('{{ a|title }}', {'a' : '555 WEST 53RD STREET'}, '555 West 53rd Street'),
'filter-truncatewords01': ('{% autoescape off %}{{ a|truncatewords:"2" }} {{ b|truncatewords:"2"}}{% endautoescape %}',
- {"a": "alpha & bravo", "b": mark_safe("alpha &amp; bravo")}, u"alpha & ... alpha &amp; ..."),
+ {"a": "alpha & bravo", "b": mark_safe("alpha &amp; bravo")}, "alpha & ... alpha &amp; ..."),
'filter-truncatewords02': ('{{ a|truncatewords:"2" }} {{ b|truncatewords:"2"}}',
- {"a": "alpha & bravo", "b": mark_safe("alpha &amp; bravo")}, u"alpha &amp; ... alpha &amp; ..."),
+ {"a": "alpha & bravo", "b": mark_safe("alpha &amp; bravo")}, "alpha &amp; ... alpha &amp; ..."),
- 'filter-truncatechars01': ('{{ a|truncatechars:5 }}', {'a': "Testing, testing"}, u"Te..."),
- 'filter-truncatechars02': ('{{ a|truncatechars:7 }}', {'a': "Testing"}, u"Testing"),
+ 'filter-truncatechars01': ('{{ a|truncatechars:5 }}', {'a': "Testing, testing"}, "Te..."),
+ 'filter-truncatechars02': ('{{ a|truncatechars:7 }}', {'a': "Testing"}, "Testing"),
# The "upper" filter messes up entities (which are case-sensitive),
# so it's not safe for non-escaping purposes.
- 'filter-upper01': ('{% autoescape off %}{{ a|upper }} {{ b|upper }}{% endautoescape %}', {"a": "a & b", "b": mark_safe("a &amp; b")}, u"A & B A &AMP; B"),
- 'filter-upper02': ('{{ a|upper }} {{ b|upper }}', {"a": "a & b", "b": mark_safe("a &amp; b")}, u"A &amp; B A &amp;AMP; B"),
+ 'filter-upper01': ('{% autoescape off %}{{ a|upper }} {{ b|upper }}{% endautoescape %}', {"a": "a & b", "b": mark_safe("a &amp; b")}, "A & B A &AMP; B"),
+ 'filter-upper02': ('{{ a|upper }} {{ b|upper }}', {"a": "a & b", "b": mark_safe("a &amp; b")}, "A &amp; B A &amp;AMP; B"),
- 'filter-urlize01': ('{% autoescape off %}{{ a|urlize }} {{ b|urlize }}{% endautoescape %}', {"a": "http://example.com/?x=&y=", "b": mark_safe("http://example.com?x=&amp;y=")}, u'<a href="http://example.com/?x=&y=" rel="nofollow">http://example.com/?x=&y=</a> <a href="http://example.com?x=&amp;y=" rel="nofollow">http://example.com?x=&amp;y=</a>'),
- 'filter-urlize02': ('{{ a|urlize }} {{ b|urlize }}', {"a": "http://example.com/?x=&y=", "b": mark_safe("http://example.com?x=&amp;y=")}, u'<a href="http://example.com/?x=&amp;y=" rel="nofollow">http://example.com/?x=&amp;y=</a> <a href="http://example.com?x=&amp;y=" rel="nofollow">http://example.com?x=&amp;y=</a>'),
+ 'filter-urlize01': ('{% autoescape off %}{{ a|urlize }} {{ b|urlize }}{% endautoescape %}', {"a": "http://example.com/?x=&y=", "b": mark_safe("http://example.com?x=&amp;y=")}, '<a href="http://example.com/?x=&y=" rel="nofollow">http://example.com/?x=&y=</a> <a href="http://example.com?x=&amp;y=" rel="nofollow">http://example.com?x=&amp;y=</a>'),
+ 'filter-urlize02': ('{{ a|urlize }} {{ b|urlize }}', {"a": "http://example.com/?x=&y=", "b": mark_safe("http://example.com?x=&amp;y=")}, '<a href="http://example.com/?x=&amp;y=" rel="nofollow">http://example.com/?x=&amp;y=</a> <a href="http://example.com?x=&amp;y=" rel="nofollow">http://example.com?x=&amp;y=</a>'),
'filter-urlize03': ('{% autoescape off %}{{ a|urlize }}{% endautoescape %}', {"a": mark_safe("a &amp; b")}, 'a &amp; b'),
'filter-urlize04': ('{{ a|urlize }}', {"a": mark_safe("a &amp; b")}, 'a &amp; b'),
@@ -156,73 +158,73 @@ def get_filter_tests():
'filter-urlize07': ('{{ a|urlize }}', {"a": "Email me at me@example.com"}, 'Email me at <a href="mailto:me@example.com">me@example.com</a>'),
'filter-urlize08': ('{{ a|urlize }}', {"a": "Email me at <me@example.com>"}, 'Email me at &lt;<a href="mailto:me@example.com">me@example.com</a>&gt;'),
- 'filter-urlizetrunc01': ('{% autoescape off %}{{ a|urlizetrunc:"8" }} {{ b|urlizetrunc:"8" }}{% endautoescape %}', {"a": '"Unsafe" http://example.com/x=&y=', "b": mark_safe('&quot;Safe&quot; http://example.com?x=&amp;y=')}, u'"Unsafe" <a href="http://example.com/x=&y=" rel="nofollow">http:...</a> &quot;Safe&quot; <a href="http://example.com?x=&amp;y=" rel="nofollow">http:...</a>'),
- 'filter-urlizetrunc02': ('{{ a|urlizetrunc:"8" }} {{ b|urlizetrunc:"8" }}', {"a": '"Unsafe" http://example.com/x=&y=', "b": mark_safe('&quot;Safe&quot; http://example.com?x=&amp;y=')}, u'&quot;Unsafe&quot; <a href="http://example.com/x=&amp;y=" rel="nofollow">http:...</a> &quot;Safe&quot; <a href="http://example.com?x=&amp;y=" rel="nofollow">http:...</a>'),
+ 'filter-urlizetrunc01': ('{% autoescape off %}{{ a|urlizetrunc:"8" }} {{ b|urlizetrunc:"8" }}{% endautoescape %}', {"a": '"Unsafe" http://example.com/x=&y=', "b": mark_safe('&quot;Safe&quot; http://example.com?x=&amp;y=')}, '"Unsafe" <a href="http://example.com/x=&y=" rel="nofollow">http:...</a> &quot;Safe&quot; <a href="http://example.com?x=&amp;y=" rel="nofollow">http:...</a>'),
+ 'filter-urlizetrunc02': ('{{ a|urlizetrunc:"8" }} {{ b|urlizetrunc:"8" }}', {"a": '"Unsafe" http://example.com/x=&y=', "b": mark_safe('&quot;Safe&quot; http://example.com?x=&amp;y=')}, '&quot;Unsafe&quot; <a href="http://example.com/x=&amp;y=" rel="nofollow">http:...</a> &quot;Safe&quot; <a href="http://example.com?x=&amp;y=" rel="nofollow">http:...</a>'),
'filter-wordcount01': ('{% autoescape off %}{{ a|wordcount }} {{ b|wordcount }}{% endautoescape %}', {"a": "a & b", "b": mark_safe("a &amp; b")}, "3 3"),
'filter-wordcount02': ('{{ a|wordcount }} {{ b|wordcount }}', {"a": "a & b", "b": mark_safe("a &amp; b")}, "3 3"),
- 'filter-wordwrap01': ('{% autoescape off %}{{ a|wordwrap:"3" }} {{ b|wordwrap:"3" }}{% endautoescape %}', {"a": "a & b", "b": mark_safe("a & b")}, u"a &\nb a &\nb"),
- 'filter-wordwrap02': ('{{ a|wordwrap:"3" }} {{ b|wordwrap:"3" }}', {"a": "a & b", "b": mark_safe("a & b")}, u"a &amp;\nb a &\nb"),
+ 'filter-wordwrap01': ('{% autoescape off %}{{ a|wordwrap:"3" }} {{ b|wordwrap:"3" }}{% endautoescape %}', {"a": "a & b", "b": mark_safe("a & b")}, "a &\nb a &\nb"),
+ 'filter-wordwrap02': ('{{ a|wordwrap:"3" }} {{ b|wordwrap:"3" }}', {"a": "a & b", "b": mark_safe("a & b")}, "a &amp;\nb a &\nb"),
- 'filter-ljust01': ('{% autoescape off %}.{{ a|ljust:"5" }}. .{{ b|ljust:"5" }}.{% endautoescape %}', {"a": "a&b", "b": mark_safe("a&b")}, u".a&b . .a&b ."),
- 'filter-ljust02': ('.{{ a|ljust:"5" }}. .{{ b|ljust:"5" }}.', {"a": "a&b", "b": mark_safe("a&b")}, u".a&amp;b . .a&b ."),
+ 'filter-ljust01': ('{% autoescape off %}.{{ a|ljust:"5" }}. .{{ b|ljust:"5" }}.{% endautoescape %}', {"a": "a&b", "b": mark_safe("a&b")}, ".a&b . .a&b ."),
+ 'filter-ljust02': ('.{{ a|ljust:"5" }}. .{{ b|ljust:"5" }}.', {"a": "a&b", "b": mark_safe("a&b")}, ".a&amp;b . .a&b ."),
- 'filter-rjust01': ('{% autoescape off %}.{{ a|rjust:"5" }}. .{{ b|rjust:"5" }}.{% endautoescape %}', {"a": "a&b", "b": mark_safe("a&b")}, u". a&b. . a&b."),
- 'filter-rjust02': ('.{{ a|rjust:"5" }}. .{{ b|rjust:"5" }}.', {"a": "a&b", "b": mark_safe("a&b")}, u". a&amp;b. . a&b."),
+ 'filter-rjust01': ('{% autoescape off %}.{{ a|rjust:"5" }}. .{{ b|rjust:"5" }}.{% endautoescape %}', {"a": "a&b", "b": mark_safe("a&b")}, ". a&b. . a&b."),
+ 'filter-rjust02': ('.{{ a|rjust:"5" }}. .{{ b|rjust:"5" }}.', {"a": "a&b", "b": mark_safe("a&b")}, ". a&amp;b. . a&b."),
- 'filter-center01': ('{% autoescape off %}.{{ a|center:"5" }}. .{{ b|center:"5" }}.{% endautoescape %}', {"a": "a&b", "b": mark_safe("a&b")}, u". a&b . . a&b ."),
- 'filter-center02': ('.{{ a|center:"5" }}. .{{ b|center:"5" }}.', {"a": "a&b", "b": mark_safe("a&b")}, u". a&amp;b . . a&b ."),
+ 'filter-center01': ('{% autoescape off %}.{{ a|center:"5" }}. .{{ b|center:"5" }}.{% endautoescape %}', {"a": "a&b", "b": mark_safe("a&b")}, ". a&b . . a&b ."),
+ 'filter-center02': ('.{{ a|center:"5" }}. .{{ b|center:"5" }}.', {"a": "a&b", "b": mark_safe("a&b")}, ". a&amp;b . . a&b ."),
- 'filter-cut01': ('{% autoescape off %}{{ a|cut:"x" }} {{ b|cut:"x" }}{% endautoescape %}', {"a": "x&y", "b": mark_safe("x&amp;y")}, u"&y &amp;y"),
- 'filter-cut02': ('{{ a|cut:"x" }} {{ b|cut:"x" }}', {"a": "x&y", "b": mark_safe("x&amp;y")}, u"&amp;y &amp;y"),
- 'filter-cut03': ('{% autoescape off %}{{ a|cut:"&" }} {{ b|cut:"&" }}{% endautoescape %}', {"a": "x&y", "b": mark_safe("x&amp;y")}, u"xy xamp;y"),
- 'filter-cut04': ('{{ a|cut:"&" }} {{ b|cut:"&" }}', {"a": "x&y", "b": mark_safe("x&amp;y")}, u"xy xamp;y"),
+ 'filter-cut01': ('{% autoescape off %}{{ a|cut:"x" }} {{ b|cut:"x" }}{% endautoescape %}', {"a": "x&y", "b": mark_safe("x&amp;y")}, "&y &amp;y"),
+ 'filter-cut02': ('{{ a|cut:"x" }} {{ b|cut:"x" }}', {"a": "x&y", "b": mark_safe("x&amp;y")}, "&amp;y &amp;y"),
+ 'filter-cut03': ('{% autoescape off %}{{ a|cut:"&" }} {{ b|cut:"&" }}{% endautoescape %}', {"a": "x&y", "b": mark_safe("x&amp;y")}, "xy xamp;y"),
+ 'filter-cut04': ('{{ a|cut:"&" }} {{ b|cut:"&" }}', {"a": "x&y", "b": mark_safe("x&amp;y")}, "xy xamp;y"),
# Passing ';' to cut can break existing HTML entities, so those strings
# are auto-escaped.
- 'filter-cut05': ('{% autoescape off %}{{ a|cut:";" }} {{ b|cut:";" }}{% endautoescape %}', {"a": "x&y", "b": mark_safe("x&amp;y")}, u"x&y x&ampy"),
- 'filter-cut06': ('{{ a|cut:";" }} {{ b|cut:";" }}', {"a": "x&y", "b": mark_safe("x&amp;y")}, u"x&amp;y x&amp;ampy"),
+ 'filter-cut05': ('{% autoescape off %}{{ a|cut:";" }} {{ b|cut:";" }}{% endautoescape %}', {"a": "x&y", "b": mark_safe("x&amp;y")}, "x&y x&ampy"),
+ 'filter-cut06': ('{{ a|cut:";" }} {{ b|cut:";" }}', {"a": "x&y", "b": mark_safe("x&amp;y")}, "x&amp;y x&amp;ampy"),
# The "escape" filter works the same whether autoescape is on or off,
# but it has no effect on strings already marked as safe.
- 'filter-escape01': ('{{ a|escape }} {{ b|escape }}', {"a": "x&y", "b": mark_safe("x&y")}, u"x&amp;y x&y"),
+ 'filter-escape01': ('{{ a|escape }} {{ b|escape }}', {"a": "x&y", "b": mark_safe("x&y")}, "x&amp;y x&y"),
'filter-escape02': ('{% autoescape off %}{{ a|escape }} {{ b|escape }}{% endautoescape %}', {"a": "x&y", "b": mark_safe("x&y")}, "x&amp;y x&y"),
# It is only applied once, regardless of the number of times it
# appears in a chain.
- 'filter-escape03': ('{% autoescape off %}{{ a|escape|escape }}{% endautoescape %}', {"a": "x&y"}, u"x&amp;y"),
- 'filter-escape04': ('{{ a|escape|escape }}', {"a": "x&y"}, u"x&amp;y"),
+ 'filter-escape03': ('{% autoescape off %}{{ a|escape|escape }}{% endautoescape %}', {"a": "x&y"}, "x&amp;y"),
+ 'filter-escape04': ('{{ a|escape|escape }}', {"a": "x&y"}, "x&amp;y"),
# Force_escape is applied immediately. It can be used to provide
# double-escaping, for example.
- 'filter-force-escape01': ('{% autoescape off %}{{ a|force_escape }}{% endautoescape %}', {"a": "x&y"}, u"x&amp;y"),
- 'filter-force-escape02': ('{{ a|force_escape }}', {"a": "x&y"}, u"x&amp;y"),
- 'filter-force-escape03': ('{% autoescape off %}{{ a|force_escape|force_escape }}{% endautoescape %}', {"a": "x&y"}, u"x&amp;amp;y"),
- 'filter-force-escape04': ('{{ a|force_escape|force_escape }}', {"a": "x&y"}, u"x&amp;amp;y"),
+ 'filter-force-escape01': ('{% autoescape off %}{{ a|force_escape }}{% endautoescape %}', {"a": "x&y"}, "x&amp;y"),
+ 'filter-force-escape02': ('{{ a|force_escape }}', {"a": "x&y"}, "x&amp;y"),
+ 'filter-force-escape03': ('{% autoescape off %}{{ a|force_escape|force_escape }}{% endautoescape %}', {"a": "x&y"}, "x&amp;amp;y"),
+ 'filter-force-escape04': ('{{ a|force_escape|force_escape }}', {"a": "x&y"}, "x&amp;amp;y"),
# Because the result of force_escape is "safe", an additional
# escape filter has no effect.
- 'filter-force-escape05': ('{% autoescape off %}{{ a|force_escape|escape }}{% endautoescape %}', {"a": "x&y"}, u"x&amp;y"),
- 'filter-force-escape06': ('{{ a|force_escape|escape }}', {"a": "x&y"}, u"x&amp;y"),
- 'filter-force-escape07': ('{% autoescape off %}{{ a|escape|force_escape }}{% endautoescape %}', {"a": "x&y"}, u"x&amp;y"),
- 'filter-force-escape08': ('{{ a|escape|force_escape }}', {"a": "x&y"}, u"x&amp;y"),
+ 'filter-force-escape05': ('{% autoescape off %}{{ a|force_escape|escape }}{% endautoescape %}', {"a": "x&y"}, "x&amp;y"),
+ 'filter-force-escape06': ('{{ a|force_escape|escape }}', {"a": "x&y"}, "x&amp;y"),
+ 'filter-force-escape07': ('{% autoescape off %}{{ a|escape|force_escape }}{% endautoescape %}', {"a": "x&y"}, "x&amp;y"),
+ 'filter-force-escape08': ('{{ a|escape|force_escape }}', {"a": "x&y"}, "x&amp;y"),
# The contents in "linebreaks" and "linebreaksbr" are escaped
# according to the current autoescape setting.
- 'filter-linebreaks01': ('{{ a|linebreaks }} {{ b|linebreaks }}', {"a": "x&\ny", "b": mark_safe("x&\ny")}, u"<p>x&amp;<br />y</p> <p>x&<br />y</p>"),
- 'filter-linebreaks02': ('{% autoescape off %}{{ a|linebreaks }} {{ b|linebreaks }}{% endautoescape %}', {"a": "x&\ny", "b": mark_safe("x&\ny")}, u"<p>x&<br />y</p> <p>x&<br />y</p>"),
+ 'filter-linebreaks01': ('{{ a|linebreaks }} {{ b|linebreaks }}', {"a": "x&\ny", "b": mark_safe("x&\ny")}, "<p>x&amp;<br />y</p> <p>x&<br />y</p>"),
+ 'filter-linebreaks02': ('{% autoescape off %}{{ a|linebreaks }} {{ b|linebreaks }}{% endautoescape %}', {"a": "x&\ny", "b": mark_safe("x&\ny")}, "<p>x&<br />y</p> <p>x&<br />y</p>"),
- 'filter-linebreaksbr01': ('{{ a|linebreaksbr }} {{ b|linebreaksbr }}', {"a": "x&\ny", "b": mark_safe("x&\ny")}, u"x&amp;<br />y x&<br />y"),
- 'filter-linebreaksbr02': ('{% autoescape off %}{{ a|linebreaksbr }} {{ b|linebreaksbr }}{% endautoescape %}', {"a": "x&\ny", "b": mark_safe("x&\ny")}, u"x&<br />y x&<br />y"),
+ 'filter-linebreaksbr01': ('{{ a|linebreaksbr }} {{ b|linebreaksbr }}', {"a": "x&\ny", "b": mark_safe("x&\ny")}, "x&amp;<br />y x&<br />y"),
+ 'filter-linebreaksbr02': ('{% autoescape off %}{{ a|linebreaksbr }} {{ b|linebreaksbr }}{% endautoescape %}', {"a": "x&\ny", "b": mark_safe("x&\ny")}, "x&<br />y x&<br />y"),
- 'filter-safe01': ("{{ a }} -- {{ a|safe }}", {"a": u"<b>hello</b>"}, "&lt;b&gt;hello&lt;/b&gt; -- <b>hello</b>"),
- 'filter-safe02': ("{% autoescape off %}{{ a }} -- {{ a|safe }}{% endautoescape %}", {"a": "<b>hello</b>"}, u"<b>hello</b> -- <b>hello</b>"),
+ 'filter-safe01': ("{{ a }} -- {{ a|safe }}", {"a": "<b>hello</b>"}, "&lt;b&gt;hello&lt;/b&gt; -- <b>hello</b>"),
+ 'filter-safe02': ("{% autoescape off %}{{ a }} -- {{ a|safe }}{% endautoescape %}", {"a": "<b>hello</b>"}, "<b>hello</b> -- <b>hello</b>"),
'filter-safeseq01': ('{{ a|join:", " }} -- {{ a|safeseq|join:", " }}', {"a": ["&", "<"]}, "&amp;, &lt; -- &, <"),
'filter-safeseq02': ('{% autoescape off %}{{ a|join:", " }} -- {{ a|safeseq|join:", " }}{% endautoescape %}', {"a": ["&", "<"]}, "&, < -- &, <"),
- 'filter-removetags01': ('{{ a|removetags:"a b" }} {{ b|removetags:"a b" }}', {"a": "<a>x</a> <p><b>y</b></p>", "b": mark_safe("<a>x</a> <p><b>y</b></p>")}, u"x &lt;p&gt;y&lt;/p&gt; x <p>y</p>"),
- 'filter-removetags02': ('{% autoescape off %}{{ a|removetags:"a b" }} {{ b|removetags:"a b" }}{% endautoescape %}', {"a": "<a>x</a> <p><b>y</b></p>", "b": mark_safe("<a>x</a> <p><b>y</b></p>")}, u"x <p>y</p> x <p>y</p>"),
+ 'filter-removetags01': ('{{ a|removetags:"a b" }} {{ b|removetags:"a b" }}', {"a": "<a>x</a> <p><b>y</b></p>", "b": mark_safe("<a>x</a> <p><b>y</b></p>")}, "x &lt;p&gt;y&lt;/p&gt; x <p>y</p>"),
+ 'filter-removetags02': ('{% autoescape off %}{{ a|removetags:"a b" }} {{ b|removetags:"a b" }}{% endautoescape %}', {"a": "<a>x</a> <p><b>y</b></p>", "b": mark_safe("<a>x</a> <p><b>y</b></p>")}, "x <p>y</p> x <p>y</p>"),
'filter-striptags01': ('{{ a|striptags }} {{ b|striptags }}', {"a": "<a>x</a> <p><b>y</b></p>", "b": mark_safe("<a>x</a> <p><b>y</b></p>")}, "x y x y"),
'filter-striptags02': ('{% autoescape off %}{{ a|striptags }} {{ b|striptags }}{% endautoescape %}', {"a": "<a>x</a> <p><b>y</b></p>", "b": mark_safe("<a>x</a> <p><b>y</b></p>")}, "x y x y"),
diff --git a/tests/regressiontests/templates/parser.py b/tests/regressiontests/templates/parser.py
index 1609c67e22..6c9deee9ff 100644
--- a/tests/regressiontests/templates/parser.py
+++ b/tests/regressiontests/templates/parser.py
@@ -1,6 +1,8 @@
"""
Testing some internals of the template processing. These are *not* examples to be copied in user code.
"""
+from __future__ import unicode_literals
+
from django.template import (TokenParser, FilterExpression, Parser, Variable,
TemplateSyntaxError)
from django.utils.unittest import TestCase
@@ -33,23 +35,23 @@ class ParserTests(TestCase):
self.assertFalse(p.more())
def test_filter_parsing(self):
- c = {"article": {"section": u"News"}}
+ c = {"article": {"section": "News"}}
p = Parser("")
def fe_test(s, val):
self.assertEqual(FilterExpression(s, p).resolve(c), val)
- fe_test("article.section", u"News")
- fe_test("article.section|upper", u"NEWS")
- fe_test(u'"News"', u"News")
- fe_test(u"'News'", u"News")
- fe_test(ur'"Some \"Good\" News"', u'Some "Good" News')
- fe_test(ur'"Some \"Good\" News"', u'Some "Good" News')
- fe_test(ur"'Some \'Bad\' News'", u"Some 'Bad' News")
+ fe_test("article.section", "News")
+ fe_test("article.section|upper", "NEWS")
+ fe_test('"News"', "News")
+ fe_test("'News'", "News")
+ fe_test(r'"Some \"Good\" News"', 'Some "Good" News')
+ fe_test(r'"Some \"Good\" News"', 'Some "Good" News')
+ fe_test(r"'Some \'Bad\' News'", "Some 'Bad' News")
- fe = FilterExpression(ur'"Some \"Good\" News"', p)
+ fe = FilterExpression(r'"Some \"Good\" News"', p)
self.assertEqual(fe.filters, [])
- self.assertEqual(fe.var, u'Some "Good" News')
+ self.assertEqual(fe.var, 'Some "Good" News')
# Filtered variables should reject access of attributes beginning with
# underscores.
@@ -58,10 +60,10 @@ class ParserTests(TestCase):
)
def test_variable_parsing(self):
- c = {"article": {"section": u"News"}}
+ c = {"article": {"section": "News"}}
self.assertEqual(Variable("article.section").resolve(c), "News")
- self.assertEqual(Variable(u'"News"').resolve(c), "News")
- self.assertEqual(Variable(u"'News'").resolve(c), "News")
+ self.assertEqual(Variable('"News"').resolve(c), "News")
+ self.assertEqual(Variable("'News'").resolve(c), "News")
# Translated strings are handled correctly.
self.assertEqual(Variable("_(article.section)").resolve(c), "News")
@@ -70,10 +72,10 @@ class ParserTests(TestCase):
# Escaped quotes work correctly as well.
self.assertEqual(
- Variable(ur'"Some \"Good\" News"').resolve(c), 'Some "Good" News'
+ Variable(r'"Some \"Good\" News"').resolve(c), 'Some "Good" News'
)
self.assertEqual(
- Variable(ur"'Some \'Better\' News'").resolve(c), "Some 'Better' News"
+ Variable(r"'Some \'Better\' News'").resolve(c), "Some 'Better' News"
)
# Variables should reject access of attributes beginning with
diff --git a/tests/regressiontests/templates/tests.py b/tests/regressiontests/templates/tests.py
index 957ad2b9ba..989fd72d94 100644
--- a/tests/regressiontests/templates/tests.py
+++ b/tests/regressiontests/templates/tests.py
@@ -1,5 +1,5 @@
# -*- coding: utf-8 -*-
-from __future__ import absolute_import
+from __future__ import absolute_import, unicode_literals
from django.conf import settings
@@ -147,14 +147,14 @@ class SilentAttrClass(object):
class UTF8Class:
"Class whose __str__ returns non-ASCII data"
def __str__(self):
- return u'ŠĐĆŽćžšđ'.encode('utf-8')
+ return 'ŠĐĆŽćžšđ'.encode('utf-8')
class Templates(unittest.TestCase):
def setUp(self):
self.old_static_url = settings.STATIC_URL
self.old_media_url = settings.MEDIA_URL
- settings.STATIC_URL = u"/static/"
- settings.MEDIA_URL = u"/media/"
+ settings.STATIC_URL = "/static/"
+ settings.MEDIA_URL = "/media/"
def tearDown(self):
settings.STATIC_URL = self.old_static_url
@@ -193,13 +193,13 @@ class Templates(unittest.TestCase):
# UTF-8 bytestrings are permitted.
test_template_sources(b'\xc3\x85ngstr\xc3\xb6m', template_dirs,
- [u'/dir1/Ångström', u'/dir2/Ångström'])
+ ['/dir1/Ångström', '/dir2/Ångström'])
# Unicode strings are permitted.
- test_template_sources(u'Ångström', template_dirs,
- [u'/dir1/Ångström', u'/dir2/Ångström'])
- test_template_sources(u'Ångström', [b'/Stra\xc3\x9fe'], [u'/Straße/Ångström'])
+ test_template_sources('Ångström', template_dirs,
+ ['/dir1/Ångström', '/dir2/Ångström'])
+ test_template_sources('Ångström', [b'/Stra\xc3\x9fe'], ['/Straße/Ångström'])
test_template_sources(b'\xc3\x85ngstr\xc3\xb6m', [b'/Stra\xc3\x9fe'],
- [u'/Straße/Ångström'])
+ ['/Straße/Ångström'])
# Invalid UTF-8 encoding in bytestrings is not. Should raise a
# semi-useful error message.
test_template_sources(b'\xc3\xc3', template_dirs, UnicodeDecodeError)
@@ -684,7 +684,7 @@ class Templates(unittest.TestCase):
# Make sure that any unicode strings are converted to bytestrings
# in the final output.
- 'filter-syntax18': (r'{{ var }}', {'var': UTF8Class()}, u'\u0160\u0110\u0106\u017d\u0107\u017e\u0161\u0111'),
+ 'filter-syntax18': (r'{{ var }}', {'var': UTF8Class()}, '\u0160\u0110\u0106\u017d\u0107\u017e\u0161\u0111'),
# Numbers as filter arguments should work
'filter-syntax19': ('{{ var|truncatewords:1 }}', {"var": "hello world"}, "hello ..."),
@@ -1239,11 +1239,11 @@ class Templates(unittest.TestCase):
'i18n02': ('{% load i18n %}{% trans "xxxyyyxxx" %}', {}, "xxxyyyxxx"),
# simple translation of a variable
- 'i18n03': ('{% load i18n %}{% blocktrans %}{{ anton }}{% endblocktrans %}', {'anton': b'\xc3\x85'}, u"Å"),
+ 'i18n03': ('{% load i18n %}{% blocktrans %}{{ anton }}{% endblocktrans %}', {'anton': b'\xc3\x85'}, "Å"),
# simple translation of a variable and filter
- 'i18n04': ('{% load i18n %}{% blocktrans with berta=anton|lower %}{{ berta }}{% endblocktrans %}', {'anton': b'\xc3\x85'}, u'å'),
- 'legacyi18n04': ('{% load i18n %}{% blocktrans with anton|lower as berta %}{{ berta }}{% endblocktrans %}', {'anton': b'\xc3\x85'}, u'å'),
+ 'i18n04': ('{% load i18n %}{% blocktrans with berta=anton|lower %}{{ berta }}{% endblocktrans %}', {'anton': b'\xc3\x85'}, 'å'),
+ 'legacyi18n04': ('{% load i18n %}{% blocktrans with anton|lower as berta %}{{ berta }}{% endblocktrans %}', {'anton': b'\xc3\x85'}, 'å'),
# simple translation of a string with interpolation
'i18n05': ('{% load i18n %}{% blocktrans %}xxx{{ anton }}xxx{% endblocktrans %}', {'anton': 'yyy'}, "xxxyyyxxx"),
@@ -1279,42 +1279,42 @@ class Templates(unittest.TestCase):
# Escaping inside blocktrans and trans works as if it was directly in the
# template.
- 'i18n17': ('{% load i18n %}{% blocktrans with berta=anton|escape %}{{ berta }}{% endblocktrans %}', {'anton': 'α & β'}, u'α &amp; β'),
- 'i18n18': ('{% load i18n %}{% blocktrans with berta=anton|force_escape %}{{ berta }}{% endblocktrans %}', {'anton': 'α & β'}, u'α &amp; β'),
- 'i18n19': ('{% load i18n %}{% blocktrans %}{{ andrew }}{% endblocktrans %}', {'andrew': 'a & b'}, u'a &amp; b'),
- 'i18n20': ('{% load i18n %}{% trans andrew %}', {'andrew': 'a & b'}, u'a &amp; b'),
- 'i18n21': ('{% load i18n %}{% blocktrans %}{{ andrew }}{% endblocktrans %}', {'andrew': mark_safe('a & b')}, u'a & b'),
- 'i18n22': ('{% load i18n %}{% trans andrew %}', {'andrew': mark_safe('a & b')}, u'a & b'),
- 'legacyi18n17': ('{% load i18n %}{% blocktrans with anton|escape as berta %}{{ berta }}{% endblocktrans %}', {'anton': 'α & β'}, u'α &amp; β'),
- 'legacyi18n18': ('{% load i18n %}{% blocktrans with anton|force_escape as berta %}{{ berta }}{% endblocktrans %}', {'anton': 'α & β'}, u'α &amp; β'),
+ 'i18n17': ('{% load i18n %}{% blocktrans with berta=anton|escape %}{{ berta }}{% endblocktrans %}', {'anton': 'α & β'}, 'α &amp; β'),
+ 'i18n18': ('{% load i18n %}{% blocktrans with berta=anton|force_escape %}{{ berta }}{% endblocktrans %}', {'anton': 'α & β'}, 'α &amp; β'),
+ 'i18n19': ('{% load i18n %}{% blocktrans %}{{ andrew }}{% endblocktrans %}', {'andrew': 'a & b'}, 'a &amp; b'),
+ 'i18n20': ('{% load i18n %}{% trans andrew %}', {'andrew': 'a & b'}, 'a &amp; b'),
+ 'i18n21': ('{% load i18n %}{% blocktrans %}{{ andrew }}{% endblocktrans %}', {'andrew': mark_safe('a & b')}, 'a & b'),
+ 'i18n22': ('{% load i18n %}{% trans andrew %}', {'andrew': mark_safe('a & b')}, 'a & b'),
+ 'legacyi18n17': ('{% load i18n %}{% blocktrans with anton|escape as berta %}{{ berta }}{% endblocktrans %}', {'anton': 'α & β'}, 'α &amp; β'),
+ 'legacyi18n18': ('{% load i18n %}{% blocktrans with anton|force_escape as berta %}{{ berta }}{% endblocktrans %}', {'anton': 'α & β'}, 'α &amp; β'),
# Use filters with the {% trans %} tag, #5972
- 'i18n23': ('{% load i18n %}{% trans "Page not found"|capfirst|slice:"6:" %}', {'LANGUAGE_CODE': 'de'}, u'nicht gefunden'),
- 'i18n24': ("{% load i18n %}{% trans 'Page not found'|upper %}", {'LANGUAGE_CODE': 'de'}, u'SEITE NICHT GEFUNDEN'),
- 'i18n25': ('{% load i18n %}{% trans somevar|upper %}', {'somevar': 'Page not found', 'LANGUAGE_CODE': 'de'}, u'SEITE NICHT GEFUNDEN'),
+ 'i18n23': ('{% load i18n %}{% trans "Page not found"|capfirst|slice:"6:" %}', {'LANGUAGE_CODE': 'de'}, 'nicht gefunden'),
+ 'i18n24': ("{% load i18n %}{% trans 'Page not found'|upper %}", {'LANGUAGE_CODE': 'de'}, 'SEITE NICHT GEFUNDEN'),
+ 'i18n25': ('{% load i18n %}{% trans somevar|upper %}', {'somevar': 'Page not found', 'LANGUAGE_CODE': 'de'}, 'SEITE NICHT GEFUNDEN'),
# translation of plural form with extra field in singular form (#13568)
'i18n26': ('{% load i18n %}{% blocktrans with extra_field=myextra_field count counter=number %}singular {{ extra_field }}{% plural %}plural{% endblocktrans %}', {'number': 1, 'myextra_field': 'test'}, "singular test"),
'legacyi18n26': ('{% load i18n %}{% blocktrans with myextra_field as extra_field count number as counter %}singular {{ extra_field }}{% plural %}plural{% endblocktrans %}', {'number': 1, 'myextra_field': 'test'}, "singular test"),
# translation of singular form in russian (#14126)
- 'i18n27': ('{% load i18n %}{% blocktrans count counter=number %}{{ counter }} result{% plural %}{{ counter }} results{% endblocktrans %}', {'number': 1, 'LANGUAGE_CODE': 'ru'}, u'1 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442'),
- 'legacyi18n27': ('{% load i18n %}{% blocktrans count number as counter %}{{ counter }} result{% plural %}{{ counter }} results{% endblocktrans %}', {'number': 1, 'LANGUAGE_CODE': 'ru'}, u'1 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442'),
+ 'i18n27': ('{% load i18n %}{% blocktrans count counter=number %}{{ counter }} result{% plural %}{{ counter }} results{% endblocktrans %}', {'number': 1, 'LANGUAGE_CODE': 'ru'}, '1 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442'),
+ 'legacyi18n27': ('{% load i18n %}{% blocktrans count number as counter %}{{ counter }} result{% plural %}{{ counter }} results{% endblocktrans %}', {'number': 1, 'LANGUAGE_CODE': 'ru'}, '1 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442'),
# simple translation of multiple variables
- 'i18n28': ('{% load i18n %}{% blocktrans with a=anton b=berta %}{{ a }} + {{ b }}{% endblocktrans %}', {'anton': 'α', 'berta': 'β'}, u'α + β'),
- 'legacyi18n28': ('{% load i18n %}{% blocktrans with anton as a and berta as b %}{{ a }} + {{ b }}{% endblocktrans %}', {'anton': 'α', 'berta': 'β'}, u'α + β'),
+ 'i18n28': ('{% load i18n %}{% blocktrans with a=anton b=berta %}{{ a }} + {{ b }}{% endblocktrans %}', {'anton': 'α', 'berta': 'β'}, 'α + β'),
+ 'legacyi18n28': ('{% load i18n %}{% blocktrans with anton as a and berta as b %}{{ a }} + {{ b }}{% endblocktrans %}', {'anton': 'α', 'berta': 'β'}, 'α + β'),
# retrieving language information
'i18n28_2': ('{% load i18n %}{% get_language_info for "de" as l %}{{ l.code }}: {{ l.name }}/{{ l.name_local }} bidi={{ l.bidi }}', {}, 'de: German/Deutsch bidi=False'),
'i18n29': ('{% load i18n %}{% get_language_info for LANGUAGE_CODE as l %}{{ l.code }}: {{ l.name }}/{{ l.name_local }} bidi={{ l.bidi }}', {'LANGUAGE_CODE': 'fi'}, 'fi: Finnish/suomi bidi=False'),
- 'i18n30': ('{% load i18n %}{% get_language_info_list for langcodes as langs %}{% for l in langs %}{{ l.code }}: {{ l.name }}/{{ l.name_local }} bidi={{ l.bidi }}; {% endfor %}', {'langcodes': ['it', 'no']}, u'it: Italian/italiano bidi=False; no: Norwegian/Norsk bidi=False; '),
- 'i18n31': ('{% load i18n %}{% get_language_info_list for langcodes as langs %}{% for l in langs %}{{ l.code }}: {{ l.name }}/{{ l.name_local }} bidi={{ l.bidi }}; {% endfor %}', {'langcodes': (('sl', 'Slovenian'), ('fa', 'Persian'))}, u'sl: Slovenian/Sloven\u0161\u010dina bidi=False; fa: Persian/\u0641\u0627\u0631\u0633\u06cc bidi=True; '),
- 'i18n32': ('{% load i18n %}{{ "hu"|language_name }} {{ "hu"|language_name_local }} {{ "hu"|language_bidi }}', {}, u'Hungarian Magyar False'),
- 'i18n33': ('{% load i18n %}{{ langcode|language_name }} {{ langcode|language_name_local }} {{ langcode|language_bidi }}', {'langcode': 'nl'}, u'Dutch Nederlands False'),
+ 'i18n30': ('{% load i18n %}{% get_language_info_list for langcodes as langs %}{% for l in langs %}{{ l.code }}: {{ l.name }}/{{ l.name_local }} bidi={{ l.bidi }}; {% endfor %}', {'langcodes': ['it', 'no']}, 'it: Italian/italiano bidi=False; no: Norwegian/Norsk bidi=False; '),
+ 'i18n31': ('{% load i18n %}{% get_language_info_list for langcodes as langs %}{% for l in langs %}{{ l.code }}: {{ l.name }}/{{ l.name_local }} bidi={{ l.bidi }}; {% endfor %}', {'langcodes': (('sl', 'Slovenian'), ('fa', 'Persian'))}, 'sl: Slovenian/Sloven\u0161\u010dina bidi=False; fa: Persian/\u0641\u0627\u0631\u0633\u06cc bidi=True; '),
+ 'i18n32': ('{% load i18n %}{{ "hu"|language_name }} {{ "hu"|language_name_local }} {{ "hu"|language_bidi }}', {}, 'Hungarian Magyar False'),
+ 'i18n33': ('{% load i18n %}{{ langcode|language_name }} {{ langcode|language_name_local }} {{ langcode|language_bidi }}', {'langcode': 'nl'}, 'Dutch Nederlands False'),
# blocktrans handling of variables which are not in the context.
- 'i18n34': ('{% load i18n %}{% blocktrans %}{{ missing }}{% endblocktrans %}', {}, u''),
+ 'i18n34': ('{% load i18n %}{% blocktrans %}{{ missing }}{% endblocktrans %}', {}, ''),
# trans tag with as var
'i18n35': ('{% load i18n %}{% trans "Page not found" as page_not_found %}{{ page_not_found }}', {'LANGUAGE_CODE': 'de'}, "Seite nicht gefunden"),
@@ -1498,11 +1498,11 @@ class Templates(unittest.TestCase):
'url02c': ("{% url 'regressiontests.templates.views.client_action' client.id 'update' %}", {'client': {'id': 1}}, '/url_tag/client/1/update/'),
'url03': ('{% url "regressiontests.templates.views.index" %}', {}, '/url_tag/'),
'url04': ('{% url "named.client" client.id %}', {'client': {'id': 1}}, '/url_tag/named-client/1/'),
- 'url05': (u'{% url "метка_оператора" v %}', {'v': u'Ω'}, '/url_tag/%D0%AE%D0%BD%D0%B8%D0%BA%D0%BE%D0%B4/%CE%A9/'),
- 'url06': (u'{% url "метка_оператора_2" tag=v %}', {'v': u'Ω'}, '/url_tag/%D0%AE%D0%BD%D0%B8%D0%BA%D0%BE%D0%B4/%CE%A9/'),
- 'url07': (u'{% url "regressiontests.templates.views.client2" tag=v %}', {'v': u'Ω'}, '/url_tag/%D0%AE%D0%BD%D0%B8%D0%BA%D0%BE%D0%B4/%CE%A9/'),
- 'url08': (u'{% url "метка_оператора" v %}', {'v': 'Ω'}, '/url_tag/%D0%AE%D0%BD%D0%B8%D0%BA%D0%BE%D0%B4/%CE%A9/'),
- 'url09': (u'{% url "метка_оператора_2" tag=v %}', {'v': 'Ω'}, '/url_tag/%D0%AE%D0%BD%D0%B8%D0%BA%D0%BE%D0%B4/%CE%A9/'),
+ 'url05': ('{% url "метка_оператора" v %}', {'v': 'Ω'}, '/url_tag/%D0%AE%D0%BD%D0%B8%D0%BA%D0%BE%D0%B4/%CE%A9/'),
+ 'url06': ('{% url "метка_оператора_2" tag=v %}', {'v': 'Ω'}, '/url_tag/%D0%AE%D0%BD%D0%B8%D0%BA%D0%BE%D0%B4/%CE%A9/'),
+ 'url07': ('{% url "regressiontests.templates.views.client2" tag=v %}', {'v': 'Ω'}, '/url_tag/%D0%AE%D0%BD%D0%B8%D0%BA%D0%BE%D0%B4/%CE%A9/'),
+ 'url08': ('{% url "метка_оператора" v %}', {'v': 'Ω'}, '/url_tag/%D0%AE%D0%BD%D0%B8%D0%BA%D0%BE%D0%B4/%CE%A9/'),
+ 'url09': ('{% url "метка_оператора_2" tag=v %}', {'v': 'Ω'}, '/url_tag/%D0%AE%D0%BD%D0%B8%D0%BA%D0%BE%D0%B4/%CE%A9/'),
'url10': ('{% url "regressiontests.templates.views.client_action" id=client.id action="two words" %}', {'client': {'id': 1}}, '/url_tag/client/1/two%20words/'),
'url11': ('{% url "regressiontests.templates.views.client_action" id=client.id action="==" %}', {'client': {'id': 1}}, '/url_tag/client/1/==/'),
'url12': ('{% url "regressiontests.templates.views.client_action" id=client.id action="," %}', {'client': {'id': 1}}, '/url_tag/client/1/,/'),
@@ -1577,7 +1577,7 @@ class Templates(unittest.TestCase):
# Strings (ASCII or unicode) already marked as "safe" are not
# auto-escaped
'autoescape-tag06': ("{{ first }}", {"first": mark_safe("<b>first</b>")}, "<b>first</b>"),
- 'autoescape-tag07': ("{% autoescape on %}{{ first }}{% endautoescape %}", {"first": mark_safe(u"<b>Apple</b>")}, u"<b>Apple</b>"),
+ 'autoescape-tag07': ("{% autoescape on %}{{ first }}{% endautoescape %}", {"first": mark_safe("<b>Apple</b>")}, "<b>Apple</b>"),
# Literal string arguments to filters, if used in the result, are
# safe.
diff --git a/tests/regressiontests/templates/unicode.py b/tests/regressiontests/templates/unicode.py
index 0e0cefeb8e..2c41176b01 100644
--- a/tests/regressiontests/templates/unicode.py
+++ b/tests/regressiontests/templates/unicode.py
@@ -1,4 +1,6 @@
# -*- coding: utf-8 -*-
+from __future__ import unicode_literals
+
from django.template import Template, TemplateEncodingError, Context
from django.utils.safestring import SafeData
from django.utils.unittest import TestCase
@@ -7,7 +9,7 @@ from django.utils.unittest import TestCase
class UnicodeTests(TestCase):
def test_template(self):
# Templates can be created from unicode strings.
- t1 = Template(u'ŠĐĆŽćžšđ {{ var }}')
+ t1 = Template('ŠĐĆŽćžšđ {{ var }}')
# Templates can also be created from bytestrings. These are assumed to
# be encoded using UTF-8.
s = b'\xc5\xa0\xc4\x90\xc4\x86\xc5\xbd\xc4\x87\xc5\xbe\xc5\xa1\xc4\x91 {{ var }}'
@@ -17,9 +19,9 @@ class UnicodeTests(TestCase):
# Contexts can be constructed from unicode or UTF-8 bytestrings.
c1 = Context({b"var": b"foo"})
- c2 = Context({u"var": b"foo"})
- c3 = Context({b"var": u"Đđ"})
- c4 = Context({u"var": b"\xc4\x90\xc4\x91"})
+ c2 = Context({"var": b"foo"})
+ c3 = Context({b"var": "Đđ"})
+ c4 = Context({"var": b"\xc4\x90\xc4\x91"})
# Since both templates and all four contexts represent the same thing,
# they all render the same (and are returned as unicode objects and
diff --git a/tests/regressiontests/templates/urls.py b/tests/regressiontests/templates/urls.py
index b977698350..fe7f9c1f30 100644
--- a/tests/regressiontests/templates/urls.py
+++ b/tests/regressiontests/templates/urls.py
@@ -1,5 +1,5 @@
# coding: utf-8
-from __future__ import absolute_import
+from __future__ import absolute_import, unicode_literals
from django.conf.urls import patterns, url
from . import views
@@ -15,6 +15,6 @@ urlpatterns = patterns('',
url(r'^named-client/(\d+)/$', views.client2, name="named.client"),
# Unicode strings are permitted everywhere.
- url(ur'^Юникод/(\w+)/$', views.client2, name=u"метка_оператора"),
- url(ur'^Юникод/(?P<tag>\S+)/$', 'regressiontests.templates.views.client2', name=u"метка_оператора_2"),
+ url(r'^Юникод/(\w+)/$', views.client2, name="метка_оператора"),
+ url(r'^Юникод/(?P<tag>\S+)/$', 'regressiontests.templates.views.client2', name="метка_оператора_2"),
)
diff --git a/tests/regressiontests/test_client_regress/tests.py b/tests/regressiontests/test_client_regress/tests.py
index ece487a211..59f8f423dd 100644
--- a/tests/regressiontests/test_client_regress/tests.py
+++ b/tests/regressiontests/test_client_regress/tests.py
@@ -2,6 +2,8 @@
"""
Regression tests for the Test Client, especially the customized assertions.
"""
+from __future__ import unicode_literals
+
import os
from django.conf import settings
@@ -12,7 +14,7 @@ from django.template import (TemplateDoesNotExist, TemplateSyntaxError,
import django.template.context
from django.test import Client, TestCase
from django.test.client import encode_file, RequestFactory
-from django.test.utils import ContextList, override_settings
+from django.test.utils import ContextList, override_settings, str_prefix
from django.template.response import SimpleTemplateResponse
from django.http import HttpResponse
@@ -117,14 +119,14 @@ class AssertContainsTests(TestCase):
"Unicode characters can be found in template context"
#Regression test for #10183
r = self.client.get('/test_client_regress/check_unicode/')
- self.assertContains(r, u'さかき')
+ self.assertContains(r, 'さかき')
self.assertContains(r, b'\xe5\xb3\xa0'.decode('utf-8'))
def test_unicode_not_contains(self):
"Unicode characters can be searched for, and not found in template context"
#Regression test for #10183
r = self.client.get('/test_client_regress/check_unicode/')
- self.assertNotContains(r, u'はたけ')
+ self.assertNotContains(r, 'はたけ')
self.assertNotContains(r, b'\xe3\x81\xaf\xe3\x81\x9f\xe3\x81\x91'.decode('utf-8'))
def test_assert_contains_renders_template_response(self):
@@ -488,11 +490,11 @@ class AssertFormErrorTests(TestCase):
try:
self.assertFormError(response, 'form', 'email', 'Some error.')
except AssertionError as e:
- self.assertIn("The field 'email' on form 'form' in context 0 does not contain the error 'Some error.' (actual errors: [u'Enter a valid e-mail address.'])", str(e))
+ self.assertIn(str_prefix("The field 'email' on form 'form' in context 0 does not contain the error 'Some error.' (actual errors: [%(_)s'Enter a valid e-mail address.'])"), str(e))
try:
self.assertFormError(response, 'form', 'email', 'Some error.', msg_prefix='abc')
except AssertionError as e:
- self.assertIn("abc: The field 'email' on form 'form' in context 0 does not contain the error 'Some error.' (actual errors: [u'Enter a valid e-mail address.'])", str(e))
+ self.assertIn(str_prefix("abc: The field 'email' on form 'form' in context 0 does not contain the error 'Some error.' (actual errors: [%(_)s'Enter a valid e-mail address.'])"), str(e))
def test_unknown_nonfield_error(self):
"""
@@ -784,7 +786,7 @@ class RequestMethodStringDataTests(TestCase):
def test_post(self):
"Request a view with string data via request method POST"
# Regression test for #11371
- data = u'{"test": "json"}'
+ data = '{"test": "json"}'
response = self.client.post('/test_client_regress/request_methods/', data=data, content_type='application/json')
self.assertEqual(response.status_code, 200)
self.assertEqual(response.content, b'request method: POST')
@@ -792,7 +794,7 @@ class RequestMethodStringDataTests(TestCase):
def test_put(self):
"Request a view with string data via request method PUT"
# Regression test for #11371
- data = u'{"test": "json"}'
+ data = '{"test": "json"}'
response = self.client.put('/test_client_regress/request_methods/', data=data, content_type='application/json')
self.assertEqual(response.status_code, 200)
self.assertEqual(response.content, b'request method: PUT')
@@ -853,7 +855,7 @@ class UnicodePayloadTests(TestCase):
def test_simple_unicode_payload(self):
"A simple ASCII-only unicode JSON document can be POSTed"
# Regression test for #10571
- json = u'{"english": "mountain pass"}'
+ json = '{"english": "mountain pass"}'
response = self.client.post("/test_client_regress/parse_unicode_json/", json,
content_type="application/json")
self.assertEqual(response.content, json)
@@ -861,7 +863,7 @@ class UnicodePayloadTests(TestCase):
def test_unicode_payload_utf8(self):
"A non-ASCII unicode data encoded as UTF-8 can be POSTed"
# Regression test for #10571
- json = u'{"dog": "собака"}'
+ json = '{"dog": "собака"}'
response = self.client.post("/test_client_regress/parse_unicode_json/", json,
content_type="application/json; charset=utf-8")
self.assertEqual(response.content, json.encode('utf-8'))
@@ -869,7 +871,7 @@ class UnicodePayloadTests(TestCase):
def test_unicode_payload_utf16(self):
"A non-ASCII unicode data encoded as UTF-16 can be POSTed"
# Regression test for #10571
- json = u'{"dog": "собака"}'
+ json = '{"dog": "собака"}'
response = self.client.post("/test_client_regress/parse_unicode_json/", json,
content_type="application/json; charset=utf-16")
self.assertEqual(response.content, json.encode('utf-16'))
@@ -877,7 +879,7 @@ class UnicodePayloadTests(TestCase):
def test_unicode_payload_non_utf(self):
"A non-ASCII unicode data as a non-UTF based encoding can be POSTed"
#Regression test for #10571
- json = u'{"dog": "собака"}'
+ json = '{"dog": "собака"}'
response = self.client.post("/test_client_regress/parse_unicode_json/", json,
content_type="application/json; charset=koi8-r")
self.assertEqual(response.content, json.encode('koi8-r'))
diff --git a/tests/regressiontests/test_utils/tests.py b/tests/regressiontests/test_utils/tests.py
index a277bc999b..46479ebe8b 100644
--- a/tests/regressiontests/test_utils/tests.py
+++ b/tests/regressiontests/test_utils/tests.py
@@ -1,5 +1,5 @@
# -*- coding: utf-8 -*-
-from __future__ import absolute_import
+from __future__ import absolute_import, unicode_literals
from django.forms import EmailField, IntegerField
from django.http import HttpResponse
@@ -475,16 +475,16 @@ class AssertRaisesMsgTest(SimpleTestCase):
class AssertFieldOutputTests(SimpleTestCase):
def test_assert_field_output(self):
- error_invalid = [u'Enter a valid e-mail address.']
+ error_invalid = ['Enter a valid e-mail address.']
self.assertFieldOutput(EmailField, {'a@a.com': 'a@a.com'}, {'aaa': error_invalid})
- self.assertRaises(AssertionError, self.assertFieldOutput, EmailField, {'a@a.com': 'a@a.com'}, {'aaa': error_invalid + [u'Another error']})
+ self.assertRaises(AssertionError, self.assertFieldOutput, EmailField, {'a@a.com': 'a@a.com'}, {'aaa': error_invalid + ['Another error']})
self.assertRaises(AssertionError, self.assertFieldOutput, EmailField, {'a@a.com': 'Wrong output'}, {'aaa': error_invalid})
- self.assertRaises(AssertionError, self.assertFieldOutput, EmailField, {'a@a.com': 'a@a.com'}, {'aaa': [u'Come on, gimme some well formatted data, dude.']})
+ self.assertRaises(AssertionError, self.assertFieldOutput, EmailField, {'a@a.com': 'a@a.com'}, {'aaa': ['Come on, gimme some well formatted data, dude.']})
def test_custom_required_message(self):
class MyCustomField(IntegerField):
default_error_messages = {
- 'required': u'This is really required.',
+ 'required': 'This is really required.',
}
self.assertFieldOutput(MyCustomField, {}, {}, empty_value=None)
diff --git a/tests/regressiontests/text/tests.py b/tests/regressiontests/text/tests.py
index e4c4c00938..e61c14d103 100644
--- a/tests/regressiontests/text/tests.py
+++ b/tests/regressiontests/text/tests.py
@@ -1,4 +1,5 @@
# coding: utf-8
+from __future__ import unicode_literals
from django.test import TestCase
from django.utils.encoding import iri_to_uri
@@ -14,72 +15,72 @@ class TextTests(TestCase):
"""
def test_get_text_list(self):
- self.assertEqual(get_text_list(['a', 'b', 'c', 'd']), u'a, b, c or d')
- self.assertEqual(get_text_list(['a', 'b', 'c'], 'and'), u'a, b and c')
- self.assertEqual(get_text_list(['a', 'b'], 'and'), u'a and b')
- self.assertEqual(get_text_list(['a']), u'a')
- self.assertEqual(get_text_list([]), u'')
+ self.assertEqual(get_text_list(['a', 'b', 'c', 'd']), 'a, b, c or d')
+ self.assertEqual(get_text_list(['a', 'b', 'c'], 'and'), 'a, b and c')
+ self.assertEqual(get_text_list(['a', 'b'], 'and'), 'a and b')
+ self.assertEqual(get_text_list(['a']), 'a')
+ self.assertEqual(get_text_list([]), '')
with override('ar'):
- self.assertEqual(get_text_list(['a', 'b', 'c']), u"a، b أو c")
+ self.assertEqual(get_text_list(['a', 'b', 'c']), "a، b أو c")
def test_smart_split(self):
self.assertEqual(list(smart_split(r'''This is "a person" test.''')),
- [u'This', u'is', u'"a person"', u'test.'])
+ ['This', 'is', '"a person"', 'test.'])
self.assertEqual(list(smart_split(r'''This is "a person's" test.'''))[2],
- u'"a person\'s"')
+ '"a person\'s"')
self.assertEqual(list(smart_split(r'''This is "a person\"s" test.'''))[2],
- u'"a person\\"s"')
+ '"a person\\"s"')
- self.assertEqual(list(smart_split('''"a 'one''')), [u'"a', u"'one"])
+ self.assertEqual(list(smart_split('''"a 'one''')), ['"a', "'one"])
self.assertEqual(list(smart_split(r'''all friends' tests'''))[1],
"friends'")
- self.assertEqual(list(smart_split(u'url search_page words="something else"')),
- [u'url', u'search_page', u'words="something else"'])
+ self.assertEqual(list(smart_split('url search_page words="something else"')),
+ ['url', 'search_page', 'words="something else"'])
- self.assertEqual(list(smart_split(u"url search_page words='something else'")),
- [u'url', u'search_page', u"words='something else'"])
+ self.assertEqual(list(smart_split("url search_page words='something else'")),
+ ['url', 'search_page', "words='something else'"])
- self.assertEqual(list(smart_split(u'url search_page words "something else"')),
- [u'url', u'search_page', u'words', u'"something else"'])
+ self.assertEqual(list(smart_split('url search_page words "something else"')),
+ ['url', 'search_page', 'words', '"something else"'])
- self.assertEqual(list(smart_split(u'url search_page words-"something else"')),
- [u'url', u'search_page', u'words-"something else"'])
+ self.assertEqual(list(smart_split('url search_page words-"something else"')),
+ ['url', 'search_page', 'words-"something else"'])
- self.assertEqual(list(smart_split(u'url search_page words=hello')),
- [u'url', u'search_page', u'words=hello'])
+ self.assertEqual(list(smart_split('url search_page words=hello')),
+ ['url', 'search_page', 'words=hello'])
- self.assertEqual(list(smart_split(u'url search_page words="something else')),
- [u'url', u'search_page', u'words="something', u'else'])
+ self.assertEqual(list(smart_split('url search_page words="something else')),
+ ['url', 'search_page', 'words="something', 'else'])
self.assertEqual(list(smart_split("cut:','|cut:' '")),
- [u"cut:','|cut:' '"])
+ ["cut:','|cut:' '"])
def test_urlquote(self):
- self.assertEqual(urlquote(u'Paris & Orl\xe9ans'),
- u'Paris%20%26%20Orl%C3%A9ans')
- self.assertEqual(urlquote(u'Paris & Orl\xe9ans', safe="&"),
- u'Paris%20&%20Orl%C3%A9ans')
+ self.assertEqual(urlquote('Paris & Orl\xe9ans'),
+ 'Paris%20%26%20Orl%C3%A9ans')
+ self.assertEqual(urlquote('Paris & Orl\xe9ans', safe="&"),
+ 'Paris%20&%20Orl%C3%A9ans')
self.assertEqual(
- urlunquote(u'Paris%20%26%20Orl%C3%A9ans'),
- u'Paris & Orl\xe9ans')
+ urlunquote('Paris%20%26%20Orl%C3%A9ans'),
+ 'Paris & Orl\xe9ans')
self.assertEqual(
- urlunquote(u'Paris%20&%20Orl%C3%A9ans'),
- u'Paris & Orl\xe9ans')
- self.assertEqual(urlquote_plus(u'Paris & Orl\xe9ans'),
- u'Paris+%26+Orl%C3%A9ans')
- self.assertEqual(urlquote_plus(u'Paris & Orl\xe9ans', safe="&"),
- u'Paris+&+Orl%C3%A9ans')
+ urlunquote('Paris%20&%20Orl%C3%A9ans'),
+ 'Paris & Orl\xe9ans')
+ self.assertEqual(urlquote_plus('Paris & Orl\xe9ans'),
+ 'Paris+%26+Orl%C3%A9ans')
+ self.assertEqual(urlquote_plus('Paris & Orl\xe9ans', safe="&"),
+ 'Paris+&+Orl%C3%A9ans')
self.assertEqual(
- urlunquote_plus(u'Paris+%26+Orl%C3%A9ans'),
- u'Paris & Orl\xe9ans')
+ urlunquote_plus('Paris+%26+Orl%C3%A9ans'),
+ 'Paris & Orl\xe9ans')
self.assertEqual(
- urlunquote_plus(u'Paris+&+Orl%C3%A9ans'),
- u'Paris & Orl\xe9ans')
+ urlunquote_plus('Paris+&+Orl%C3%A9ans'),
+ 'Paris & Orl\xe9ans')
def test_cookie_date(self):
t = 1167616461.0
@@ -90,15 +91,15 @@ class TextTests(TestCase):
self.assertEqual(http_date(t), 'Mon, 01 Jan 2007 01:54:21 GMT')
def test_iri_to_uri(self):
- self.assertEqual(iri_to_uri(u'red%09ros\xe9#red'),
+ self.assertEqual(iri_to_uri('red%09ros\xe9#red'),
'red%09ros%C3%A9#red')
- self.assertEqual(iri_to_uri(u'/blog/for/J\xfcrgen M\xfcnster/'),
+ self.assertEqual(iri_to_uri('/blog/for/J\xfcrgen M\xfcnster/'),
'/blog/for/J%C3%BCrgen%20M%C3%BCnster/')
- self.assertEqual(iri_to_uri(u'locations/%s' % urlquote_plus(u'Paris & Orl\xe9ans')),
+ self.assertEqual(iri_to_uri('locations/%s' % urlquote_plus('Paris & Orl\xe9ans')),
'locations/Paris+%26+Orl%C3%A9ans')
def test_iri_to_uri_idempotent(self):
- self.assertEqual(iri_to_uri(iri_to_uri(u'red%09ros\xe9#red')),
+ self.assertEqual(iri_to_uri(iri_to_uri('red%09ros\xe9#red')),
'red%09ros%C3%A9#red')
diff --git a/tests/regressiontests/utils/dateformat.py b/tests/regressiontests/utils/dateformat.py
index c1910b0f33..0f18bb2a4d 100644
--- a/tests/regressiontests/utils/dateformat.py
+++ b/tests/regressiontests/utils/dateformat.py
@@ -1,3 +1,5 @@
+from __future__ import unicode_literals
+
from datetime import datetime, date
import os
import time
@@ -58,57 +60,57 @@ class DateFormatTests(unittest.TestCase):
def test_epoch(self):
udt = datetime(1970, 1, 1, tzinfo=utc)
- self.assertEqual(format(udt, 'U'), u'0')
+ self.assertEqual(format(udt, 'U'), '0')
def test_empty_format(self):
my_birthday = datetime(1979, 7, 8, 22, 00)
- self.assertEqual(dateformat.format(my_birthday, ''), u'')
+ self.assertEqual(dateformat.format(my_birthday, ''), '')
def test_am_pm(self):
my_birthday = datetime(1979, 7, 8, 22, 00)
- self.assertEqual(dateformat.format(my_birthday, 'a'), u'p.m.')
+ self.assertEqual(dateformat.format(my_birthday, 'a'), 'p.m.')
def test_date_formats(self):
my_birthday = datetime(1979, 7, 8, 22, 00)
timestamp = datetime(2008, 5, 19, 11, 45, 23, 123456)
- self.assertEqual(dateformat.format(my_birthday, 'A'), u'PM')
- self.assertEqual(dateformat.format(timestamp, 'c'), u'2008-05-19T11:45:23.123456')
- self.assertEqual(dateformat.format(my_birthday, 'd'), u'08')
- self.assertEqual(dateformat.format(my_birthday, 'j'), u'8')
- self.assertEqual(dateformat.format(my_birthday, 'l'), u'Sunday')
- self.assertEqual(dateformat.format(my_birthday, 'L'), u'False')
- self.assertEqual(dateformat.format(my_birthday, 'm'), u'07')
- self.assertEqual(dateformat.format(my_birthday, 'M'), u'Jul')
- self.assertEqual(dateformat.format(my_birthday, 'b'), u'jul')
- self.assertEqual(dateformat.format(my_birthday, 'n'), u'7')
- self.assertEqual(dateformat.format(my_birthday, 'N'), u'July')
+ self.assertEqual(dateformat.format(my_birthday, 'A'), 'PM')
+ self.assertEqual(dateformat.format(timestamp, 'c'), '2008-05-19T11:45:23.123456')
+ self.assertEqual(dateformat.format(my_birthday, 'd'), '08')
+ self.assertEqual(dateformat.format(my_birthday, 'j'), '8')
+ self.assertEqual(dateformat.format(my_birthday, 'l'), 'Sunday')
+ self.assertEqual(dateformat.format(my_birthday, 'L'), 'False')
+ self.assertEqual(dateformat.format(my_birthday, 'm'), '07')
+ self.assertEqual(dateformat.format(my_birthday, 'M'), 'Jul')
+ self.assertEqual(dateformat.format(my_birthday, 'b'), 'jul')
+ self.assertEqual(dateformat.format(my_birthday, 'n'), '7')
+ self.assertEqual(dateformat.format(my_birthday, 'N'), 'July')
def test_time_formats(self):
my_birthday = datetime(1979, 7, 8, 22, 00)
- self.assertEqual(dateformat.format(my_birthday, 'P'), u'10 p.m.')
- self.assertEqual(dateformat.format(my_birthday, 's'), u'00')
- self.assertEqual(dateformat.format(my_birthday, 'S'), u'th')
- self.assertEqual(dateformat.format(my_birthday, 't'), u'31')
- self.assertEqual(dateformat.format(my_birthday, 'w'), u'0')
- self.assertEqual(dateformat.format(my_birthday, 'W'), u'27')
- self.assertEqual(dateformat.format(my_birthday, 'y'), u'79')
- self.assertEqual(dateformat.format(my_birthday, 'Y'), u'1979')
- self.assertEqual(dateformat.format(my_birthday, 'z'), u'189')
+ self.assertEqual(dateformat.format(my_birthday, 'P'), '10 p.m.')
+ self.assertEqual(dateformat.format(my_birthday, 's'), '00')
+ self.assertEqual(dateformat.format(my_birthday, 'S'), 'th')
+ self.assertEqual(dateformat.format(my_birthday, 't'), '31')
+ self.assertEqual(dateformat.format(my_birthday, 'w'), '0')
+ self.assertEqual(dateformat.format(my_birthday, 'W'), '27')
+ self.assertEqual(dateformat.format(my_birthday, 'y'), '79')
+ self.assertEqual(dateformat.format(my_birthday, 'Y'), '1979')
+ self.assertEqual(dateformat.format(my_birthday, 'z'), '189')
def test_dateformat(self):
my_birthday = datetime(1979, 7, 8, 22, 00)
- self.assertEqual(dateformat.format(my_birthday, r'Y z \C\E\T'), u'1979 189 CET')
+ self.assertEqual(dateformat.format(my_birthday, r'Y z \C\E\T'), '1979 189 CET')
- self.assertEqual(dateformat.format(my_birthday, r'jS \o\f F'), u'8th of July')
+ self.assertEqual(dateformat.format(my_birthday, r'jS \o\f F'), '8th of July')
def test_futuredates(self):
the_future = datetime(2100, 10, 25, 0, 00)
- self.assertEqual(dateformat.format(the_future, r'Y'), u'2100')
+ self.assertEqual(dateformat.format(the_future, r'Y'), '2100')
def test_timezones(self):
my_birthday = datetime(1979, 7, 8, 22, 00)
@@ -117,19 +119,19 @@ class DateFormatTests(unittest.TestCase):
timestamp = datetime(2008, 5, 19, 11, 45, 23, 123456)
if self.tz_tests:
- self.assertEqual(dateformat.format(my_birthday, 'O'), u'+0100')
- self.assertEqual(dateformat.format(my_birthday, 'r'), u'Sun, 8 Jul 1979 22:00:00 +0100')
- self.assertEqual(dateformat.format(my_birthday, 'T'), u'CET')
- self.assertEqual(dateformat.format(my_birthday, 'U'), u'300315600')
- self.assertEqual(dateformat.format(timestamp, 'u'), u'123456')
- self.assertEqual(dateformat.format(my_birthday, 'Z'), u'3600')
- self.assertEqual(dateformat.format(summertime, 'I'), u'1')
- self.assertEqual(dateformat.format(summertime, 'O'), u'+0200')
- self.assertEqual(dateformat.format(wintertime, 'I'), u'0')
- self.assertEqual(dateformat.format(wintertime, 'O'), u'+0100')
+ self.assertEqual(dateformat.format(my_birthday, 'O'), '+0100')
+ self.assertEqual(dateformat.format(my_birthday, 'r'), 'Sun, 8 Jul 1979 22:00:00 +0100')
+ self.assertEqual(dateformat.format(my_birthday, 'T'), 'CET')
+ self.assertEqual(dateformat.format(my_birthday, 'U'), '300315600')
+ self.assertEqual(dateformat.format(timestamp, 'u'), '123456')
+ self.assertEqual(dateformat.format(my_birthday, 'Z'), '3600')
+ self.assertEqual(dateformat.format(summertime, 'I'), '1')
+ self.assertEqual(dateformat.format(summertime, 'O'), '+0200')
+ self.assertEqual(dateformat.format(wintertime, 'I'), '0')
+ self.assertEqual(dateformat.format(wintertime, 'O'), '+0100')
# Ticket #16924 -- We don't need timezone support to test this
# 3h30m to the west of UTC
tz = FixedOffset(-3*60 - 30)
dt = datetime(2009, 5, 16, 5, 30, 30, tzinfo=tz)
- self.assertEqual(dateformat.format(dt, 'O'), u'-0330')
+ self.assertEqual(dateformat.format(dt, 'O'), '-0330')
diff --git a/tests/regressiontests/utils/feedgenerator.py b/tests/regressiontests/utils/feedgenerator.py
index 4f1d07852c..b646a5997d 100644
--- a/tests/regressiontests/utils/feedgenerator.py
+++ b/tests/regressiontests/utils/feedgenerator.py
@@ -1,3 +1,5 @@
+from __future__ import unicode_literals
+
import datetime
from django.utils import feedgenerator, tzinfo, unittest
@@ -13,7 +15,7 @@ class FeedgeneratorTest(unittest.TestCase):
"""
self.assertEqual(
feedgenerator.get_tag_uri('http://example.org/foo/bar#headline', datetime.date(2004, 10, 25)),
- u'tag:example.org,2004-10-25:/foo/bar/headline')
+ 'tag:example.org,2004-10-25:/foo/bar/headline')
def test_get_tag_uri_with_port(self):
"""
@@ -22,7 +24,7 @@ class FeedgeneratorTest(unittest.TestCase):
"""
self.assertEqual(
feedgenerator.get_tag_uri('http://www.example.org:8000/2008/11/14/django#headline', datetime.datetime(2008, 11, 14, 13, 37, 0)),
- u'tag:www.example.org,2008-11-14:/2008/11/14/django/headline')
+ 'tag:www.example.org,2008-11-14:/2008/11/14/django/headline')
def test_rfc2822_date(self):
"""
diff --git a/tests/regressiontests/utils/html.py b/tests/regressiontests/utils/html.py
index d8b9bde8bf..434873b9e0 100644
--- a/tests/regressiontests/utils/html.py
+++ b/tests/regressiontests/utils/html.py
@@ -1,3 +1,5 @@
+from __future__ import unicode_literals
+
import unittest
from django.utils import html
@@ -113,11 +115,11 @@ class TestUtilsHtml(unittest.TestCase):
def test_escapejs(self):
f = html.escapejs
items = (
- (u'"double quotes" and \'single quotes\'', u'\\u0022double quotes\\u0022 and \\u0027single quotes\\u0027'),
- (ur'\ : backslashes, too', u'\\u005C : backslashes, too'),
- (u'and lots of whitespace: \r\n\t\v\f\b', u'and lots of whitespace: \\u000D\\u000A\\u0009\\u000B\\u000C\\u0008'),
- (ur'<script>and this</script>', u'\\u003Cscript\\u003Eand this\\u003C/script\\u003E'),
- (u'paragraph separator:\u2029and line separator:\u2028', u'paragraph separator:\\u2029and line separator:\\u2028'),
+ ('"double quotes" and \'single quotes\'', '\\u0022double quotes\\u0022 and \\u0027single quotes\\u0027'),
+ (r'\ : backslashes, too', '\\u005C : backslashes, too'),
+ ('and lots of whitespace: \r\n\t\v\f\b', 'and lots of whitespace: \\u000D\\u000A\\u0009\\u000B\\u000C\\u0008'),
+ (r'<script>and this</script>', '\\u003Cscript\\u003Eand this\\u003C/script\\u003E'),
+ ('paragraph separator:\u2029and line separator:\u2028', 'paragraph separator:\\u2029and line separator:\\u2028'),
)
for value, output in items:
self.check_output(f, value, output)
@@ -125,11 +127,11 @@ class TestUtilsHtml(unittest.TestCase):
def test_clean_html(self):
f = html.clean_html
items = (
- (u'<p>I <i>believe</i> in <b>semantic markup</b>!</p>', u'<p>I <em>believe</em> in <strong>semantic markup</strong>!</p>'),
- (u'I escape & I don\'t <a href="#" target="_blank">target</a>', u'I escape &amp; I don\'t <a href="#" >target</a>'),
- (u'<p>I kill whitespace</p><br clear="all"><p>&nbsp;</p>', u'<p>I kill whitespace</p>'),
+ ('<p>I <i>believe</i> in <b>semantic markup</b>!</p>', '<p>I <em>believe</em> in <strong>semantic markup</strong>!</p>'),
+ ('I escape & I don\'t <a href="#" target="_blank">target</a>', 'I escape &amp; I don\'t <a href="#" >target</a>'),
+ ('<p>I kill whitespace</p><br clear="all"><p>&nbsp;</p>', '<p>I kill whitespace</p>'),
# also a regression test for #7267: this used to raise an UnicodeDecodeError
- (u'<p>* foo</p><p>* bar</p>', u'<ul>\n<li> foo</li><li> bar</li>\n</ul>'),
+ ('<p>* foo</p><p>* bar</p>', '<ul>\n<li> foo</li><li> bar</li>\n</ul>'),
)
for value, output in items:
self.check_output(f, value, output)
diff --git a/tests/regressiontests/utils/ipv6.py b/tests/regressiontests/utils/ipv6.py
index 86d1ad1573..1713de82b8 100644
--- a/tests/regressiontests/utils/ipv6.py
+++ b/tests/regressiontests/utils/ipv6.py
@@ -1,3 +1,5 @@
+from __future__ import unicode_literals
+
from django.utils import unittest
from django.utils.ipv6 import is_valid_ipv6_address, clean_ipv6_address
@@ -36,16 +38,16 @@ class TestUtilsIPv6(unittest.TestCase):
self.assertFalse(is_valid_ipv6_address('::zzzz:0a0a'))
def test_cleanes_plain_address(self):
- self.assertEqual(clean_ipv6_address('DEAD::0:BEEF'), u'dead::beef')
- self.assertEqual(clean_ipv6_address('2001:000:a:0000:0:fe:fe:beef'), u'2001:0:a::fe:fe:beef')
- self.assertEqual(clean_ipv6_address('2001::a:0000:0:fe:fe:beef'), u'2001:0:a::fe:fe:beef')
+ self.assertEqual(clean_ipv6_address('DEAD::0:BEEF'), 'dead::beef')
+ self.assertEqual(clean_ipv6_address('2001:000:a:0000:0:fe:fe:beef'), '2001:0:a::fe:fe:beef')
+ self.assertEqual(clean_ipv6_address('2001::a:0000:0:fe:fe:beef'), '2001:0:a::fe:fe:beef')
def test_cleanes_with_v4_mapping(self):
- self.assertEqual(clean_ipv6_address('::ffff:0a0a:0a0a'), u'::ffff:10.10.10.10')
- self.assertEqual(clean_ipv6_address('::ffff:1234:1234'), u'::ffff:18.52.18.52')
- self.assertEqual(clean_ipv6_address('::ffff:18.52.18.52'), u'::ffff:18.52.18.52')
+ self.assertEqual(clean_ipv6_address('::ffff:0a0a:0a0a'), '::ffff:10.10.10.10')
+ self.assertEqual(clean_ipv6_address('::ffff:1234:1234'), '::ffff:18.52.18.52')
+ self.assertEqual(clean_ipv6_address('::ffff:18.52.18.52'), '::ffff:18.52.18.52')
def test_unpacks_ipv4(self):
- self.assertEqual(clean_ipv6_address('::ffff:0a0a:0a0a', unpack_ipv4=True), u'10.10.10.10')
- self.assertEqual(clean_ipv6_address('::ffff:1234:1234', unpack_ipv4=True), u'18.52.18.52')
- self.assertEqual(clean_ipv6_address('::ffff:18.52.18.52', unpack_ipv4=True), u'18.52.18.52')
+ self.assertEqual(clean_ipv6_address('::ffff:0a0a:0a0a', unpack_ipv4=True), '10.10.10.10')
+ self.assertEqual(clean_ipv6_address('::ffff:1234:1234', unpack_ipv4=True), '18.52.18.52')
+ self.assertEqual(clean_ipv6_address('::ffff:18.52.18.52', unpack_ipv4=True), '18.52.18.52')
diff --git a/tests/regressiontests/utils/jslex.py b/tests/regressiontests/utils/jslex.py
index 7cd93ca36d..a2af7b4bcf 100644
--- a/tests/regressiontests/utils/jslex.py
+++ b/tests/regressiontests/utils/jslex.py
@@ -23,7 +23,7 @@ class JsTokensTest(TestCase):
(''' 'hello' "hello" ''', ["string 'hello'", 'string "hello"']),
(r""" 'don\'t' "don\"t" '"' "'" '\'' "\"" """,
[r"""string 'don\'t'""", r'''string "don\"t"''', r"""string '"'""", r'''string "'"''', r"""string '\''""", r'''string "\""''']),
- (ur'"ƃuıxǝ⅂ ʇdıɹɔsɐʌɐſ\""', [ur'string "ƃuıxǝ⅂ ʇdıɹɔsɐʌɐſ\""']),
+ (r'"ƃuıxǝ⅂ ʇdıɹɔsɐʌɐſ\""', [r'string "ƃuıxǝ⅂ ʇdıɹɔsɐʌɐſ\""']),
# comments
("a//b", ["id a", "linecomment //b"]),
("/****/a/=2//hello", ["comment /****/", "id a", "punct /=", "dnum 2", "linecomment //hello"]),
diff --git a/tests/regressiontests/utils/regex_helper.py b/tests/regressiontests/utils/regex_helper.py
index 8dc712f5b9..41f4a4f85d 100644
--- a/tests/regressiontests/utils/regex_helper.py
+++ b/tests/regressiontests/utils/regex_helper.py
@@ -1,3 +1,5 @@
+from __future__ import unicode_literals
+
from django.utils import regex_helper
from django.utils import unittest
@@ -5,44 +7,44 @@ from django.utils import unittest
class NormalizeTests(unittest.TestCase):
def test_empty(self):
pattern = r""
- expected = [(u'', [])]
+ expected = [('', [])]
result = regex_helper.normalize(pattern)
self.assertEqual(result, expected)
def test_escape(self):
pattern = r"\\\^\$\.\|\?\*\+\(\)\["
- expected = [(u'\\^$.|?*+()[', [])]
+ expected = [('\\^$.|?*+()[', [])]
result = regex_helper.normalize(pattern)
self.assertEqual(result, expected)
def test_group_positional(self):
pattern = r"(.*)-(.+)"
- expected = [(u'%(_0)s-%(_1)s', ['_0', '_1'])]
+ expected = [('%(_0)s-%(_1)s', ['_0', '_1'])]
result = regex_helper.normalize(pattern)
self.assertEqual(result, expected)
def test_group_ignored(self):
pattern = r"(?i)(?L)(?m)(?s)(?u)(?#)"
- expected = [(u'', [])]
+ expected = [('', [])]
result = regex_helper.normalize(pattern)
self.assertEqual(result, expected)
def test_group_noncapturing(self):
pattern = r"(?:non-capturing)"
- expected = [(u'non-capturing', [])]
+ expected = [('non-capturing', [])]
result = regex_helper.normalize(pattern)
self.assertEqual(result, expected)
def test_group_named(self):
pattern = r"(?P<first_group_name>.*)-(?P<second_group_name>.*)"
- expected = [(u'%(first_group_name)s-%(second_group_name)s',
+ expected = [('%(first_group_name)s-%(second_group_name)s',
['first_group_name', 'second_group_name'])]
result = regex_helper.normalize(pattern)
self.assertEqual(result, expected)
def test_group_backreference(self):
pattern = r"(?P<first_group_name>.*)-(?P=first_group_name)"
- expected = [(u'%(first_group_name)s-%(first_group_name)s',
+ expected = [('%(first_group_name)s-%(first_group_name)s',
['first_group_name'])]
result = regex_helper.normalize(pattern)
self.assertEqual(result, expected)
diff --git a/tests/regressiontests/utils/simplelazyobject.py b/tests/regressiontests/utils/simplelazyobject.py
index 4ee822563e..982d2226e6 100644
--- a/tests/regressiontests/utils/simplelazyobject.py
+++ b/tests/regressiontests/utils/simplelazyobject.py
@@ -1,6 +1,9 @@
+from __future__ import unicode_literals
+
import copy
import pickle
+from django.test.utils import str_prefix
from django.utils.unittest import TestCase
from django.utils.functional import SimpleLazyObject, empty
@@ -51,10 +54,11 @@ class TestUtilsSimpleLazyObject(TestCase):
self.assertTrue("SimpleLazyObject" in repr(SimpleLazyObject(complex_object)))
def test_str(self):
- self.assertEqual("I am _ComplexObject('joe')", str(SimpleLazyObject(complex_object)))
+ self.assertEqual(str_prefix("I am _ComplexObject(%(_)s'joe')"),
+ str(SimpleLazyObject(complex_object)))
def test_unicode(self):
- self.assertEqual(u"joe", unicode(SimpleLazyObject(complex_object)))
+ self.assertEqual("joe", unicode(SimpleLazyObject(complex_object)))
def test_class(self):
# This is important for classes that use __class__ in things like
diff --git a/tests/regressiontests/utils/text.py b/tests/regressiontests/utils/text.py
index ad65ec89ee..dd6de63841 100644
--- a/tests/regressiontests/utils/text.py
+++ b/tests/regressiontests/utils/text.py
@@ -1,4 +1,6 @@
# -*- coding: utf-8 -*-
+from __future__ import unicode_literals
+
import warnings
from django.test import SimpleTestCase
@@ -10,104 +12,104 @@ class TestUtilsText(SimpleTestCase):
# so these tests will need to be adapted accordingly
def test_truncate_chars(self):
truncator = text.Truncator(
- u'The quick brown fox jumped over the lazy dog.'
+ 'The quick brown fox jumped over the lazy dog.'
)
- self.assertEqual(u'The quick brown fox jumped over the lazy dog.',
+ self.assertEqual('The quick brown fox jumped over the lazy dog.',
truncator.chars(100)),
- self.assertEqual(u'The quick brown fox ...',
+ self.assertEqual('The quick brown fox ...',
truncator.chars(23)),
- self.assertEqual(u'The quick brown fo.....',
+ self.assertEqual('The quick brown fo.....',
truncator.chars(23, '.....')),
# Ensure that we normalize our unicode data first
- nfc = text.Truncator(u'o\xfco\xfco\xfco\xfc')
- nfd = text.Truncator(u'ou\u0308ou\u0308ou\u0308ou\u0308')
- self.assertEqual(u'oüoüoüoü', nfc.chars(8))
- self.assertEqual(u'oüoüoüoü', nfd.chars(8))
- self.assertEqual(u'oü...', nfc.chars(5))
- self.assertEqual(u'oü...', nfd.chars(5))
+ nfc = text.Truncator('o\xfco\xfco\xfco\xfc')
+ nfd = text.Truncator('ou\u0308ou\u0308ou\u0308ou\u0308')
+ self.assertEqual('oüoüoüoü', nfc.chars(8))
+ self.assertEqual('oüoüoüoü', nfd.chars(8))
+ self.assertEqual('oü...', nfc.chars(5))
+ self.assertEqual('oü...', nfd.chars(5))
# Ensure the final length is calculated correctly when there are
# combining characters with no precomposed form, and that combining
# characters are not split up.
- truncator = text.Truncator(u'-B\u030AB\u030A----8')
- self.assertEqual(u'-B\u030A...', truncator.chars(5))
- self.assertEqual(u'-B\u030AB\u030A-...', truncator.chars(7))
- self.assertEqual(u'-B\u030AB\u030A----8', truncator.chars(8))
+ truncator = text.Truncator('-B\u030AB\u030A----8')
+ self.assertEqual('-B\u030A...', truncator.chars(5))
+ self.assertEqual('-B\u030AB\u030A-...', truncator.chars(7))
+ self.assertEqual('-B\u030AB\u030A----8', truncator.chars(8))
# Ensure the length of the end text is correctly calculated when it
# contains combining characters with no precomposed form.
- truncator = text.Truncator(u'-----')
- self.assertEqual(u'---B\u030A', truncator.chars(4, u'B\u030A'))
- self.assertEqual(u'-----', truncator.chars(5, u'B\u030A'))
+ truncator = text.Truncator('-----')
+ self.assertEqual('---B\u030A', truncator.chars(4, 'B\u030A'))
+ self.assertEqual('-----', truncator.chars(5, 'B\u030A'))
# Make a best effort to shorten to the desired length, but requesting
# a length shorter than the ellipsis shouldn't break
- self.assertEqual(u'...', text.Truncator(u'asdf').chars(1))
+ self.assertEqual('...', text.Truncator('asdf').chars(1))
def test_truncate_words(self):
- truncator = text.Truncator(u'The quick brown fox jumped over the lazy '
+ truncator = text.Truncator('The quick brown fox jumped over the lazy '
'dog.')
- self.assertEqual(u'The quick brown fox jumped over the lazy dog.',
+ self.assertEqual('The quick brown fox jumped over the lazy dog.',
truncator.words(10))
- self.assertEqual(u'The quick brown fox...', truncator.words(4))
- self.assertEqual(u'The quick brown fox[snip]',
+ self.assertEqual('The quick brown fox...', truncator.words(4))
+ self.assertEqual('The quick brown fox[snip]',
truncator.words(4, '[snip]'))
def test_truncate_html_words(self):
truncator = text.Truncator('<p><strong><em>The quick brown fox jumped '
'over the lazy dog.</em></strong></p>')
- self.assertEqual(u'<p><strong><em>The quick brown fox jumped over the '
+ self.assertEqual('<p><strong><em>The quick brown fox jumped over the '
'lazy dog.</em></strong></p>', truncator.words(10, html=True))
- self.assertEqual(u'<p><strong><em>The quick brown fox...</em>'
+ self.assertEqual('<p><strong><em>The quick brown fox...</em>'
'</strong></p>', truncator.words(4, html=True))
- self.assertEqual(u'<p><strong><em>The quick brown fox....</em>'
+ self.assertEqual('<p><strong><em>The quick brown fox....</em>'
'</strong></p>', truncator.words(4, '....', html=True))
- self.assertEqual(u'<p><strong><em>The quick brown fox</em></strong>'
+ self.assertEqual('<p><strong><em>The quick brown fox</em></strong>'
'</p>', truncator.words(4, '', html=True))
# Test with new line inside tag
truncator = text.Truncator('<p>The quick <a href="xyz.html"\n'
'id="mylink">brown fox</a> jumped over the lazy dog.</p>')
- self.assertEqual(u'<p>The quick <a href="xyz.html"\n'
+ self.assertEqual('<p>The quick <a href="xyz.html"\n'
'id="mylink">brown...</a></p>', truncator.words(3, '...', html=True))
def test_old_truncate_words(self):
with warnings.catch_warnings(record=True) as w:
warnings.simplefilter("always")
- self.assertEqual(u'The quick brown fox jumped over the lazy dog.',
- text.truncate_words(u'The quick brown fox jumped over the lazy dog.', 10))
- self.assertEqual(u'The quick brown fox ...',
+ self.assertEqual('The quick brown fox jumped over the lazy dog.',
+ text.truncate_words('The quick brown fox jumped over the lazy dog.', 10))
+ self.assertEqual('The quick brown fox ...',
text.truncate_words('The quick brown fox jumped over the lazy dog.', 4))
- self.assertEqual(u'The quick brown fox ....',
+ self.assertEqual('The quick brown fox ....',
text.truncate_words('The quick brown fox jumped over the lazy dog.', 4, '....'))
self.assertGreater(len(w), 0)
def test_old_truncate_html_words(self):
with warnings.catch_warnings(record=True) as w:
warnings.simplefilter("always")
- self.assertEqual(u'<p><strong><em>The quick brown fox jumped over the lazy dog.</em></strong></p>',
+ self.assertEqual('<p><strong><em>The quick brown fox jumped over the lazy dog.</em></strong></p>',
text.truncate_html_words('<p><strong><em>The quick brown fox jumped over the lazy dog.</em></strong></p>', 10))
- self.assertEqual(u'<p><strong><em>The quick brown fox ...</em></strong></p>',
+ self.assertEqual('<p><strong><em>The quick brown fox ...</em></strong></p>',
text.truncate_html_words('<p><strong><em>The quick brown fox jumped over the lazy dog.</em></strong></p>', 4))
- self.assertEqual(u'<p><strong><em>The quick brown fox ....</em></strong></p>',
+ self.assertEqual('<p><strong><em>The quick brown fox ....</em></strong></p>',
text.truncate_html_words('<p><strong><em>The quick brown fox jumped over the lazy dog.</em></strong></p>', 4, '....'))
- self.assertEqual(u'<p><strong><em>The quick brown fox</em></strong></p>',
+ self.assertEqual('<p><strong><em>The quick brown fox</em></strong></p>',
text.truncate_html_words('<p><strong><em>The quick brown fox jumped over the lazy dog.</em></strong></p>', 4, None))
self.assertGreater(len(w), 0)
def test_wrap(self):
digits = '1234 67 9'
- self.assertEqual(text.wrap(digits, 100), u'1234 67 9')
- self.assertEqual(text.wrap(digits, 9), u'1234 67 9')
- self.assertEqual(text.wrap(digits, 8), u'1234 67\n9')
+ self.assertEqual(text.wrap(digits, 100), '1234 67 9')
+ self.assertEqual(text.wrap(digits, 9), '1234 67 9')
+ self.assertEqual(text.wrap(digits, 8), '1234 67\n9')
self.assertEqual(text.wrap('short\na long line', 7),
- u'short\na long\nline')
+ 'short\na long\nline')
self.assertEqual(text.wrap('do-not-break-long-words please? ok', 8),
- u'do-not-break-long-words\nplease?\nok')
+ 'do-not-break-long-words\nplease?\nok')
long_word = 'l%sng' % ('o' * 20)
self.assertEqual(text.wrap(long_word, 20), long_word)
self.assertEqual(text.wrap('a %s word' % long_word, 10),
- u'a\n%s\nword' % long_word)
+ 'a\n%s\nword' % long_word)
diff --git a/tests/regressiontests/utils/timesince.py b/tests/regressiontests/utils/timesince.py
index a4d479ad3e..5e641a42c4 100644
--- a/tests/regressiontests/utils/timesince.py
+++ b/tests/regressiontests/utils/timesince.py
@@ -1,3 +1,5 @@
+from __future__ import unicode_literals
+
import datetime
import unittest
@@ -19,32 +21,32 @@ class TimesinceTests(unittest.TestCase):
def test_equal_datetimes(self):
""" equal datetimes. """
- self.assertEqual(timesince(self.t, self.t), u'0 minutes')
+ self.assertEqual(timesince(self.t, self.t), '0 minutes')
def test_ignore_microseconds_and_seconds(self):
""" Microseconds and seconds are ignored. """
self.assertEqual(timesince(self.t, self.t+self.onemicrosecond),
- u'0 minutes')
+ '0 minutes')
self.assertEqual(timesince(self.t, self.t+self.onesecond),
- u'0 minutes')
+ '0 minutes')
def test_other_units(self):
""" Test other units. """
self.assertEqual(timesince(self.t, self.t+self.oneminute),
- u'1 minute')
- self.assertEqual(timesince(self.t, self.t+self.onehour), u'1 hour')
- self.assertEqual(timesince(self.t, self.t+self.oneday), u'1 day')
- self.assertEqual(timesince(self.t, self.t+self.oneweek), u'1 week')
+ '1 minute')
+ self.assertEqual(timesince(self.t, self.t+self.onehour), '1 hour')
+ self.assertEqual(timesince(self.t, self.t+self.oneday), '1 day')
+ self.assertEqual(timesince(self.t, self.t+self.oneweek), '1 week')
self.assertEqual(timesince(self.t, self.t+self.onemonth),
- u'1 month')
- self.assertEqual(timesince(self.t, self.t+self.oneyear), u'1 year')
+ '1 month')
+ self.assertEqual(timesince(self.t, self.t+self.oneyear), '1 year')
def test_multiple_units(self):
""" Test multiple units. """
self.assertEqual(timesince(self.t,
- self.t+2*self.oneday+6*self.onehour), u'2 days, 6 hours')
+ self.t+2*self.oneday+6*self.onehour), '2 days, 6 hours')
self.assertEqual(timesince(self.t,
- self.t+2*self.oneweek+2*self.oneday), u'2 weeks, 2 days')
+ self.t+2*self.oneweek+2*self.oneday), '2 weeks, 2 days')
def test_display_first_unit(self):
"""
@@ -53,10 +55,10 @@ class TimesinceTests(unittest.TestCase):
"""
self.assertEqual(timesince(self.t,
self.t+2*self.oneweek+3*self.onehour+4*self.oneminute),
- u'2 weeks')
+ '2 weeks')
self.assertEqual(timesince(self.t,
- self.t+4*self.oneday+5*self.oneminute), u'4 days')
+ self.t+4*self.oneday+5*self.oneminute), '4 days')
def test_display_second_before_first(self):
"""
@@ -64,30 +66,30 @@ class TimesinceTests(unittest.TestCase):
get 0 minutes.
"""
self.assertEqual(timesince(self.t, self.t-self.onemicrosecond),
- u'0 minutes')
+ '0 minutes')
self.assertEqual(timesince(self.t, self.t-self.onesecond),
- u'0 minutes')
+ '0 minutes')
self.assertEqual(timesince(self.t, self.t-self.oneminute),
- u'0 minutes')
+ '0 minutes')
self.assertEqual(timesince(self.t, self.t-self.onehour),
- u'0 minutes')
+ '0 minutes')
self.assertEqual(timesince(self.t, self.t-self.oneday),
- u'0 minutes')
+ '0 minutes')
self.assertEqual(timesince(self.t, self.t-self.oneweek),
- u'0 minutes')
+ '0 minutes')
self.assertEqual(timesince(self.t, self.t-self.onemonth),
- u'0 minutes')
+ '0 minutes')
self.assertEqual(timesince(self.t, self.t-self.oneyear),
- u'0 minutes')
+ '0 minutes')
self.assertEqual(timesince(self.t,
- self.t-2*self.oneday-6*self.onehour), u'0 minutes')
+ self.t-2*self.oneday-6*self.onehour), '0 minutes')
self.assertEqual(timesince(self.t,
- self.t-2*self.oneweek-2*self.oneday), u'0 minutes')
+ self.t-2*self.oneweek-2*self.oneday), '0 minutes')
self.assertEqual(timesince(self.t,
self.t-2*self.oneweek-3*self.onehour-4*self.oneminute),
- u'0 minutes')
+ '0 minutes')
self.assertEqual(timesince(self.t,
- self.t-4*self.oneday-5*self.oneminute), u'0 minutes')
+ self.t-4*self.oneday-5*self.oneminute), '0 minutes')
def test_different_timezones(self):
""" When using two different timezones. """
@@ -95,28 +97,28 @@ class TimesinceTests(unittest.TestCase):
now_tz = datetime.datetime.now(LocalTimezone(now))
now_tz_i = datetime.datetime.now(FixedOffset((3 * 60) + 15))
- self.assertEqual(timesince(now), u'0 minutes')
- self.assertEqual(timesince(now_tz), u'0 minutes')
- self.assertEqual(timeuntil(now_tz, now_tz_i), u'0 minutes')
+ self.assertEqual(timesince(now), '0 minutes')
+ self.assertEqual(timesince(now_tz), '0 minutes')
+ self.assertEqual(timeuntil(now_tz, now_tz_i), '0 minutes')
def test_date_objects(self):
""" Both timesince and timeuntil should work on date objects (#17937). """
today = datetime.date.today()
- self.assertEqual(timesince(today + self.oneday), u'0 minutes')
- self.assertEqual(timeuntil(today - self.oneday), u'0 minutes')
+ self.assertEqual(timesince(today + self.oneday), '0 minutes')
+ self.assertEqual(timeuntil(today - self.oneday), '0 minutes')
def test_both_date_objects(self):
""" Timesince should work with both date objects (#9672) """
today = datetime.date.today()
- self.assertEqual(timeuntil(today + self.oneday, today), u'1 day')
- self.assertEqual(timeuntil(today - self.oneday, today), u'0 minutes')
- self.assertEqual(timeuntil(today + self.oneweek, today), u'1 week')
+ self.assertEqual(timeuntil(today + self.oneday, today), '1 day')
+ self.assertEqual(timeuntil(today - self.oneday, today), '0 minutes')
+ self.assertEqual(timeuntil(today + self.oneweek, today), '1 week')
def test_naive_datetime_with_tzinfo_attribute(self):
class naive(datetime.tzinfo):
def utcoffset(self, dt):
return None
future = datetime.datetime(2080, 1, 1, tzinfo=naive())
- self.assertEqual(timesince(future), u'0 minutes')
+ self.assertEqual(timesince(future), '0 minutes')
past = datetime.datetime(1980, 1, 1, tzinfo=naive())
- self.assertEqual(timeuntil(past), u'0 minutes')
+ self.assertEqual(timeuntil(past), '0 minutes')
diff --git a/tests/regressiontests/views/__init__.py b/tests/regressiontests/views/__init__.py
index 1e12679af2..1193ffe010 100644
--- a/tests/regressiontests/views/__init__.py
+++ b/tests/regressiontests/views/__init__.py
@@ -1,10 +1,11 @@
# -*- coding: utf-8 -*-
+from __future__ import unicode_literals
class BrokenException(Exception):
pass
-except_args = (b'Broken!', # plain exception with ASCII text
- u'¡Broken!', # non-ASCII unicode data
- u'¡Broken!'.encode('utf-8'), # non-ASCII, utf-8 encoded bytestring
- b'\xa1Broken!', ) # non-ASCII, latin1 bytestring
+except_args = (b'Broken!', # plain exception with ASCII text
+ '¡Broken!', # non-ASCII unicode data
+ '¡Broken!'.encode('utf-8'), # non-ASCII, utf-8 encoded bytestring
+ b'\xa1Broken!', ) # non-ASCII, latin1 bytestring
diff --git a/tests/regressiontests/views/generic_urls.py b/tests/regressiontests/views/generic_urls.py
index 5bf929eb55..0f214d12d5 100644
--- a/tests/regressiontests/views/generic_urls.py
+++ b/tests/regressiontests/views/generic_urls.py
@@ -1,5 +1,5 @@
# -*- coding:utf-8 -*-
-from __future__ import absolute_import
+from __future__ import absolute_import, unicode_literals
from django.conf.urls import patterns, url
from django.views.generic import RedirectView
@@ -32,16 +32,16 @@ urlpatterns = patterns('',
(r'^accounts/logout/$', 'django.contrib.auth.views.logout'),
# Special URLs for particular regression cases.
- url(u'^中文/$', 'regressiontests.views.views.redirect'),
- url(u'^中文/target/$', 'regressiontests.views.views.index_page'),
+ url('^中文/$', 'regressiontests.views.views.redirect'),
+ url('^中文/target/$', 'regressiontests.views.views.index_page'),
)
# rediriects, both temporary and permanent, with non-ASCII targets
urlpatterns += patterns('',
('^nonascii_redirect/$', RedirectView.as_view(
- url=u'/中文/target/', permanent=False)),
+ url='/中文/target/', permanent=False)),
('^permanent_nonascii_redirect/$', RedirectView.as_view(
- url=u'/中文/target/', permanent=True)),
+ url='/中文/target/', permanent=True)),
)
urlpatterns += patterns('regressiontests.views.views',
diff --git a/tests/regressiontests/views/tests/specials.py b/tests/regressiontests/views/tests/specials.py
index cd8ac5bb6a..7d652841f8 100644
--- a/tests/regressiontests/views/tests/specials.py
+++ b/tests/regressiontests/views/tests/specials.py
@@ -1,4 +1,6 @@
# coding: utf-8
+from __future__ import unicode_literals
+
from django.test import TestCase
@@ -17,7 +19,7 @@ class URLHandling(TestCase):
characters so this test ensures the creation of the full path with a
base non-ASCII part is handled correctly.
"""
- response = self.client.get(u'/中文/')
+ response = self.client.get('/中文/')
self.assertRedirects(response, self.redirect_target)
def test_nonascii_redirect(self):
diff --git a/tests/regressiontests/wsgi/tests.py b/tests/regressiontests/wsgi/tests.py
index 0e8d7f2ada..9614a81c67 100644
--- a/tests/regressiontests/wsgi/tests.py
+++ b/tests/regressiontests/wsgi/tests.py
@@ -1,3 +1,5 @@
+from __future__ import unicode_literals
+
from django.core.exceptions import ImproperlyConfigured
from django.core.servers.basehttp import get_internal_wsgi_application
from django.core.wsgi import get_wsgi_application
@@ -38,7 +40,7 @@ class WSGITest(TestCase):
[('Content-Type', 'text/html; charset=utf-8')])
self.assertEqual(
unicode(response),
- u"Content-Type: text/html; charset=utf-8\n\nHello World!")
+ "Content-Type: text/html; charset=utf-8\n\nHello World!")
class GetInternalWSGIApplicationTest(unittest.TestCase):