diff options
author | Ned Batchelder <ned@nedbatchelder.com> | 2014-04-26 12:13:48 -0400 |
---|---|---|
committer | Ned Batchelder <ned@nedbatchelder.com> | 2014-04-26 12:13:48 -0400 |
commit | 1a799e2fbc4c1d8eb812b81e5cde39cc16d73538 (patch) | |
tree | 04c899412b52c92c17ca6f8552c8fa11d0f7c991 /tests/test_templite.py | |
parent | e832d01fa66613e8037197861bcd2dd8b3cd9bfe (diff) | |
download | python-coveragepy-git-1a799e2fbc4c1d8eb812b81e5cde39cc16d73538.tar.gz |
Polished-up code from 500lines
Diffstat (limited to 'tests/test_templite.py')
-rw-r--r-- | tests/test_templite.py | 39 |
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 %}") |