summaryrefslogtreecommitdiff
path: root/coverage/report.py
diff options
context:
space:
mode:
authorNed Batchelder <ned@nedbatchelder.com>2010-08-28 18:53:10 -0400
committerNed Batchelder <ned@nedbatchelder.com>2010-08-28 18:53:10 -0400
commitc91ab2a64249971c598e52d66b3b2c9b877140c2 (patch)
tree725a4be41ea35640b440d45ee4ea7c8e8e1cd484 /coverage/report.py
parent895fa1bac33cc6f9850e027af1c6abc2014fd4dc (diff)
downloadpython-coveragepy-git-c91ab2a64249971c598e52d66b3b2c9b877140c2.tar.gz
Refactor the --omit and --include support during reporting, and add a test for --include.
Diffstat (limited to 'coverage/report.py')
-rw-r--r--coverage/report.py32
1 files changed, 28 insertions, 4 deletions
diff --git a/coverage/report.py b/coverage/report.py
index f7662a31..a1d50828 100644
--- a/coverage/report.py
+++ b/coverage/report.py
@@ -1,6 +1,7 @@
"""Reporter foundation for Coverage."""
-import os
+import fnmatch, os
+from coverage.backward import string_class
from coverage.codeunit import code_unit_factory
from coverage.misc import CoverageException, NoSource
@@ -33,9 +34,32 @@ class Reporter(object):
"""
morfs = morfs or self.coverage.data.executed_files()
- self.code_units = code_unit_factory(
- morfs, self.coverage.file_locator, omit, include
- )
+ file_locator = self.coverage.file_locator
+ self.code_units = code_unit_factory(morfs, file_locator)
+
+ if include:
+ assert not isinstance(include, string_class) # common mistake
+ patterns = [file_locator.abs_file(p) for p in include]
+ filtered = []
+ for cu in self.code_units:
+ for pattern in patterns:
+ if fnmatch.fnmatch(cu.filename, pattern):
+ filtered.append(cu)
+ break
+ self.code_units = filtered
+
+ if omit:
+ assert not isinstance(omit, string_class) # common mistake
+ patterns = [file_locator.abs_file(p) for p in omit]
+ filtered = []
+ for cu in self.code_units:
+ for pattern in patterns:
+ if fnmatch.fnmatch(cu.filename, pattern):
+ break
+ else:
+ filtered.append(cu)
+ self.code_units = filtered
+
self.code_units.sort()
def report_files(self, report_fn, morfs, directory=None,