summaryrefslogtreecommitdiff
path: root/coverage/summary.py
diff options
context:
space:
mode:
authorNed Batchelder <ned@nedbatchelder.com>2009-03-13 07:26:17 -0400
committerNed Batchelder <ned@nedbatchelder.com>2009-03-13 07:26:17 -0400
commit1aff296970383b278915a4be54ba6bb7edf21aed (patch)
tree3da0ba528eeac840e540631ed8407f9922e5795d /coverage/summary.py
parent39223c49237305877b7f032ab0b8c5567eb9c033 (diff)
downloadpython-coveragepy-1aff296970383b278915a4be54ba6bb7edf21aed.tar.gz
Start moving common reporter functionality into Reporter.
Diffstat (limited to 'coverage/summary.py')
-rw-r--r--coverage/summary.py29
1 files changed, 18 insertions, 11 deletions
diff --git a/coverage/summary.py b/coverage/summary.py
index 979d377..779cdad 100644
--- a/coverage/summary.py
+++ b/coverage/summary.py
@@ -2,24 +2,23 @@
import sys
-from coverage.codeunit import code_unit_factory
+from coverage.report import Reporter
-class SummaryReporter:
+
+class SummaryReporter(Reporter):
"""A reporter for writing the summary report."""
def __init__(self, coverage, show_missing=True, ignore_errors=False):
- self.coverage = coverage
+ super(SummaryReporter, self).__init__(coverage, ignore_errors)
self.show_missing = show_missing
- self.ignore_errors = ignore_errors
def report(self, morfs, omit_prefixes=None, outfile=None):
"""Writes a report summarizing coverage statistics per module."""
- morfs = morfs or self.coverage.data.executed_files()
- code_units = code_unit_factory(morfs, self.coverage.file_locator, omit_prefixes)
- code_units.sort()
+ self.find_code_units(morfs, omit_prefixes)
- max_name = max(5, max(map(lambda cu: len(cu.name), code_units)))
+ # Prepare the formatting strings
+ max_name = max(5, max(map(lambda cu: len(cu.name), self.code_units)))
fmt_name = "%%- %ds " % max_name
fmt_err = fmt_name + "%s: %s\n"
header = fmt_name % "Name" + " Stmts Exec Cover\n"
@@ -27,14 +26,20 @@ class SummaryReporter:
if self.show_missing:
header = header.replace("\n", " Missing\n")
fmt_coverage = fmt_coverage.replace("\n", " %s\n")
+ rule = "-" * (len(header)-1) + "\n"
+
if not outfile:
outfile = sys.stdout
- rule = "-" * (len(header)-1) + "\n"
+
+ # Write the header
outfile.write(header)
outfile.write(rule)
+
total_statements = 0
total_executed = 0
- for cu in code_units:
+ total_units = 0
+
+ for cu in self.code_units:
try:
_, statements, _, missing, readable = self.coverage.analyze(cu)
n = len(statements)
@@ -47,6 +52,7 @@ class SummaryReporter:
if self.show_missing:
args = args + (readable,)
outfile.write(fmt_coverage % args)
+ total_units += 1
total_statements = total_statements + n
total_executed = total_executed + m
except KeyboardInterrupt: #pragma: no cover
@@ -55,7 +61,8 @@ class SummaryReporter:
if not self.ignore_errors:
typ, msg = sys.exc_info()[:2]
outfile.write(fmt_err % (cu.name, typ, msg))
- if len(code_units) > 1:
+
+ if total_units > 1:
outfile.write(rule)
if total_statements > 0:
pc = 100.0 * total_executed / total_statements