summaryrefslogtreecommitdiff
path: root/coverage
diff options
context:
space:
mode:
Diffstat (limited to 'coverage')
-rw-r--r--coverage/annotate.py16
-rw-r--r--coverage/cmdline.py4
-rw-r--r--coverage/codeunit.py14
-rw-r--r--coverage/config.py6
-rw-r--r--coverage/control.py68
-rw-r--r--coverage/html.py20
-rw-r--r--coverage/report.py21
-rw-r--r--coverage/summary.py11
-rw-r--r--coverage/xmlreport.py19
9 files changed, 87 insertions, 92 deletions
diff --git a/coverage/annotate.py b/coverage/annotate.py
index b53ae03d..5cbdd6a0 100644
--- a/coverage/annotate.py
+++ b/coverage/annotate.py
@@ -33,15 +33,17 @@ 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_prefixes=None, include_prefixes=None):
+ def report(self, morfs, directory=None, omit_prefixes=None,
+ include_prefixes=None):
"""Run the report.
- `omit_prefixes` is a list of prefixes. CodeUnits that match those prefixes
- will be omitted from the list.
- `include_prefixes` is a list of prefixes. Only CodeUnits that match those prefixes
- will be included in the list.
- You are required to pass at most one of `omit_prefixes` and `include_prefixes`.
+
+ See `coverage.report()` for arguments.
+
"""
- self.report_files(self.annotate_file, morfs, directory, omit_prefixes, include_prefixes)
+ self.report_files(
+ self.annotate_file, morfs, directory, omit_prefixes,
+ include_prefixes
+ )
def annotate_file(self, cu, analysis):
"""Annotate a single file.
diff --git a/coverage/cmdline.py b/coverage/cmdline.py
index 9148904e..cb47690c 100644
--- a/coverage/cmdline.py
+++ b/coverage/cmdline.py
@@ -35,8 +35,8 @@ class Opts(object):
include = optparse.Option(
'', '--include', action='store',
metavar="PRE1,PRE2,...",
- help="Include files only when their filename path starts with one of these "
- "prefixes."
+ help="Include files only when their filename path starts with one of "
+ "these prefixes."
)
pylib = optparse.Option(
'-L', '--pylib', action='store_true',
diff --git a/coverage/codeunit.py b/coverage/codeunit.py
index 6312efe2..a0da1a71 100644
--- a/coverage/codeunit.py
+++ b/coverage/codeunit.py
@@ -6,16 +6,18 @@ from coverage.backward import string_class, StringIO
from coverage.misc import CoverageException
-def code_unit_factory(morfs, file_locator, omit_prefixes=None, include_prefixes=None):
+def code_unit_factory(
+ morfs, file_locator, omit_prefixes=None, include_prefixes=None
+ ):
"""Construct a list of CodeUnits from polymorphic inputs.
`morfs` is a module or a filename, or a list of same.
+
`file_locator` is a FileLocator that can help resolve filenames.
- `omit_prefixes` is a list of prefixes. CodeUnits that match those prefixes
- will be omitted from the list.
- `include_prefixes` is a list of prefixes. Only CodeUnits that match those prefixes
- will be included in the list.
- You are required to pass at most one of `omit_prefixes` and `include_prefixes`.
+
+ `include_prefixes` is a list of prefixes. Only CodeUnits that match those
+ prefixes will be included in the list. `omit_prefixes` is a list of
+ prefixes to omit from the list.
Returns a list of CodeUnit objects.
diff --git a/coverage/config.py b/coverage/config.py
index 34ed814d..133444d8 100644
--- a/coverage/config.py
+++ b/coverage/config.py
@@ -95,12 +95,12 @@ class CoverageConfig(object):
def get_list(self, cp, section, option):
"""Read a list of strings from the ConfigParser `cp`.
-
+
The value of `section` and `option` is treated as a comma- and newline-
separated list of strings. Each value is stripped of whitespace.
-
+
Returns the list of strings.
-
+
"""
value_list = cp.get(section, option)
values = []
diff --git a/coverage/control.py b/coverage/control.py
index 1ed3df54..d07abaf3 100644
--- a/coverage/control.py
+++ b/coverage/control.py
@@ -59,13 +59,10 @@ class coverage(object):
standard file is read (".coveragerc"). If it is False, then no file is
read.
- `omit_prefixes` is a list of prefixes. CodeUnits that match those prefixes
- will be omitted from the list.
+ `omit_prefixes` and `include_prefixes` are lists of filename prefixes.
+ Files that match `include_prefixes` will be measured, files that match
+ `omit_prefixes` will not.
- `include_prefixes` is a list of prefixes. Only CodeUnits that match those prefixes
- will be included in the list.
-
- You are required to pass at most one of `omit_prefixes` and `include_prefixes`.
"""
from coverage import __version__
@@ -101,14 +98,8 @@ class coverage(object):
self.file_locator = FileLocator()
- if self.config.omit_prefixes:
- self.omit_prefixes = [self.file_locator.abs_file(p) for p in self.config.omit_prefixes]
- else:
- self.omit_prefixes = []
- if self.config.include_prefixes:
- self.include_prefixes = [self.file_locator.abs_file(p) for p in self.config.include_prefixes]
- else:
- self.include_prefixes = []
+ self.omit_prefixes = self._abs_files(self.config.omit_prefixes)
+ self.include_prefixes = self._abs_files(self.config.include_prefixes)
self.collector = Collector(
self._should_trace, timid=self.config.timid,
@@ -213,6 +204,11 @@ class coverage(object):
print("should_trace: %r -> %r" % (filename, ret))
return ret
+ def _abs_files(self, files):
+ """Return a list of absolute file names for the names in `files`."""
+ files = files or []
+ return [self.file_locator.abs_file(f) for f in files]
+
def use_cache(self, usecache):
"""Control the use of a data file (incorrectly called a cache).
@@ -352,17 +348,18 @@ class coverage(object):
return Analysis(self, it)
def report(self, morfs=None, show_missing=True, ignore_errors=None,
- file=None, omit_prefixes=None, include_prefixes=None): # pylint: disable-msg=W0622
+ file=None, # pylint: disable-msg=W0622
+ omit_prefixes=None, include_prefixes=None
+ ):
"""Write a summary report to `file`.
Each module in `morfs` is listed, with counts of statements, executed
statements, missing statements, and a list of lines missed.
- `omit_prefixes` is a list of prefixes. CodeUnits that match those prefixes
- will be omitted from the list.
- `include_prefixes` is a list of prefixes. Only CodeUnits that match those prefixes
- will be included in the list.
- You are required to pass at most one of `omit_prefixes` and `include_prefixes`.
+ `include_prefixes` is a list of filename prefixes. Modules that match
+ those prefixes will be included in the report. Modules that match
+ `omit_prefixes` will not be included in the report.
+
"""
self.config.from_args(
ignore_errors=ignore_errors,
@@ -373,7 +370,8 @@ class coverage(object):
self, show_missing, self.config.ignore_errors
)
reporter.report(
- morfs, outfile=file, omit_prefixes=self.config.omit_prefixes, include_prefixes=self.config.include_prefixes
+ morfs, outfile=file, omit_prefixes=self.config.omit_prefixes,
+ include_prefixes=self.config.include_prefixes
)
def annotate(self, morfs=None, directory=None, ignore_errors=None,
@@ -385,11 +383,8 @@ class coverage(object):
marker to indicate the coverage of the line. Covered lines have ">",
excluded lines have "-", and missing lines have "!".
- `omit_prefixes` is a list of prefixes. CodeUnits that match those prefixes
- will be omitted from the list.
- `include_prefixes` is a list of prefixes. Only CodeUnits that match those prefixes
- will be included in the list.
- You are required to pass at most one of `omit_prefixes` and `include_prefixes`.
+ See `coverage.report()` for other arguments.
+
"""
self.config.from_args(
ignore_errors=ignore_errors,
@@ -398,18 +393,17 @@ class coverage(object):
)
reporter = AnnotateReporter(self, self.config.ignore_errors)
reporter.report(
- morfs, directory=directory, omit_prefixes=self.config.omit_prefixes, include_prefixes=self.config.include_prefixes
+ morfs, directory=directory,
+ omit_prefixes=self.config.omit_prefixes,
+ include_prefixes=self.config.include_prefixes
)
def html_report(self, morfs=None, directory=None, ignore_errors=None,
omit_prefixes=None, include_prefixes=None):
"""Generate an HTML report.
- `omit_prefixes` is a list of prefixes. CodeUnits that match those prefixes
- will be omitted from the list.
- `include_prefixes` is a list of prefixes. Only CodeUnits that match those prefixes
- will be included in the list.
- You are required to pass at most one of `omit_prefixes` and `include_prefixes`.
+ See `coverage.report()` for other arguments.
+
"""
self.config.from_args(
ignore_errors=ignore_errors,
@@ -433,11 +427,8 @@ class coverage(object):
Each module in `morfs` is included in the report. `outfile` is the
path to write the file to, "-" will write to stdout.
- `omit_prefixes` is a list of prefixes. CodeUnits that match those prefixes
- will be omitted from the list.
- `include_prefixes` is a list of prefixes. Only CodeUnits that match those prefixes
- will be included in the list.
- You are required to pass at most one of `omit_prefixes` and `include_prefixes`.
+ See `coverage.report()` for other arguments.
+
"""
self.config.from_args(
ignore_errors=ignore_errors,
@@ -455,7 +446,8 @@ class coverage(object):
try:
reporter = XmlReporter(self, self.config.ignore_errors)
reporter.report(
- morfs, omit_prefixes=self.config.omit_prefixes, include_prefixes=self.config.include_prefixes, outfile=outfile
+ morfs, omit_prefixes=self.config.omit_prefixes,
+ include_prefixes=self.config.include_prefixes, outfile=outfile
)
finally:
if file_to_close:
diff --git a/coverage/html.py b/coverage/html.py
index 16ec16bd..94ba0dea 100644
--- a/coverage/html.py
+++ b/coverage/html.py
@@ -31,23 +31,23 @@ class HtmlReporter(Reporter):
self.files = []
self.arcs = coverage.data.has_arcs()
- def report(self, morfs, directory, omit_prefixes=None, include_prefixes=None):
+ def report(self, morfs, directory, omit_prefixes=None,
+ include_prefixes=None
+ ):
"""Generate an HTML report for `morfs`.
`morfs` is a list of modules or filenames. `directory` is where to put
- the HTML files. `omit_prefixes` is a list of strings, prefixes of
- modules to omit from the report.
-
- `omit_prefixes` is a list of prefixes. CodeUnits that match those prefixes
- will be omitted from the list.
- `include_prefixes` is a list of prefixes. Only CodeUnits that match those prefixes
- will be included in the list.
- You are required to pass at most one of `omit_prefixes` and `include_prefixes`.
+ the HTML files.
+
+ See `coverage.report()` for other arguments.
+
"""
assert directory, "must provide a directory for html reporting"
# Process all the files.
- self.report_files(self.html_file, morfs, directory, omit_prefixes, include_prefixes)
+ self.report_files(
+ self.html_file, morfs, directory, omit_prefixes, include_prefixes
+ )
# Write the index file.
self.index_file()
diff --git a/coverage/report.py b/coverage/report.py
index 9e6b29d8..a676e186 100644
--- a/coverage/report.py
+++ b/coverage/report.py
@@ -26,18 +26,18 @@ class Reporter(object):
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.
- `omit_prefixes` is a list of prefixes. CodeUnits that match those prefixes
- will be omitted from the list.
- `include_prefixes` is a list of prefixes. Only CodeUnits that match those prefixes
- will be included in the list.
- You are required to pass at most one of `omit_prefixes` and `include_prefixes`.
+ 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, include_prefixes)
+ morfs, self.coverage.file_locator, omit_prefixes,
+ include_prefixes
+ )
self.code_units.sort()
def report_files(self, report_fn, morfs, directory=None,
@@ -46,11 +46,10 @@ class Reporter(object):
`report_fn` is called for each relative morf in `morfs`.
- `omit_prefixes` is a list of prefixes. CodeUnits that match those prefixes
- will be omitted from the list.
- `include_prefixes` is a list of prefixes. Only CodeUnits that match those prefixes
- will be included in the list.
- You are required to pass at most one of `omit_prefixes` and `include_prefixes`.
+ `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, include_prefixes)
diff --git a/coverage/summary.py b/coverage/summary.py
index df730375..89b31020 100644
--- a/coverage/summary.py
+++ b/coverage/summary.py
@@ -14,14 +14,13 @@ class SummaryReporter(Reporter):
self.show_missing = show_missing
self.branches = coverage.data.has_arcs()
- def report(self, morfs, omit_prefixes=None, outfile=None, include_prefixes=None):
+ def report(self, morfs, omit_prefixes=None, outfile=None,
+ include_prefixes=None
+ ):
"""Writes a report summarizing coverage statistics per module.
- `omit_prefixes` is a list of prefixes. CodeUnits that match those prefixes
- will be omitted from the list.
- `include_prefixes` is a list of prefixes. Only CodeUnits that match those prefixes
- will be included in the list.
- You are required to pass at most one of `omit_prefixes` and `include_prefixes`.
+ See `coverage.report()` for other arguments.
+
"""
self.find_code_units(morfs, omit_prefixes, include_prefixes)
diff --git a/coverage/xmlreport.py b/coverage/xmlreport.py
index 2fb57b26..17d9fd5f 100644
--- a/coverage/xmlreport.py
+++ b/coverage/xmlreport.py
@@ -22,17 +22,15 @@ class XmlReporter(Reporter):
self.xml_out = None
self.arcs = coverage.data.has_arcs()
- def report(self, morfs, omit_prefixes=None, include_prefixes=None, outfile=None):
+ def report(self, morfs, omit_prefixes=None, include_prefixes=None,
+ outfile=None
+ ):
"""Generate a Cobertura-compatible XML report for `morfs`.
- `morfs` is a list of modules or filenames. `omit_prefixes` is a list
- of strings, prefixes of modules to omit from the report.
+ `morfs` is a list of modules or filenames.
+
+ See `coverage.report()` for other arguments.
- `omit_prefixes` is a list of prefixes. CodeUnits that match those prefixes
- will be omitted from the list.
- `include_prefixes` is a list of prefixes. Only CodeUnits that match those prefixes
- will be included in the list.
- You are required to pass at most one of `omit_prefixes` and `include_prefixes`.
"""
# Initial setup.
outfile = outfile or sys.stdout
@@ -57,7 +55,10 @@ class XmlReporter(Reporter):
# Call xml_file for each file in the data.
self.packages = {}
- self.report_files(self.xml_file, morfs, omit_prefixes=omit_prefixes, include_prefixes=include_prefixes)
+ self.report_files(
+ self.xml_file, morfs, omit_prefixes=omit_prefixes,
+ include_prefixes=include_prefixes
+ )
lnum_tot, lhits_tot = 0, 0
bnum_tot, bhits_tot = 0, 0