summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNed Batchelder <ned@nedbatchelder.com>2009-12-26 15:27:49 -0500
committerNed Batchelder <ned@nedbatchelder.com>2009-12-26 15:27:49 -0500
commitc3b8f57d2cd96801052fc0d0f56401aaa8d4f063 (patch)
tree2d113ec8e15177ffa880ec718946aa29f83b8e94
parent04076715a642d0caa6436e81d35416e711b80d52 (diff)
downloadpython-coveragepy-git-c3b8f57d2cd96801052fc0d0f56401aaa8d4f063.tar.gz
Mark some lines as uncoverable, add some tests for some test methods.
-rw-r--r--covcov.ini1
-rw-r--r--test/backunittest.py4
-rw-r--r--test/coveragetest.py6
-rw-r--r--test/test_api.py44
-rw-r--r--test/test_coverage.py80
-rw-r--r--test/test_testing.py8
6 files changed, 116 insertions, 27 deletions
diff --git a/covcov.ini b/covcov.ini
index 97f226d8..8efb952c 100644
--- a/covcov.ini
+++ b/covcov.ini
@@ -6,6 +6,7 @@ data_file = c:\ned\coverage\trunk\.coverage
[report]
exclude_lines =
# pragma: no cover
+ # pragma: recursive coverage
def __repr__
if __name__ == .__main__.:
raise AssertionError
diff --git a/test/backunittest.py b/test/backunittest.py
index 33f552db..3e521e5a 100644
--- a/test/backunittest.py
+++ b/test/backunittest.py
@@ -42,7 +42,7 @@ class TestCase(unittest.TestCase):
if re.search(regexp, excMsg):
# Message provided, and we got the right one: it passes.
return
- else: # pragma: no cover
+ else:
# Message provided, and it didn't match: fail!
raise self.failureException(
"Right exception, wrong message: "
@@ -50,7 +50,7 @@ class TestCase(unittest.TestCase):
)
# No need to catch other exceptions: They'll fail the test all by
# themselves!
- else: # pragma: no cover
+ else:
if hasattr(excClass, '__name__'):
excName = excClass.__name__
else:
diff --git a/test/coveragetest.py b/test/coveragetest.py
index 55653d53..01800a57 100644
--- a/test/coveragetest.py
+++ b/test/coveragetest.py
@@ -205,10 +205,10 @@ class CoverageTest(TestCase):
cov.exclude(exc)
cov.start()
- try:
+ try: # pragma: recursive coverage
# Import the python file, executing it.
mod = self.import_module(modname)
- finally:
+ finally: # pragma: recursive coverage
# Stop Coverage.
cov.stop()
@@ -238,7 +238,7 @@ class CoverageTest(TestCase):
self.assertEqual(analysis.missing_formatted(), missing)
else:
for missing_list in missing:
- if analysis.missing == missing_list:
+ if analysis.missing_formatted() == missing_list:
break
else:
self.fail("None of the missing choices matched %r" %
diff --git a/test/test_api.py b/test/test_api.py
index 85b90e4e..69eb6496 100644
--- a/test/test_api.py
+++ b/test/test_api.py
@@ -28,8 +28,8 @@ class ApiTest(CoverageTest):
# Import the python file, executing it.
coverage.start()
- self.import_module("mycode")
- coverage.stop()
+ self.import_module("mycode") # pragma: recursive coverage
+ coverage.stop() # pragma: recursive coverage
_, statements, missing, missingtext = coverage.analysis("mycode.py")
self.assertEqual(statements, [1,2,3,4,5])
@@ -52,8 +52,8 @@ class ApiTest(CoverageTest):
# Import the python file, executing it.
coverage.start()
- self.import_module(modname)
- coverage.stop()
+ self.import_module(modname) # pragma: recursive coverage
+ coverage.stop() # pragma: recursive coverage
def testReport(self):
self.doReportWork("mycode2")
@@ -100,8 +100,8 @@ class ApiTest(CoverageTest):
# Import the python file, executing it.
cov.start()
- self.import_module("mycode")
- cov.stop()
+ self.import_module("mycode") # pragma: recursive coverage
+ cov.stop() # pragma: recursive coverage
_, statements, missing, _ = cov.analysis("not_run.py")
self.assertEqual(statements, [1])
@@ -121,8 +121,8 @@ class ApiTest(CoverageTest):
# Import the python file, executing it.
cov = coverage.coverage()
cov.start()
- self.import_module("mymain")
- cov.stop()
+ self.import_module("mymain") # pragma: recursive coverage
+ cov.stop() # pragma: recursive coverage
filename, _, _, _ = cov.analysis("mymain.py")
self.assertEqual(os.path.basename(filename), "mymain.py")
@@ -138,8 +138,8 @@ class ApiTest(CoverageTest):
# already.
cov = coverage.coverage()
cov.start()
- self.import_module("mymain")
- cov.stop()
+ self.import_module("mymain") # pragma: recursive coverage
+ cov.stop() # pragma: recursive coverage
filename, _, _, _ = cov.analysis("mymain.py")
self.assertEqual(os.path.basename(filename), "mymain.py")
@@ -166,8 +166,8 @@ class ApiTest(CoverageTest):
cov1 = coverage.coverage()
self.assertEqual(cov1.config.cover_pylib, False)
cov1.start()
- self.import_module("mymain")
- cov1.stop()
+ self.import_module("mymain") # pragma: recursive coverage
+ cov1.stop() # pragma: recursive coverage
# some statements were marked executed in mymain.py
_, statements, missing, _ = cov1.analysis("mymain.py")
@@ -179,8 +179,8 @@ class ApiTest(CoverageTest):
# Measure with the stdlib.
cov2 = coverage.coverage(cover_pylib=True)
cov2.start()
- self.import_module("mymain")
- cov2.stop()
+ self.import_module("mymain") # pragma: recursive coverage
+ cov2.stop() # pragma: recursive coverage
# some statements were marked executed in mymain.py
_, statements, missing, _ = cov2.analysis("mymain.py")
@@ -210,8 +210,8 @@ class ApiTest(CoverageTest):
self.assertSameElements(os.listdir("."), ["datatest1.py"])
cov = coverage.coverage()
cov.start()
- self.import_module("datatest1")
- cov.stop()
+ self.import_module("datatest1") # pragma: recursive coverage
+ cov.stop() # pragma: recursive coverage
cov.save()
self.assertSameElements(os.listdir("."),
["datatest1.py", "datatest1.pyc", ".coverage"])
@@ -225,8 +225,8 @@ class ApiTest(CoverageTest):
self.assertSameElements(os.listdir("."), ["datatest2.py"])
cov = coverage.coverage(data_file="cov.data")
cov.start()
- self.import_module("datatest2")
- cov.stop()
+ self.import_module("datatest2") # pragma: recursive coverage
+ cov.stop() # pragma: recursive coverage
cov.save()
self.assertSameElements(os.listdir("."),
["datatest2.py", "datatest2.pyc", "cov.data"])
@@ -240,8 +240,8 @@ class ApiTest(CoverageTest):
self.assertSameElements(os.listdir("."), ["datatest3.py"])
cov = coverage.coverage(data_file="cov.data", data_suffix=".14")
cov.start()
- self.import_module("datatest3")
- cov.stop()
+ self.import_module("datatest3") # pragma: recursive coverage
+ cov.stop() # pragma: recursive coverage
cov.save()
self.assertSameElements(os.listdir("."),
["datatest3.py", "datatest3.pyc", "cov.data.14"])
@@ -260,8 +260,8 @@ class ApiTest(CoverageTest):
["datatest4.py", ".coveragerc"])
cov = coverage.coverage()
cov.start()
- self.import_module("datatest4")
- cov.stop()
+ self.import_module("datatest4") # pragma: recursive coverage
+ cov.stop() # pragma: recursive coverage
cov.save()
self.assertSameElements(os.listdir("."),
["datatest4.py", "datatest4.pyc", ".coveragerc", "mydata.dat"])
diff --git a/test/test_coverage.py b/test/test_coverage.py
index 693b9b33..c3a88d71 100644
--- a/test/test_coverage.py
+++ b/test/test_coverage.py
@@ -13,6 +13,86 @@ sys.path.insert(0, os.path.split(__file__)[0]) # Force relative import for Py3k
from coveragetest import CoverageTest
+class TestCoverageTest(CoverageTest):
+ """Make sure our complex self.check_coverage method works."""
+
+ def test_successful_coverage(self):
+ # The simplest run possible.
+ self.check_coverage("""\
+ a = 1
+ b = 2
+ """,
+ [1,2]
+ )
+ # You can provide a list of possible statement matches.
+ self.check_coverage("""\
+ a = 1
+ b = 2
+ """,
+ ([100], [1,2], [1723,47]),
+ )
+ # You can specify missing lines.
+ self.check_coverage("""\
+ a = 1
+ if a == 2:
+ a = 3
+ """,
+ [1,2,3],
+ missing="3",
+ )
+ # You can specify a list of possible missing lines.
+ self.check_coverage("""\
+ a = 1
+ if a == 2:
+ a = 3
+ """,
+ [1,2,3],
+ missing=("47-49", "3", "100,102")
+ )
+
+ def test_failed_coverage(self):
+ # If the lines are wrong, the message shows right and wrong.
+ self.assertRaisesRegexp(AssertionError,
+ r"\[1, 2] != \[1]",
+ self.check_coverage, """\
+ a = 1
+ b = 2
+ """,
+ [1]
+ )
+ # If the list of lines possibilities is wrong, the msg shows right.
+ self.assertRaisesRegexp(AssertionError,
+ r"None of the lines choices matched \[1, 2]",
+ self.check_coverage, """\
+ a = 1
+ b = 2
+ """,
+ ([1], [2])
+ )
+ # If the missing lines are wrong, the message shows right and wrong.
+ self.assertRaisesRegexp(AssertionError,
+ r"'3' != '37'",
+ self.check_coverage, """\
+ a = 1
+ if a == 2:
+ a = 3
+ """,
+ [1,2,3],
+ missing="37",
+ )
+ # If the missing lines possibilities are wrong, the msg shows right.
+ self.assertRaisesRegexp(AssertionError,
+ r"None of the missing choices matched '3'",
+ self.check_coverage, """\
+ a = 1
+ if a == 2:
+ a = 3
+ """,
+ [1,2,3],
+ missing=("37", "4-10"),
+ )
+
+
class BasicCoverageTest(CoverageTest):
"""The simplest tests, for quick smoke testing of fundamental changes."""
diff --git a/test/test_testing.py b/test/test_testing.py
index a239d14f..5a72c550 100644
--- a/test/test_testing.py
+++ b/test/test_testing.py
@@ -76,3 +76,11 @@ class TestingTest(TestCase):
self.assertRaisesRegexp, ZeroDivisionError, "XYZ",
self.please_succeed
)
+
+ def test_assert_true(self):
+ self.assertTrue(True)
+ self.assertRaises(AssertionError, self.assertTrue, False)
+
+ def test_assert_false(self):
+ self.assertFalse(False)
+ self.assertRaises(AssertionError, self.assertFalse, True)