diff options
author | Ned Batchelder <ned@nedbatchelder.com> | 2010-09-02 22:06:16 -0400 |
---|---|---|
committer | Ned Batchelder <ned@nedbatchelder.com> | 2010-09-02 22:06:16 -0400 |
commit | 3a7cc512247059017ddd5ced1344578c845c9edd (patch) | |
tree | b9bd7cd406d43154e45fd563ad7c89e05ebd8400 | |
parent | 26316d5d71e33daadcf6272288fd5a6a7a5e8423 (diff) | |
download | python-coveragepy-git-3a7cc512247059017ddd5ced1344578c845c9edd.tar.gz |
Pass config objects around to limit the sprawl of argument lists.
-rw-r--r-- | coverage/annotate.py | 4 | ||||
-rw-r--r-- | coverage/control.py | 22 | ||||
-rw-r--r-- | coverage/html.py | 14 | ||||
-rw-r--r-- | coverage/report.py | 26 | ||||
-rw-r--r-- | coverage/summary.py | 7 | ||||
-rw-r--r-- | coverage/xmlreport.py | 7 |
6 files changed, 30 insertions, 50 deletions
diff --git a/coverage/annotate.py b/coverage/annotate.py index e6e7485d..a556d853 100644 --- a/coverage/annotate.py +++ b/coverage/annotate.py @@ -33,13 +33,13 @@ class AnnotateReporter(Reporter): blank_re = re.compile(r"\s*(#|$)") else_re = re.compile(r"\s*else\s*:\s*(#|$)") - def report(self, morfs, directory=None, omit=None, include=None): + def report(self, morfs, config, directory=None): """Run the report. See `coverage.report()` for arguments. """ - self.report_files(self.annotate_file, morfs, directory, omit, include) + self.report_files(self.annotate_file, morfs, config, directory) def annotate_file(self, cu, analysis): """Annotate a single file. diff --git a/coverage/control.py b/coverage/control.py index 7df608db..dd7d705b 100644 --- a/coverage/control.py +++ b/coverage/control.py @@ -499,10 +499,7 @@ class coverage(object): reporter = SummaryReporter( self, show_missing, self.config.ignore_errors ) - reporter.report( - morfs, outfile=file, omit=self.config.omit, - include=self.config.include - ) + reporter.report(morfs, outfile=file, config=self.config) def annotate(self, morfs=None, directory=None, ignore_errors=None, omit=None, include=None): @@ -520,11 +517,7 @@ class coverage(object): ignore_errors=ignore_errors, omit=omit, include=include ) reporter = AnnotateReporter(self, self.config.ignore_errors) - reporter.report( - morfs, directory=directory, - omit=self.config.omit, - include=self.config.include - ) + reporter.report(morfs, config=self.config, directory=directory) def html_report(self, morfs=None, directory=None, ignore_errors=None, omit=None, include=None): @@ -538,11 +531,7 @@ class coverage(object): html_dir=directory, ) reporter = HtmlReporter(self, self.config.ignore_errors) - reporter.report( - morfs, directory=self.config.html_dir, - omit=self.config.omit, - include=self.config.include - ) + reporter.report(morfs, config=self.config) def xml_report(self, morfs=None, outfile=None, ignore_errors=None, omit=None, include=None): @@ -569,10 +558,7 @@ class coverage(object): file_to_close = outfile try: reporter = XmlReporter(self, self.config.ignore_errors) - reporter.report( - morfs, omit=self.config.omit, include=self.config.include, - outfile=outfile - ) + reporter.report(morfs, outfile=outfile, config=self.config) finally: if file_to_close: file_to_close.close() diff --git a/coverage/html.py b/coverage/html.py index a2005f4b..dac4ff96 100644 --- a/coverage/html.py +++ b/coverage/html.py @@ -32,19 +32,17 @@ class HtmlReporter(Reporter): self.files = [] self.arcs = coverage.data.has_arcs() - def report(self, morfs, directory, omit=None, include=None): + def report(self, morfs, config=None): """Generate an HTML report for `morfs`. - `morfs` is a list of modules or filenames. `directory` is where to put - the HTML files. - - See `coverage.report()` for other arguments. + `morfs` is a list of modules or filenames. `config` is a + CoverageConfig instance. """ - assert directory, "must provide a directory for html reporting" + assert config.html_dir, "must provide a directory for html reporting" # Process all the files. - self.report_files(self.html_file, morfs, directory, omit, include) + self.report_files(self.html_file, morfs, config, config.html_dir) if not self.files: raise CoverageException("No data to report.") @@ -59,7 +57,7 @@ class HtmlReporter(Reporter): ]: shutil.copyfile( data_filename("htmlfiles/" + static), - os.path.join(directory, static) + os.path.join(self.directory, static) ) def html_file(self, cu, analysis): diff --git a/coverage/report.py b/coverage/report.py index a1d50828..42b6150e 100644 --- a/coverage/report.py +++ b/coverage/report.py @@ -25,21 +25,19 @@ class Reporter(object): # classes. self.directory = None - def find_code_units(self, morfs, omit, include): + def find_code_units(self, morfs, config): """Find the code units we'll report on. - `morfs` is a list of modules or filenames. - - See `coverage.report()` for other arguments. + `morfs` is a list of modules or filenames. `config` is a + CoverageConfig instance. """ morfs = morfs or self.coverage.data.executed_files() 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] + if config.include: + patterns = [file_locator.abs_file(p) for p in config.include] filtered = [] for cu in self.code_units: for pattern in patterns: @@ -48,9 +46,8 @@ class Reporter(object): 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] + if config.omit: + patterns = [file_locator.abs_file(p) for p in config.omit] filtered = [] for cu in self.code_units: for pattern in patterns: @@ -62,18 +59,15 @@ class Reporter(object): self.code_units.sort() - def report_files(self, report_fn, morfs, directory=None, - omit=None, include=None): + def report_files(self, report_fn, morfs, config, directory=None): """Run a reporting function on a number of morfs. `report_fn` is called for each relative morf in `morfs`. - `include` is a list of filename patterns. CodeUnits that match - those patterns will be included in the list. CodeUnits that match - `omit` will be omitted from the list. + `config` is a CoverageConfig instance. """ - self.find_code_units(morfs, omit, include) + self.find_code_units(morfs, config) if not self.code_units: raise CoverageException("No data to report.") diff --git a/coverage/summary.py b/coverage/summary.py index a1206af5..599ae782 100644 --- a/coverage/summary.py +++ b/coverage/summary.py @@ -14,13 +14,14 @@ class SummaryReporter(Reporter): self.show_missing = show_missing self.branches = coverage.data.has_arcs() - def report(self, morfs, omit=None, outfile=None, include=None): + def report(self, morfs, outfile=None, config=None): """Writes a report summarizing coverage statistics per module. - See `coverage.report()` for other arguments. + `outfile` is a file object to write the summary to. `config` is a + CoverageConfig instance. """ - self.find_code_units(morfs, omit, include) + self.find_code_units(morfs, config) # Prepare the formatting strings max_name = max([len(cu.name) for cu in self.code_units] + [5]) diff --git a/coverage/xmlreport.py b/coverage/xmlreport.py index 66c10a49..7a6e5147 100644 --- a/coverage/xmlreport.py +++ b/coverage/xmlreport.py @@ -22,12 +22,13 @@ class XmlReporter(Reporter): self.xml_out = None self.arcs = coverage.data.has_arcs() - def report(self, morfs, omit=None, include=None, outfile=None): + def report(self, morfs, outfile=None, config=None): """Generate a Cobertura-compatible XML report for `morfs`. `morfs` is a list of modules or filenames. - See `coverage.report()` for other arguments. + `outfile` is a file object to write the XML to. `config` is a + CoverageConfig instance. """ # Initial setup. @@ -53,7 +54,7 @@ class XmlReporter(Reporter): # Call xml_file for each file in the data. self.packages = {} - self.report_files(self.xml_file, morfs, omit=omit, include=include) + self.report_files(self.xml_file, morfs, config) lnum_tot, lhits_tot = 0, 0 bnum_tot, bhits_tot = 0, 0 |