summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorUnai Zalakain <unai@gisa-elkartea.org>2013-11-04 16:50:14 +0100
committerClaude Paroz <claude@2xlibre.net>2013-11-08 17:10:37 +0100
commit72f63bd24d44b5a4f24ad8fa27ebba96d9a507d8 (patch)
tree03ad4a7dd8a6be5975da0478c67ba0a6409ba482
parentbc21e9c0d9253f9d49a0063830a645d1c724c696 (diff)
Fixed #17529 -- get_template_from_string default arguments break
``get_template_from_string`` default arguments were breaking ``assertTemplateUsed``. The solution has been to return only the names of the templates with a ``name`` attribute distinct of ``None``. The default ``name`` kwarg of ``Template`` has been changed to ``None``, more pythonic than ``'<Unknown Template>'``.
-rw-r--r--django/template/base.py3
-rw-r--r--django/test/testcases.py3
-rw-r--r--tests/test_utils/tests.py7
-rw-r--r--tests/test_utils/urls.py1
-rw-r--r--tests/test_utils/views.py5
5 files changed, 16 insertions, 3 deletions
diff --git a/django/template/base.py b/django/template/base.py
index efeca3ea2a..83d7403ac7 100644
--- a/django/template/base.py
+++ b/django/template/base.py
@@ -121,8 +121,7 @@ class StringOrigin(Origin):
class Template(object):
- def __init__(self, template_string, origin=None,
- name='<Unknown Template>'):
+ def __init__(self, template_string, origin=None, name=None):
try:
template_string = force_text(template_string)
except UnicodeDecodeError:
diff --git a/django/test/testcases.py b/django/test/testcases.py
index 4a5188b198..2ca82d7536 100644
--- a/django/test/testcases.py
+++ b/django/test/testcases.py
@@ -506,7 +506,8 @@ class SimpleTestCase(unittest.TestCase):
# use this template with context manager
return template_name, None, msg_prefix
- template_names = [t.name for t in response.templates]
+ template_names = [t.name for t in response.templates if t.name is not
+ None]
return None, template_names, msg_prefix
def assertTemplateUsed(self, response=None, template_name=None, msg_prefix=''):
diff --git a/tests/test_utils/tests.py b/tests/test_utils/tests.py
index 666fde2fa6..9f7831d2b7 100644
--- a/tests/test_utils/tests.py
+++ b/tests/test_utils/tests.py
@@ -214,6 +214,8 @@ class AssertNumQueriesContextManagerTests(TestCase):
class AssertTemplateUsedContextManagerTests(TestCase):
+ urls = 'test_utils.urls'
+
def test_usage(self):
with self.assertTemplateUsed('template_used/base.html'):
render_to_string('template_used/base.html')
@@ -270,6 +272,11 @@ class AssertTemplateUsedContextManagerTests(TestCase):
with self.assertTemplateUsed('template_used/base.html'):
render_to_string('template_used/alternative.html')
+ with self.assertRaises(AssertionError) as cm:
+ response = self.client.get('/test_utils/no_template_used/')
+ self.assertTemplateUsed(response, 'template_used/base.html')
+ self.assertEqual(cm.exception.args[0], "No templates used to render the response")
+
def test_failure(self):
with self.assertRaises(TypeError):
with self.assertTemplateUsed():
diff --git a/tests/test_utils/urls.py b/tests/test_utils/urls.py
index 65e8631735..c3f2ec4e4b 100644
--- a/tests/test_utils/urls.py
+++ b/tests/test_utils/urls.py
@@ -5,4 +5,5 @@ from . import views
urlpatterns = patterns('',
(r'^test_utils/get_person/(\d+)/$', views.get_person),
+ (r'^test_utils/no_template_used/$', views.no_template_used),
)
diff --git a/tests/test_utils/views.py b/tests/test_utils/views.py
index 77e598b72c..a804bb9ae3 100644
--- a/tests/test_utils/views.py
+++ b/tests/test_utils/views.py
@@ -1,5 +1,6 @@
from django.http import HttpResponse
from django.shortcuts import get_object_or_404
+from django.template import loader, Context
from .models import Person
@@ -7,3 +8,7 @@ from .models import Person
def get_person(request, pk):
person = get_object_or_404(Person, pk=pk)
return HttpResponse(person.name)
+
+def no_template_used(request):
+ template = loader.get_template_from_string("This is a string-based template")
+ return HttpResponse(template.render(Context({})))