summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNed Batchelder <ned@nedbatchelder.com>2010-09-02 22:06:16 -0400
committerNed Batchelder <ned@nedbatchelder.com>2010-09-02 22:06:16 -0400
commit3a7cc512247059017ddd5ced1344578c845c9edd (patch)
treeb9bd7cd406d43154e45fd563ad7c89e05ebd8400
parent26316d5d71e33daadcf6272288fd5a6a7a5e8423 (diff)
downloadpython-coveragepy-git-3a7cc512247059017ddd5ced1344578c845c9edd.tar.gz
Pass config objects around to limit the sprawl of argument lists.
-rw-r--r--coverage/annotate.py4
-rw-r--r--coverage/control.py22
-rw-r--r--coverage/html.py14
-rw-r--r--coverage/report.py26
-rw-r--r--coverage/summary.py7
-rw-r--r--coverage/xmlreport.py7
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