summaryrefslogtreecommitdiff
path: root/tests/test_templite.py
diff options
context:
space:
mode:
Diffstat (limited to 'tests/test_templite.py')
-rw-r--r--tests/test_templite.py49
1 files changed, 31 insertions, 18 deletions
diff --git a/tests/test_templite.py b/tests/test_templite.py
index c861c2ff..4b1f6e45 100644
--- a/tests/test_templite.py
+++ b/tests/test_templite.py
@@ -1,6 +1,7 @@
"""Tests for coverage.templite."""
-from coverage.templite import Templite
+import re
+from coverage.templite import Templite, TempliteSyntaxError
from tests.coveragetest import CoverageTest
# pylint: disable=W0612,E1101
@@ -33,6 +34,10 @@ class TempliteTest(CoverageTest):
if result:
self.assertEqual(actual, result)
+ def assertSynErr(self, msg):
+ pat = "^" + re.escape(msg) + "$"
+ return self.assertRaisesRegexp(TempliteSyntaxError, pat)
+
def test_passthrough(self):
# Strings without variables are passed through unchanged.
self.assertEqual(Templite("Hello").render(), "Hello")
@@ -231,34 +236,42 @@ class TempliteTest(CoverageTest):
"Hey {{foo.bar.baz}} there", {'foo': None}, "Hey ??? there"
)
+ def test_bad_names(self):
+ with self.assertSynErr("Not a valid name: 'var%&!@'"):
+ self.try_render("Wat: {{ var%&!@ }}")
+ with self.assertSynErr("Not a valid name: 'filter%&!@'"):
+ self.try_render("Wat: {{ foo|filter%&!@ }}")
+ with self.assertSynErr("Not a valid name: '@'"):
+ self.try_render("Wat: {% for @ in x %}{% endfor %}")
+
def test_bogus_tag_syntax(self):
- msg = "Don't understand tag: 'bogus'"
- with self.assertRaisesRegexp(SyntaxError, msg):
+ with self.assertSynErr("Don't understand tag: 'bogus'"):
self.try_render("Huh: {% bogus %}!!{% endbogus %}??")
def test_malformed_if(self):
- msg = "Don't understand if: '{% if %}'"
- with self.assertRaisesRegexp(SyntaxError, msg):
+ with self.assertSynErr("Don't understand if: '{% if %}'"):
self.try_render("Buh? {% if %}hi!{% endif %}")
- msg = "Don't understand if: '{% if this or that %}'"
- with self.assertRaisesRegexp(SyntaxError, msg):
+ with self.assertSynErr("Don't understand if: '{% if this or that %}'"):
self.try_render("Buh? {% if this or that %}hi!{% endif %}")
- def test_malformed_for_(self):
- msg = "Don't understand for: '{% for %}'"
- with self.assertRaisesRegexp(SyntaxError, msg):
+ def test_malformed_for(self):
+ with self.assertSynErr("Don't understand for: '{% for %}'"):
self.try_render("Weird: {% for %}loop{% endfor %}")
- msg = "Don't understand for: '{% for x from y %}'"
- with self.assertRaisesRegexp(SyntaxError, msg):
+ with self.assertSynErr("Don't understand for: '{% for x from y %}'"):
self.try_render("Weird: {% for x from y %}loop{% endfor %}")
- msg = "Don't understand for: '{% for x, y in z %}'"
- with self.assertRaisesRegexp(SyntaxError, msg):
+ with self.assertSynErr("Don't understand for: '{% for x, y in z %}'"):
self.try_render("Weird: {% for x, y in z %}loop{% endfor %}")
def test_bad_nesting(self):
- msg = "Unmatched action tag: 'if'"
- with self.assertRaisesRegexp(SyntaxError, msg):
+ with self.assertSynErr("Unmatched action tag: 'if'"):
self.try_render("{% if x %}X")
- msg = "Mismatched end tag: 'for'"
- with self.assertRaisesRegexp(SyntaxError, msg):
+ with self.assertSynErr("Mismatched end tag: 'for'"):
self.try_render("{% if x %}X{% endfor %}")
+ with self.assertSynErr("Too many ends: '{% endif %}'"):
+ self.try_render("{% if x %}{% endif %}{% endif %}")
+
+ def test_malformed_end(self):
+ with self.assertSynErr("Don't understand end: '{% end if %}'"):
+ self.try_render("{% if x %}X{% end if %}")
+ with self.assertSynErr("Don't understand end: '{% endif now %}'"):
+ self.try_render("{% if x %}X{% endif now %}")