summaryrefslogtreecommitdiff
path: root/tests/template_backends
diff options
context:
space:
mode:
authorPreston Timmons <prestontimmons@gmail.com>2015-04-24 14:33:03 -0500
committerPreston Timmons <prestontimmons@gmail.com>2015-05-06 17:33:47 -0500
commitadff499e47d99f6b40307acc1ace95508e3c5910 (patch)
treebda2771135ba07ad45b5df1fa0ee92588044bbac /tests/template_backends
parentd1df1fd2bb274574fd895f6984892b3aba372f48 (diff)
downloaddjango-adff499e47d99f6b40307acc1ace95508e3c5910.tar.gz
Fixed #24119, #24120 -- Formalized debug integration for template backends.
Diffstat (limited to 'tests/template_backends')
-rw-r--r--tests/template_backends/jinja2/template_backends/syntax_error2.html31
-rw-r--r--tests/template_backends/test_dummy.py3
-rw-r--r--tests/template_backends/test_jinja2.py42
3 files changed, 75 insertions, 1 deletions
diff --git a/tests/template_backends/jinja2/template_backends/syntax_error2.html b/tests/template_backends/jinja2/template_backends/syntax_error2.html
new file mode 100644
index 0000000000..7b268bd30c
--- /dev/null
+++ b/tests/template_backends/jinja2/template_backends/syntax_error2.html
@@ -0,0 +1,31 @@
+1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+{% block %}
+1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
diff --git a/tests/template_backends/test_dummy.py b/tests/template_backends/test_dummy.py
index b529b70756..f168bede1e 100644
--- a/tests/template_backends/test_dummy.py
+++ b/tests/template_backends/test_dummy.py
@@ -37,8 +37,9 @@ class TemplateStringsTests(SimpleTestCase):
self.assertEqual(content, "Hello world!\n")
def test_get_template_non_existing(self):
- with self.assertRaises(TemplateDoesNotExist):
+ with self.assertRaises(TemplateDoesNotExist) as e:
self.engine.get_template('template_backends/non_existing.html')
+ self.assertEqual(e.exception.backend, self.engine)
def test_get_template_syntax_error(self):
# There's no way to trigger a syntax error with the dummy backend.
diff --git a/tests/template_backends/test_jinja2.py b/tests/template_backends/test_jinja2.py
index d2a52d900c..6ab49d2b8a 100644
--- a/tests/template_backends/test_jinja2.py
+++ b/tests/template_backends/test_jinja2.py
@@ -4,6 +4,8 @@ from __future__ import absolute_import
from unittest import skipIf
+from django.template import TemplateSyntaxError
+
from .test_dummy import TemplateStringsTests
try:
@@ -22,6 +24,16 @@ class Jinja2Tests(TemplateStringsTests):
backend_name = 'jinja2'
options = {'keep_trailing_newline': True}
+ def test_origin(self):
+ template = self.engine.get_template('template_backends/hello.html')
+ self.assertTrue(template.origin.name.endswith('hello.html'))
+ self.assertEqual(template.origin.template_name, 'template_backends/hello.html')
+
+ def test_origin_from_string(self):
+ template = self.engine.from_string('Hello!\n')
+ self.assertEqual(template.origin.name, '<template>')
+ self.assertEqual(template.origin.template_name, None)
+
def test_self_context(self):
"""
Using 'self' in the context should not throw errors (#24538).
@@ -32,3 +44,33 @@ class Jinja2Tests(TemplateStringsTests):
template = self.engine.from_string('hello {{ foo }}!')
content = template.render(context={'self': 'self', 'foo': 'world'})
self.assertEqual(content, 'hello world!')
+
+ def test_exception_debug_info_min_context(self):
+ with self.assertRaises(TemplateSyntaxError) as e:
+ self.engine.get_template('template_backends/syntax_error.html')
+ debug = e.exception.template_debug
+ self.assertEqual(debug['after'], '')
+ self.assertEqual(debug['before'], '')
+ self.assertEqual(debug['during'], '{% block %}')
+ self.assertEqual(debug['bottom'], 1)
+ self.assertEqual(debug['top'], 0)
+ self.assertEqual(debug['line'], 1)
+ self.assertEqual(debug['total'], 1)
+ self.assertEqual(len(debug['source_lines']), 1)
+ self.assertTrue(debug['name'].endswith('syntax_error.html'))
+ self.assertTrue('message' in debug)
+
+ def test_exception_debug_info_max_context(self):
+ with self.assertRaises(TemplateSyntaxError) as e:
+ self.engine.get_template('template_backends/syntax_error2.html')
+ debug = e.exception.template_debug
+ self.assertEqual(debug['after'], '')
+ self.assertEqual(debug['before'], '')
+ self.assertEqual(debug['during'], '{% block %}')
+ self.assertEqual(debug['bottom'], 26)
+ self.assertEqual(debug['top'], 5)
+ self.assertEqual(debug['line'], 16)
+ self.assertEqual(debug['total'], 31)
+ self.assertEqual(len(debug['source_lines']), 21)
+ self.assertTrue(debug['name'].endswith('syntax_error2.html'))
+ self.assertTrue('message' in debug)