diff options
Diffstat (limited to 'CoverageTestRunner.py')
-rw-r--r-- | CoverageTestRunner.py | 21 |
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:" |