summaryrefslogtreecommitdiff
path: root/CoverageTestRunner.py
diff options
context:
space:
mode:
Diffstat (limited to 'CoverageTestRunner.py')
-rw-r--r--CoverageTestRunner.py21
1 files changed, 19 insertions, 2 deletions
diff --git a/CoverageTestRunner.py b/CoverageTestRunner.py
index 7a6370a..c81fa70 100644
--- a/CoverageTestRunner.py
+++ b/CoverageTestRunner.py
@@ -32,6 +32,7 @@ class CoverageTestResult(unittest.TestResult):
self.total = total
self.lastmsg = ""
self.coverage_missed = []
+ self.coverage_excluded = []
self.timings = []
def addCoverageMissed(self, filename, statements, missed_statements,
@@ -39,6 +40,9 @@ class CoverageTestResult(unittest.TestResult):
self.coverage_missed.append((filename, statements, missed_statements,
missed_description))
+ def addCoverageExcluded(self, statements):
+ self.coverage_excluded += statements
+
def wasSuccessful(self, ignore_coverage=False):
return (unittest.TestResult.wasSuccessful(self) and
(ignore_coverage or not self.coverage_missed))
@@ -71,6 +75,7 @@ class CoverageTestRunner:
"""A test runner class that insists modules' tests cover them fully."""
def __init__(self):
+ self._dirname = None
self._module_pairs = []
def add_pair(self, module_pathname, test_module_pathname):
@@ -87,7 +92,10 @@ class CoverageTestRunner:
"""
suffixes = ["_tests.py", "Tests.py"]
-
+
+ self._dirname = os.path.abspath(dirname)
+ if not self._dirname.endswith(os.sep):
+ self._dirname += os.sep
for dirname, dirnames, filenames in os.walk(dirname):
tests = []
@@ -141,9 +149,15 @@ class CoverageTestRunner:
del sys.path[0]
suite.run(result)
coverage.stop()
- filename, stmts, missed, missed_desc = coverage.analysis(module)
+ filename, stmts, excluded, missed, missed_desc = \
+ coverage.analysis2(module)
+ if self._dirname and filename.startswith(self._dirname):
+ filename = filename[len(self._dirname):]
if missed:
result.addCoverageMissed(filename, stmts, missed, missed_desc)
+ print "xxxx"
+ print "excluded:", excluded
+ result.addCoverageExcluded(excluded)
end_time = time.time()
@@ -171,6 +185,9 @@ class CoverageTestRunner:
print "%d failures, %d errors" % (len(result.failures),
len(result.errors))
+ if result.coverage_excluded:
+ print len(result.coverage_excluded), "excluded statements"
+
if end_time - start_time > 10:
print
print "Slowest tests:"