summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--coverage/control.py13
-rw-r--r--coverage/xmlreport.py9
-rw-r--r--test/test_cmdline.py58
3 files changed, 43 insertions, 37 deletions
diff --git a/coverage/control.py b/coverage/control.py
index a337d6bd..2c774ae6 100644
--- a/coverage/control.py
+++ b/coverage/control.py
@@ -102,8 +102,12 @@ class coverage(object):
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.require_prefixes:
self.require_prefixes = [self.file_locator.abs_file(p) for p in self.config.require_prefixes]
+ else:
+ self.require_prefixes = []
self.collector = Collector(
self._should_trace, timid=self.config.timid,
@@ -192,12 +196,9 @@ class coverage(object):
return canonical
else:
return False
- elif omit_prefixes:
- for prefix in prefixes:
- if canonical.startswith(prefix):
- return False
-
- code_units = filtered
+ for prefix in self.omit_prefixes:
+ if canonical.startswith(prefix):
+ return False
return canonical
diff --git a/coverage/xmlreport.py b/coverage/xmlreport.py
index ab44025d..4f91b1b6 100644
--- a/coverage/xmlreport.py
+++ b/coverage/xmlreport.py
@@ -22,12 +22,17 @@ class XmlReporter(Reporter):
self.xml_out = None
self.arcs = coverage.data.has_arcs()
- def report(self, morfs, omit_prefixes=None, outfile=None):
+ def report(self, morfs, omit_prefixes=None, require_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.
+ `omit_prefixes` is a list of prefixes. CodeUnits that match those prefixes
+ will be omitted from the list.
+ `require_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 `require_prefixes`.
"""
# Initial setup.
outfile = outfile or sys.stdout
@@ -52,7 +57,7 @@ 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)
+ self.report_files(self.xml_file, morfs, omit_prefixes=omit_prefixes, require_prefixes=require_prefixes)
lnum_tot, lhits_tot = 0, 0
bnum_tot, bhits_tot = 0, 0
diff --git a/test/test_cmdline.py b/test/test_cmdline.py
index 3c2ecef3..fcb3caaf 100644
--- a/test/test_cmdline.py
+++ b/test/test_cmdline.py
@@ -159,31 +159,31 @@ class ClassicCmdLineTest(CmdLineTest):
def testReport(self):
# coverage -r [-m] [-i] [-o DIR,...] [FILE1 FILE2 ...]
self.cmd_executes("-r", self.INIT_LOAD + """\
- .report(ignore_errors=None, omit_prefixes=None, morfs=[],
+ .report(ignore_errors=None, omit_prefixes=None, require_prefixes=None, morfs=[],
show_missing=None)
""")
self.cmd_executes("-r -i", self.INIT_LOAD + """\
- .report(ignore_errors=True, omit_prefixes=None, morfs=[],
+ .report(ignore_errors=True, omit_prefixes=None, require_prefixes=None, morfs=[],
show_missing=None)
""")
self.cmd_executes("-r -m", self.INIT_LOAD + """\
- .report(ignore_errors=None, omit_prefixes=None, morfs=[],
+ .report(ignore_errors=None, omit_prefixes=None, require_prefixes=None, morfs=[],
show_missing=True)
""")
self.cmd_executes("-r -o fooey", self.INIT_LOAD + """\
- .report(ignore_errors=None, omit_prefixes=["fooey"],
+ .report(ignore_errors=None, omit_prefixes=["fooey"], require_prefixes=None,
morfs=[], show_missing=None)
""")
self.cmd_executes("-r -o fooey,booey", self.INIT_LOAD + """\
- .report(ignore_errors=None, omit_prefixes=["fooey", "booey"],
+ .report(ignore_errors=None, omit_prefixes=["fooey", "booey"], require_prefixes=None,
morfs=[], show_missing=None)
""")
self.cmd_executes("-r mod1", self.INIT_LOAD + """\
- .report(ignore_errors=None, omit_prefixes=None,
+ .report(ignore_errors=None, omit_prefixes=None, require_prefixes=None,
morfs=["mod1"], show_missing=None)
""")
self.cmd_executes("-r mod1 mod2 mod3", self.INIT_LOAD + """\
- .report(ignore_errors=None, omit_prefixes=None,
+ .report(ignore_errors=None, omit_prefixes=None, require_prefixes=None,
morfs=["mod1", "mod2", "mod3"], show_missing=None)
""")
@@ -201,31 +201,31 @@ class ClassicCmdLineTest(CmdLineTest):
# coverage -a [-d DIR] [-i] [-o DIR,...] [FILE1 FILE2 ...]
self.cmd_executes("-a", self.INIT_LOAD + """\
.annotate(directory=None, ignore_errors=None,
- omit_prefixes=None, morfs=[])
+ omit_prefixes=None, require_prefixes=None, morfs=[])
""")
self.cmd_executes("-a -d dir1", self.INIT_LOAD + """\
.annotate(directory="dir1", ignore_errors=None,
- omit_prefixes=None, morfs=[])
+ omit_prefixes=None, require_prefixes=None, morfs=[])
""")
self.cmd_executes("-a -i", self.INIT_LOAD + """\
.annotate(directory=None, ignore_errors=True,
- omit_prefixes=None, morfs=[])
+ omit_prefixes=None, require_prefixes=None, morfs=[])
""")
self.cmd_executes("-a -o fooey", self.INIT_LOAD + """\
.annotate(directory=None, ignore_errors=None,
- omit_prefixes=["fooey"], morfs=[])
+ omit_prefixes=["fooey"], require_prefixes=None, morfs=[])
""")
self.cmd_executes("-a -o fooey,booey", self.INIT_LOAD + """\
.annotate(directory=None, ignore_errors=None,
- omit_prefixes=["fooey", "booey"], morfs=[])
+ omit_prefixes=["fooey", "booey"], require_prefixes=None, morfs=[])
""")
self.cmd_executes("-a mod1", self.INIT_LOAD + """\
.annotate(directory=None, ignore_errors=None,
- omit_prefixes=None, morfs=["mod1"])
+ omit_prefixes=None, require_prefixes=None, morfs=["mod1"])
""")
self.cmd_executes("-a mod1 mod2 mod3", self.INIT_LOAD + """\
.annotate(directory=None, ignore_errors=None,
- omit_prefixes=None, morfs=["mod1", "mod2", "mod3"])
+ omit_prefixes=None, require_prefixes=None, morfs=["mod1", "mod2", "mod3"])
""")
self.cmd_executes_same("-a", "--annotate")
@@ -242,31 +242,31 @@ class ClassicCmdLineTest(CmdLineTest):
# coverage -b -d DIR [-i] [-o DIR,...] [FILE1 FILE2 ...]
self.cmd_executes("-b", self.INIT_LOAD + """\
.html_report(directory=None, ignore_errors=None,
- omit_prefixes=None, morfs=[])
+ omit_prefixes=None, require_prefixes=None, morfs=[])
""")
self.cmd_executes("-b -d dir1", self.INIT_LOAD + """\
.html_report(directory="dir1", ignore_errors=None,
- omit_prefixes=None, morfs=[])
+ omit_prefixes=None, require_prefixes=None, morfs=[])
""")
self.cmd_executes("-b -i", self.INIT_LOAD + """\
.html_report(directory=None, ignore_errors=True,
- omit_prefixes=None, morfs=[])
+ omit_prefixes=None, require_prefixes=None, morfs=[])
""")
self.cmd_executes("-b -o fooey", self.INIT_LOAD + """\
.html_report(directory=None, ignore_errors=None,
- omit_prefixes=["fooey"], morfs=[])
+ omit_prefixes=["fooey"], require_prefixes=None, morfs=[])
""")
self.cmd_executes("-b -o fooey,booey", self.INIT_LOAD + """\
.html_report(directory=None, ignore_errors=None,
- omit_prefixes=["fooey", "booey"], morfs=[])
+ omit_prefixes=["fooey", "booey"], require_prefixes=None, morfs=[])
""")
self.cmd_executes("-b mod1", self.INIT_LOAD + """\
.html_report(directory=None, ignore_errors=None,
- omit_prefixes=None, morfs=["mod1"])
+ omit_prefixes=None, require_prefixes=None, morfs=["mod1"])
""")
self.cmd_executes("-b mod1 mod2 mod3", self.INIT_LOAD + """\
.html_report(directory=None, ignore_errors=None,
- omit_prefixes=None, morfs=["mod1", "mod2", "mod3"])
+ omit_prefixes=None, require_prefixes=None, morfs=["mod1", "mod2", "mod3"])
""")
self.cmd_executes_same("-b", "--html")
@@ -471,35 +471,35 @@ class NewCmdLineTest(CmdLineTest):
def testXml(self):
# coverage xml [-i] [--omit DIR,...] [FILE1 FILE2 ...]
self.cmd_executes("xml", self.INIT_LOAD + """\
- .xml_report(ignore_errors=None, omit_prefixes=None, morfs=[],
+ .xml_report(ignore_errors=None, omit_prefixes=None, require_prefixes=None, morfs=[],
outfile="coverage.xml")
""")
self.cmd_executes("xml -i", self.INIT_LOAD + """\
- .xml_report(ignore_errors=True, omit_prefixes=None, morfs=[],
+ .xml_report(ignore_errors=True, omit_prefixes=None, require_prefixes=None, morfs=[],
outfile="coverage.xml")
""")
self.cmd_executes("xml -o myxml.foo", self.INIT_LOAD + """\
- .xml_report(ignore_errors=None, omit_prefixes=None, morfs=[],
+ .xml_report(ignore_errors=None, omit_prefixes=None, require_prefixes=None, morfs=[],
outfile="myxml.foo")
""")
self.cmd_executes("xml -o -", self.INIT_LOAD + """\
- .xml_report(ignore_errors=None, omit_prefixes=None, morfs=[],
+ .xml_report(ignore_errors=None, omit_prefixes=None, require_prefixes=None, morfs=[],
outfile="-")
""")
self.cmd_executes("xml --omit fooey", self.INIT_LOAD + """\
- .xml_report(ignore_errors=None, omit_prefixes=["fooey"], morfs=[],
+ .xml_report(ignore_errors=None, omit_prefixes=["fooey"], require_prefixes=None, morfs=[],
outfile="coverage.xml")
""")
self.cmd_executes("xml --omit fooey,booey", self.INIT_LOAD + """\
- .xml_report(ignore_errors=None, omit_prefixes=["fooey", "booey"],
+ .xml_report(ignore_errors=None, omit_prefixes=["fooey", "booey"], require_prefixes=None,
morfs=[], outfile="coverage.xml")
""")
self.cmd_executes("xml mod1", self.INIT_LOAD + """\
- .xml_report(ignore_errors=None, omit_prefixes=None, morfs=["mod1"],
+ .xml_report(ignore_errors=None, omit_prefixes=None, require_prefixes=None, morfs=["mod1"],
outfile="coverage.xml")
""")
self.cmd_executes("xml mod1 mod2 mod3", self.INIT_LOAD + """\
- .xml_report(ignore_errors=None, omit_prefixes=None,
+ .xml_report(ignore_errors=None, omit_prefixes=None, require_prefixes=None,
morfs=["mod1", "mod2", "mod3"], outfile="coverage.xml")
""")