summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorNed Batchelder <ned@nedbatchelder.com>2013-12-13 22:45:10 -0500
committerNed Batchelder <ned@nedbatchelder.com>2013-12-13 22:45:10 -0500
commitc573785e27091fb848fda48591dfdb40fd7afdcc (patch)
tree90b28404080164ff360c2645eb1326acf2047b44 /tests
parent1582330616882c0c3024dd2a54b1e6fd390ddffb (diff)
parentef5aef10e2615dcbfe205e230e7c74f4e7a1a805 (diff)
downloadpython-coveragepy-c573785e27091fb848fda48591dfdb40fd7afdcc.tar.gz
Merged 4.0 to default
Diffstat (limited to 'tests')
-rw-r--r--tests/coveragetest.py7
-rw-r--r--tests/test_templite.py53
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 %}", {}, ""
+ )