diff options
author | Ned Batchelder <ned@nedbatchelder.com> | 2010-08-28 18:53:10 -0400 |
---|---|---|
committer | Ned Batchelder <ned@nedbatchelder.com> | 2010-08-28 18:53:10 -0400 |
commit | c91ab2a64249971c598e52d66b3b2c9b877140c2 (patch) | |
tree | 725a4be41ea35640b440d45ee4ea7c8e8e1cd484 /coverage/report.py | |
parent | 895fa1bac33cc6f9850e027af1c6abc2014fd4dc (diff) | |
download | python-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.py | 32 |
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, |