diff options
author | Ned Batchelder <ned@nedbatchelder.com> | 2009-12-26 15:27:49 -0500 |
---|---|---|
committer | Ned Batchelder <ned@nedbatchelder.com> | 2009-12-26 15:27:49 -0500 |
commit | c3b8f57d2cd96801052fc0d0f56401aaa8d4f063 (patch) | |
tree | 2d113ec8e15177ffa880ec718946aa29f83b8e94 | |
parent | 04076715a642d0caa6436e81d35416e711b80d52 (diff) | |
download | python-coveragepy-git-c3b8f57d2cd96801052fc0d0f56401aaa8d4f063.tar.gz |
Mark some lines as uncoverable, add some tests for some test methods.
-rw-r--r-- | covcov.ini | 1 | ||||
-rw-r--r-- | test/backunittest.py | 4 | ||||
-rw-r--r-- | test/coveragetest.py | 6 | ||||
-rw-r--r-- | test/test_api.py | 44 | ||||
-rw-r--r-- | test/test_coverage.py | 80 | ||||
-rw-r--r-- | test/test_testing.py | 8 |
6 files changed, 116 insertions, 27 deletions
@@ -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) |