diff options
author | Ned Batchelder <ned@nedbatchelder.com> | 2013-12-13 22:45:10 -0500 |
---|---|---|
committer | Ned Batchelder <ned@nedbatchelder.com> | 2013-12-13 22:45:10 -0500 |
commit | c573785e27091fb848fda48591dfdb40fd7afdcc (patch) | |
tree | 90b28404080164ff360c2645eb1326acf2047b44 /tests | |
parent | 1582330616882c0c3024dd2a54b1e6fd390ddffb (diff) | |
parent | ef5aef10e2615dcbfe205e230e7c74f4e7a1a805 (diff) | |
download | python-coveragepy-c573785e27091fb848fda48591dfdb40fd7afdcc.tar.gz |
Merged 4.0 to default
Diffstat (limited to 'tests')
-rw-r--r-- | tests/coveragetest.py | 7 | ||||
-rw-r--r-- | tests/test_templite.py | 53 |
2 files changed, 52 insertions, 8 deletions
diff --git a/tests/coveragetest.py b/tests/coveragetest.py index e1c38b2..d047a47 100644 --- a/tests/coveragetest.py +++ b/tests/coveragetest.py @@ -350,20 +350,21 @@ class CoverageTest(TestCase): # Get the analysis results, and check that they are right. analysis = cov._analyze(mod) + statements = sorted(analysis.statements) if lines is not None: if type(lines[0]) == type(1): # lines is just a list of numbers, it must match the statements # found in the code. - self.assertEqual(analysis.statements, lines) + self.assertEqual(statements, lines) else: # lines is a list of possible line number lists, one of them # must match. for line_list in lines: - if analysis.statements == line_list: + if statements == line_list: break else: self.fail("None of the lines choices matched %r" % - analysis.statements + statements ) if type(missing) == type(""): diff --git a/tests/test_templite.py b/tests/test_templite.py index 0435c54..7326d24 100644 --- a/tests/test_templite.py +++ b/tests/test_templite.py @@ -1,7 +1,7 @@ """Tests for coverage.templite.""" from coverage.templite import Templite -import unittest +from tests.coveragetest import CoverageTest # pylint: disable=W0612,E1101 # Disable W0612 (Unused variable) and @@ -18,9 +18,11 @@ class AnyOldObject(object): setattr(self, n, v) -class TempliteTest(unittest.TestCase): +class TempliteTest(CoverageTest): """Tests for Templite.""" + 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) @@ -37,6 +39,14 @@ class TempliteTest(unittest.TestCase): # Variables use {{var}} syntax. self.try_render("Hello, {{name}}!", {'name':'Ned'}, "Hello, Ned!") + def test_undefined_variables(self): + # Using undefined names is an error. + self.assertRaises( + Exception, + self.try_render, + "Hi, {{name}}!", {}, "xyz" + ) + def test_pipes(self): # Variables can be filtered with pipes. data = { @@ -165,6 +175,23 @@ class TempliteTest(unittest.TestCase): "Hi, NEDBEN!" ) + def test_complex_if(self): + class Complex(AnyOldObject): + """A class to try out complex data access.""" + def getit(self): + """Return it.""" + return self.it + obj = Complex(it={'x':"Hello", 'y': 0}) + self.try_render( + "@" + "{% if obj.getit.x %}X{% endif %}" + "{% if obj.getit.y %}Y{% endif %}" + "{% if obj.getit.y|str %}S{% endif %}" + "!", + { 'obj': obj, 'str': str }, + "@XS!" + ) + def test_loop_if(self): self.try_render( "@{% for n in nums %}{% if n %}Z{% endif %}{{n}}{% endfor %}!", @@ -184,9 +211,11 @@ class TempliteTest(unittest.TestCase): def test_nested_loops(self): self.try_render( - "@{% for n in nums %}" + "@" + "{% for n in nums %}" "{% for a in abc %}{{a}}{{n}}{% endfor %}" - "{% endfor %}!", + "{% endfor %}" + "!", {'nums': [0,1,2], 'abc': ['a', 'b', 'c']}, "@a0b0c0a1b1c1a2b2c2!" ) @@ -199,6 +228,20 @@ class TempliteTest(unittest.TestCase): ) def test_bogus_tag_syntax(self): - self.assertRaises(SyntaxError, self.try_render, + self.assertRaisesRegexp( + SyntaxError, "Don't understand tag: 'bogus'", + self.try_render, "Huh: {% bogus %}!!{% endbogus %}??", {}, "" ) + + def test_bad_nesting(self): + self.assertRaisesRegexp( + SyntaxError, "Unmatched action tag: 'if'", + self.try_render, + "{% if x %}X", {}, "" + ) + self.assertRaisesRegexp( + SyntaxError, "Mismatched end tag: 'for'", + self.try_render, + "{% if x %}X{% endfor %}", {}, "" + ) |