summaryrefslogtreecommitdiff
path: root/tests/test_api.py
diff options
context:
space:
mode:
authorNed Batchelder <ned@nedbatchelder.com>2015-10-03 16:59:46 -0400
committerNed Batchelder <ned@nedbatchelder.com>2015-10-03 16:59:46 -0400
commita877aaf13d9f72ee317b392c86313a3003bcb3b8 (patch)
tree22fdb568fd85c4179774fdfb4024486e37d3e1ce /tests/test_api.py
parentb27f9eab849696b46e9fbb84dcdc0f34078684d1 (diff)
downloadpython-coveragepy-git-a877aaf13d9f72ee317b392c86313a3003bcb3b8.tar.gz
Combine can now ignore errors.
Diffstat (limited to 'tests/test_api.py')
-rw-r--r--tests/test_api.py74
1 files changed, 56 insertions, 18 deletions
diff --git a/tests/test_api.py b/tests/test_api.py
index 61cd9408..ad322224 100644
--- a/tests/test_api.py
+++ b/tests/test_api.py
@@ -251,7 +251,8 @@ class ApiTest(CoverageTest):
cov.erase()
self.assertRaises(CoverageException, cov.report)
- def test_start_stop_start_stop(self):
+ def make_code1_code2(self):
+ """Create the code1.py and code2.py files."""
self.make_file("code1.py", """\
code1 = 1
""")
@@ -259,10 +260,9 @@ class ApiTest(CoverageTest):
code2 = 1
code2 = 2
""")
- cov = coverage.Coverage()
- self.start_import_stop(cov, "code1")
- cov.save()
- self.start_import_stop(cov, "code2")
+
+ def check_code1_code2(self, cov):
+ """Check the analysis is correct for code1.py and code2.py."""
_, statements, missing, _ = cov.analysis("code1.py")
self.assertEqual(statements, [1])
self.assertEqual(missing, [])
@@ -270,16 +270,18 @@ class ApiTest(CoverageTest):
self.assertEqual(statements, [1, 2])
self.assertEqual(missing, [])
+ def test_start_stop_start_stop(self):
+ self.make_code1_code2()
+ cov = coverage.Coverage()
+ self.start_import_stop(cov, "code1")
+ cov.save()
+ self.start_import_stop(cov, "code2")
+ self.check_code1_code2(cov)
+
if 0: # expected failure
# for https://bitbucket.org/ned/coveragepy/issue/79
def test_start_save_stop(self):
- self.make_file("code1.py", """\
- code1 = 1
- """)
- self.make_file("code2.py", """\
- code2 = 1
- code2 = 2
- """)
+ self.make_code1_code2()
cov = coverage.Coverage()
cov.start()
self.import_local_file("code1")
@@ -287,13 +289,49 @@ class ApiTest(CoverageTest):
self.import_local_file("code2")
cov.stop()
- _, statements, missing, _ = cov.analysis("code1.py")
- self.assertEqual(statements, [1])
- self.assertEqual(missing, [])
- _, statements, missing, _ = cov.analysis("code2.py")
- self.assertEqual(statements, [1, 2])
- self.assertEqual(missing, [])
+ self.check_code1_code2(cov)
+
+ def make_corrupt_data_files(self):
+ """Make some good and some bad data files."""
+ self.make_code1_code2()
+ cov = coverage.Coverage(data_suffix=True)
+ self.start_import_stop(cov, "code1")
+ cov.save()
+
+ cov = coverage.Coverage(data_suffix=True)
+ self.start_import_stop(cov, "code2")
+ cov.save()
+
+ self.make_file(".coverage.foo", """La la la, this isn't coverage data!""")
+
+ def test_combining_corrupt_data(self):
+ self.make_corrupt_data_files()
+ cov = coverage.Coverage()
+
+ msg = r"Couldn't read data from '.*\.coverage\.foo'"
+ with self.assertRaisesRegex(CoverageException, msg):
+ cov.combine()
+
+ # The bad file still exists.
+ self.assert_exists(".coverage.foo")
+
+ def test_combining_corrupt_data_while_ignoring_errors(self):
+ # If you combine a corrupt data file with ignore_errors=True, then you
+ # will get a warning, and the file will remain.
+ self.make_corrupt_data_files()
+ cov = coverage.Coverage()
+ warning_regex = (
+ r"Couldn't read data from '.*\.coverage\.foo': "
+ r"CoverageException: Doesn't seem to be a coverage\.py data file"
+ )
+ with self.assert_warnings(cov, [warning_regex]):
+ cov.combine(ignore_errors=True)
+
+ # We got the results from code1 and code2 properly.
+ self.check_code1_code2(cov)
+ # The bad file still exists.
+ self.assert_exists(".coverage.foo")
class UsingModulesMixin(object):