summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNed Batchelder <ned@nedbatchelder.com>2019-06-17 12:37:40 -0400
committerNed Batchelder <ned@nedbatchelder.com>2019-06-17 17:57:36 -0400
commit9b75b1ae769a1cf8255c4193f51af0c599c6bd4c (patch)
tree434f669fe2bca0d145c4bdc0da97ae8d73410e67
parentfa90997a1400d47414f8603df70838e07a5930cd (diff)
downloadpython-coveragepy-git-9b75b1ae769a1cf8255c4193f51af0c599c6bd4c.tar.gz
No need to pass coverage/config separately everywhere
-rw-r--r--coverage/annotate.py6
-rw-r--r--coverage/control.py8
-rw-r--r--coverage/html.py6
-rw-r--r--coverage/report.py3
-rw-r--r--coverage/summary.py6
-rw-r--r--coverage/xmlreport.py10
-rw-r--r--tests/test_summary.py37
7 files changed, 35 insertions, 41 deletions
diff --git a/coverage/annotate.py b/coverage/annotate.py
index 35b21360..999ab6e5 100644
--- a/coverage/annotate.py
+++ b/coverage/annotate.py
@@ -36,9 +36,9 @@ class AnnotateReporter(object):
"""
- def __init__(self, coverage, config):
+ def __init__(self, coverage):
self.coverage = coverage
- self.config = config
+ self.config = self.coverage.config
self.directory = None
blank_re = re.compile(r"\s*(#|$)")
@@ -52,7 +52,7 @@ class AnnotateReporter(object):
"""
self.directory = directory
self.coverage.get_data()
- for fr, analysis in get_analysis_to_report(self.coverage, self.config, morfs):
+ for fr, analysis in get_analysis_to_report(self.coverage, morfs):
self.annotate_file(fr, analysis)
def annotate_file(self, fr, analysis):
diff --git a/coverage/control.py b/coverage/control.py
index 4cd1adad..c398f2a7 100644
--- a/coverage/control.py
+++ b/coverage/control.py
@@ -762,7 +762,7 @@ class Coverage(object):
show_missing=show_missing, skip_covered=skip_covered,
query_contexts=contexts,
)
- reporter = SummaryReporter(self, self.config)
+ reporter = SummaryReporter(self)
return reporter.report(morfs, outfile=file)
def annotate(
@@ -783,7 +783,7 @@ class Coverage(object):
ignore_errors=ignore_errors, report_omit=omit,
report_include=include, query_contexts=contexts,
)
- reporter = AnnotateReporter(self, self.config)
+ reporter = AnnotateReporter(self)
reporter.report(morfs, directory=directory)
def html_report(self, morfs=None, directory=None, ignore_errors=None,
@@ -817,7 +817,7 @@ class Coverage(object):
html_dir=directory, extra_css=extra_css, html_title=title,
skip_covered=skip_covered, show_contexts=show_contexts, query_contexts=contexts,
)
- reporter = HtmlReporter(self, self.config)
+ reporter = HtmlReporter(self)
return reporter.report(morfs)
def xml_report(
@@ -857,7 +857,7 @@ class Coverage(object):
outfile = open(self.config.xml_output, "w", **open_kwargs)
file_to_close = outfile
try:
- reporter = XmlReporter(self, self.config)
+ reporter = XmlReporter(self)
return reporter.report(morfs, outfile=outfile)
except CoverageException:
delete_file = True
diff --git a/coverage/html.py b/coverage/html.py
index 89f56a3e..b1ae29e6 100644
--- a/coverage/html.py
+++ b/coverage/html.py
@@ -97,9 +97,9 @@ class HtmlReporter(object):
c_mis = "mis"
c_par = "par run hide_run"
- def __init__(self, cov, config):
+ def __init__(self, cov):
self.coverage = cov
- self.config = config
+ self.config =self.coverage.config
self.directory = None
title = self.config.html_title
if env.PY2:
@@ -157,7 +157,7 @@ class HtmlReporter(object):
# Process all the files.
self.coverage.get_data().set_query_contexts(self.config.query_contexts)
- for fr, analysis in get_analysis_to_report(self.coverage, self.config, morfs):
+ for fr, analysis in get_analysis_to_report(self.coverage, morfs):
self.html_file(fr, analysis)
if not self.all_files_nums:
diff --git a/coverage/report.py b/coverage/report.py
index 2c2e0198..9a740290 100644
--- a/coverage/report.py
+++ b/coverage/report.py
@@ -7,7 +7,7 @@ from coverage.files import prep_patterns, FnmatchMatcher
from coverage.misc import CoverageException, NoSource, NotPython
-def get_analysis_to_report(coverage, config, morfs):
+def get_analysis_to_report(coverage, morfs):
"""Get the files to report on.
For each morf in `morfs`, if it should be reported on (based on the omit
@@ -16,6 +16,7 @@ def get_analysis_to_report(coverage, config, morfs):
"""
file_reporters = coverage._get_file_reporters(morfs)
+ config = coverage.config
if config.report_include:
matcher = FnmatchMatcher(prep_patterns(config.report_include))
diff --git a/coverage/summary.py b/coverage/summary.py
index 6e711089..419051b0 100644
--- a/coverage/summary.py
+++ b/coverage/summary.py
@@ -14,9 +14,9 @@ from coverage.misc import NotPython, CoverageException, output_encoding
class SummaryReporter(object):
"""A reporter for writing the summary report."""
- def __init__(self, coverage, config):
+ def __init__(self, coverage):
self.coverage = coverage
- self.config = config
+ self.config = self.coverage.config
self.branches = coverage.get_data().has_arcs()
self.outfile = None
self.fr_analysis = []
@@ -41,7 +41,7 @@ class SummaryReporter(object):
self.outfile = outfile or sys.stdout
self.coverage.get_data().set_query_contexts(self.config.query_contexts)
- for fr, analysis in get_analysis_to_report(self.coverage, self.config, morfs):
+ for fr, analysis in get_analysis_to_report(self.coverage, morfs):
self.report_one_file(fr, analysis)
# Prepare the formatting strings, header, and column sorting.
diff --git a/coverage/xmlreport.py b/coverage/xmlreport.py
index a414ed40..07967719 100644
--- a/coverage/xmlreport.py
+++ b/coverage/xmlreport.py
@@ -33,13 +33,13 @@ def rate(hit, num):
class XmlReporter(object):
"""A reporter for writing Cobertura-style XML coverage results."""
- def __init__(self, coverage, config):
+ def __init__(self, coverage):
self.coverage = coverage
- self.config = config
+ self.config = self.coverage.config
self.source_paths = set()
- if config.source:
- for src in config.source:
+ if self.config.source:
+ for src in self.config.source:
if os.path.exists(src):
self.source_paths.add(files.canonical_filename(src))
self.packages = {}
@@ -72,7 +72,7 @@ class XmlReporter(object):
xcoverage.appendChild(self.xml_out.createComment(" Based on %s " % DTD_URL))
# Call xml_file for each file in the data.
- for fr, analysis in get_analysis_to_report(self.coverage, self.config, morfs):
+ for fr, analysis in get_analysis_to_report(self.coverage, morfs):
self.xml_file(fr, analysis)
xsources = self.xml_out.createElement("sources")
diff --git a/tests/test_summary.py b/tests/test_summary.py
index f7824ce4..b25c7764 100644
--- a/tests/test_summary.py
+++ b/tests/test_summary.py
@@ -13,7 +13,6 @@ import re
import coverage
from coverage import env
from coverage.backward import StringIO
-from coverage.config import CoverageConfig
from coverage.control import Coverage
from coverage.data import CoverageData
from coverage.misc import CoverageException, output_encoding
@@ -793,8 +792,11 @@ class TestSummaryReporterConfiguration(CoverageTest):
source += " a = 2\n" * dont_run
self.make_file(filename, source)
- def get_summary_text(self, options):
- """Get text output from the SummaryReporter."""
+ def get_summary_text(self, *options):
+ """Get text output from the SummaryReporter.
+
+ The arguments are tuples: (name, value) for Coverage.set_option.
+ """
self.make_rigged_file("file1.py", 339, 155)
self.make_rigged_file("file2.py", 13, 3)
self.make_rigged_file("file3.py", 234, 228)
@@ -804,7 +806,9 @@ class TestSummaryReporterConfiguration(CoverageTest):
cov.start()
import doit # pragma: nested # pylint: disable=import-error, unused-import
cov.stop() # pragma: nested
- printer = SummaryReporter(cov, options)
+ for name, value in options:
+ cov.set_option(name, value)
+ printer = SummaryReporter(cov)
destination = StringIO()
printer.report([], destination)
return destination.getvalue()
@@ -813,7 +817,7 @@ class TestSummaryReporterConfiguration(CoverageTest):
# We use our own test files as test data. Check that our assumptions
# about them are still valid. We want the three columns of numbers to
# sort in three different orders.
- report = self.get_summary_text(CoverageConfig())
+ report = self.get_summary_text()
print(report)
# Name Stmts Miss Cover
# --------------------------------------------
@@ -837,16 +841,13 @@ class TestSummaryReporterConfiguration(CoverageTest):
def test_defaults(self):
"""Run the report with no configuration options."""
- opts = CoverageConfig()
- report = self.get_summary_text(opts)
+ report = self.get_summary_text()
self.assertNotIn('Missing', report)
self.assertNotIn('Branch', report)
def test_print_missing(self):
"""Run the report printing the missing lines."""
- opts = CoverageConfig()
- opts.from_args(show_missing=True)
- report = self.get_summary_text(opts)
+ report = self.get_summary_text(('report:show_missing', True))
self.assertIn('Missing', report)
self.assertNotIn('Branch', report)
@@ -860,29 +861,21 @@ class TestSummaryReporterConfiguration(CoverageTest):
def test_sort_report_by_stmts(self):
# Sort the text report by the Stmts column.
- opts = CoverageConfig()
- opts.from_args(sort='Stmts')
- report = self.get_summary_text(opts)
+ report = self.get_summary_text(('report:sort', 'Stmts'))
self.assert_ordering(report, "test_backward.py", "test_coverage.py", "test_api.py")
def test_sort_report_by_missing(self):
# Sort the text report by the Missing column.
- opts = CoverageConfig()
- opts.from_args(sort='Miss')
- report = self.get_summary_text(opts)
+ report = self.get_summary_text(('report:sort', 'Miss'))
self.assert_ordering(report, "test_backward.py", "test_api.py", "test_coverage.py")
def test_sort_report_by_cover(self):
# Sort the text report by the Cover column.
- opts = CoverageConfig()
- opts.from_args(sort='Cover')
- report = self.get_summary_text(opts)
+ report = self.get_summary_text(('report:sort', 'Cover'))
self.assert_ordering(report, "test_coverage.py", "test_api.py", "test_backward.py")
def test_sort_report_by_invalid_option(self):
# Sort the text report by a nonsense column.
- opts = CoverageConfig()
- opts.from_args(sort='Xyzzy')
msg = "Invalid sorting option: 'Xyzzy'"
with self.assertRaisesRegex(CoverageException, msg):
- self.get_summary_text(opts)
+ self.get_summary_text(('report:sort', 'Xyzzy'))