diff options
Diffstat (limited to 'coverage/report.py')
-rw-r--r-- | coverage/report.py | 37 |
1 files changed, 24 insertions, 13 deletions
diff --git a/coverage/report.py b/coverage/report.py index 7f3e3e02..a676e186 100644 --- a/coverage/report.py +++ b/coverage/report.py @@ -2,48 +2,59 @@ import os from coverage.codeunit import code_unit_factory -from coverage.misc import NoSource +from coverage.misc import CoverageException, NoSource class Reporter(object): """A base class for all reporters.""" - + def __init__(self, coverage, ignore_errors=False): """Create a reporter. - + `coverage` is the coverage instance. `ignore_errors` controls how skittish the reporter will be during file processing. """ self.coverage = coverage self.ignore_errors = ignore_errors - + # The code units to report on. Set by find_code_units. self.code_units = [] - + # The directory into which to place the report, used by some derived # classes. self.directory = None - def find_code_units(self, morfs, omit_prefixes): + def find_code_units(self, morfs, omit_prefixes, include_prefixes): """Find the code units we'll report on. - + `morfs` is a list of modules or filenames. `omit_prefixes` is a list of prefixes to leave out of the list. - + + See `coverage.report()` for other arguments. + """ morfs = morfs or self.coverage.data.executed_files() self.code_units = code_unit_factory( - morfs, self.coverage.file_locator, omit_prefixes) + morfs, self.coverage.file_locator, omit_prefixes, + include_prefixes + ) self.code_units.sort() def report_files(self, report_fn, morfs, directory=None, - omit_prefixes=None): + omit_prefixes=None, include_prefixes=None): """Run a reporting function on a number of morfs. - + `report_fn` is called for each relative morf in `morfs`. - + + `include_prefixes` is a list of filename prefixes. CodeUnits that match + those prefixes will be included in the list. CodeUnits that match + `omit_prefixes` will be omitted from the list. + """ - self.find_code_units(morfs, omit_prefixes) + self.find_code_units(morfs, omit_prefixes, include_prefixes) + + if not self.code_units: + raise CoverageException("No data to report.") self.directory = directory if self.directory and not os.path.exists(self.directory): |