summaryrefslogtreecommitdiff
path: root/tests/test_templite.py
diff options
context:
space:
mode:
authorNed Batchelder <ned@nedbatchelder.com>2014-04-26 12:13:48 -0400
committerNed Batchelder <ned@nedbatchelder.com>2014-04-26 12:13:48 -0400
commit1a799e2fbc4c1d8eb812b81e5cde39cc16d73538 (patch)
tree04c899412b52c92c17ca6f8552c8fa11d0f7c991 /tests/test_templite.py
parente832d01fa66613e8037197861bcd2dd8b3cd9bfe (diff)
downloadpython-coveragepy-git-1a799e2fbc4c1d8eb812b81e5cde39cc16d73538.tar.gz
Polished-up code from 500lines
Diffstat (limited to 'tests/test_templite.py')
-rw-r--r--tests/test_templite.py39
1 files changed, 32 insertions, 7 deletions
diff --git a/tests/test_templite.py b/tests/test_templite.py
index 48e53ab4..c861c2ff 100644
--- a/tests/test_templite.py
+++ b/tests/test_templite.py
@@ -23,9 +23,15 @@ class TempliteTest(CoverageTest):
run_in_temp_dir = False
- def try_render(self, text, ctx, result):
- """Render `text` through `ctx`, and it had better be `result`."""
- self.assertEqual(Templite(text).render(ctx), result)
+ def try_render(self, text, ctx=None, result=None):
+ """Render `text` through `ctx`, and it had better be `result`.
+
+ Result defaults to None so we can shorten the calls where we expect
+ an exception and never get to the result comparison.
+ """
+ actual = Templite(text).render(ctx or {})
+ if result:
+ self.assertEqual(actual, result)
def test_passthrough(self):
# Strings without variables are passed through unchanged.
@@ -42,7 +48,7 @@ class TempliteTest(CoverageTest):
def test_undefined_variables(self):
# Using undefined names is an error.
with self.assertRaises(Exception):
- self.try_render("Hi, {{name}}!", {}, "xyz")
+ self.try_render("Hi, {{name}}!")
def test_pipes(self):
# Variables can be filtered with pipes.
@@ -228,12 +234,31 @@ class TempliteTest(CoverageTest):
def test_bogus_tag_syntax(self):
msg = "Don't understand tag: 'bogus'"
with self.assertRaisesRegexp(SyntaxError, msg):
- self.try_render("Huh: {% bogus %}!!{% endbogus %}??", {}, "")
+ self.try_render("Huh: {% bogus %}!!{% endbogus %}??")
+
+ def test_malformed_if(self):
+ msg = "Don't understand if: '{% if %}'"
+ with self.assertRaisesRegexp(SyntaxError, msg):
+ self.try_render("Buh? {% if %}hi!{% endif %}")
+ msg = "Don't understand if: '{% if this or that %}'"
+ with self.assertRaisesRegexp(SyntaxError, msg):
+ 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):
+ self.try_render("Weird: {% for %}loop{% endfor %}")
+ msg = "Don't understand for: '{% for x from y %}'"
+ with self.assertRaisesRegexp(SyntaxError, msg):
+ 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):
+ 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):
- self.try_render("{% if x %}X", {}, "")
+ self.try_render("{% if x %}X")
msg = "Mismatched end tag: 'for'"
with self.assertRaisesRegexp(SyntaxError, msg):
- self.try_render("{% if x %}X{% endfor %}", {}, "")
+ self.try_render("{% if x %}X{% endfor %}")