diff options
| author | Preston Timmons <prestontimmons@gmail.com> | 2013-04-06 13:51:40 -0500 |
|---|---|---|
| committer | Carl Meyer <carl@oddbird.net> | 2013-04-12 15:13:59 -0600 |
| commit | 3810dc3070468abd3a3d9beec406a5aa3edd6b52 (patch) | |
| tree | baf63c906d7cc04a43f22db94927bd55b0419f79 /tests/template_tests/test_nodelist.py | |
| parent | 44293c5c053d616326d5dfe82252e5e8431d81ea (diff) | |
Modified template_tests for unittest2 discovery.
Diffstat (limited to 'tests/template_tests/test_nodelist.py')
| -rw-r--r-- | tests/template_tests/test_nodelist.py | 58 |
1 files changed, 58 insertions, 0 deletions
diff --git a/tests/template_tests/test_nodelist.py b/tests/template_tests/test_nodelist.py new file mode 100644 index 0000000000..97aa5af6a7 --- /dev/null +++ b/tests/template_tests/test_nodelist.py @@ -0,0 +1,58 @@ +from django.template import VariableNode, Context +from django.template.loader import get_template_from_string +from django.utils.unittest import TestCase +from django.test.utils import override_settings + +class NodelistTest(TestCase): + + def test_for(self): + source = '{% for i in 1 %}{{ a }}{% endfor %}' + template = get_template_from_string(source) + vars = template.nodelist.get_nodes_by_type(VariableNode) + self.assertEqual(len(vars), 1) + + def test_if(self): + source = '{% if x %}{{ a }}{% endif %}' + template = get_template_from_string(source) + vars = template.nodelist.get_nodes_by_type(VariableNode) + self.assertEqual(len(vars), 1) + + def test_ifequal(self): + source = '{% ifequal x y %}{{ a }}{% endifequal %}' + template = get_template_from_string(source) + vars = template.nodelist.get_nodes_by_type(VariableNode) + self.assertEqual(len(vars), 1) + + def test_ifchanged(self): + source = '{% ifchanged x %}{{ a }}{% endifchanged %}' + template = get_template_from_string(source) + vars = template.nodelist.get_nodes_by_type(VariableNode) + self.assertEqual(len(vars), 1) + + +class ErrorIndexTest(TestCase): + """ + Checks whether index of error is calculated correctly in + template debugger in for loops. Refs ticket #5831 + """ + @override_settings(DEBUG=True, TEMPLATE_DEBUG = True) + def test_correct_exception_index(self): + tests = [ + ('{% load bad_tag %}{% for i in range %}{% badsimpletag %}{% endfor %}', (38, 56)), + ('{% load bad_tag %}{% for i in range %}{% for j in range %}{% badsimpletag %}{% endfor %}{% endfor %}', (58, 76)), + ('{% load bad_tag %}{% for i in range %}{% badsimpletag %}{% for j in range %}Hello{% endfor %}{% endfor %}', (38, 56)), + ('{% load bad_tag %}{% for i in range %}{% for j in five %}{% badsimpletag %}{% endfor %}{% endfor %}', (38, 57)), + ('{% load bad_tag %}{% for j in five %}{% badsimpletag %}{% endfor %}', (18, 37)), + ] + context = Context({ + 'range': range(5), + 'five': 5, + }) + for source, expected_error_source_index in tests: + template = get_template_from_string(source) + try: + template.render(context) + except (RuntimeError, TypeError) as e: + error_source_index = e.django_template_source[1] + self.assertEqual(error_source_index, + expected_error_source_index) |
