diff options
author | Preston Timmons <prestontimmons@gmail.com> | 2015-04-24 14:33:03 -0500 |
---|---|---|
committer | Preston Timmons <prestontimmons@gmail.com> | 2015-05-06 17:33:47 -0500 |
commit | adff499e47d99f6b40307acc1ace95508e3c5910 (patch) | |
tree | bda2771135ba07ad45b5df1fa0ee92588044bbac /tests/template_backends | |
parent | d1df1fd2bb274574fd895f6984892b3aba372f48 (diff) | |
download | django-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.html | 31 | ||||
-rw-r--r-- | tests/template_backends/test_dummy.py | 3 | ||||
-rw-r--r-- | tests/template_backends/test_jinja2.py | 42 |
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) |