summaryrefslogtreecommitdiff
path: root/coverage/control.py
diff options
context:
space:
mode:
authorNed Batchelder <ned@nedbatchelder.com>2009-03-12 20:38:55 -0400
committerNed Batchelder <ned@nedbatchelder.com>2009-03-12 20:38:55 -0400
commitd56b742676743743a7cdfce980f980ea3e3d1857 (patch)
treec0022f39d561671c35535dc276bd2af1fcb264a6 /coverage/control.py
parent3a7944b64a2506a999b1e888f4325b21456ccdfe (diff)
downloadpython-coveragepy-d56b742676743743a7cdfce980f980ea3e3d1857.tar.gz
Refactor the reporting function into the SummaryReporter class.
Diffstat (limited to 'coverage/control.py')
-rw-r--r--coverage/control.py59
1 files changed, 5 insertions, 54 deletions
diff --git a/coverage/control.py b/coverage/control.py
index 3a3a3ee..4f3a3f5 100644
--- a/coverage/control.py
+++ b/coverage/control.py
@@ -2,10 +2,11 @@
import os, re, sys
-from coverage.data import CoverageData
-from coverage.misc import format_lines, CoverageException
from coverage.codeunit import code_unit_factory
+from coverage.data import CoverageData
from coverage.files import FileLocator
+from coverage.misc import format_lines, CoverageException
+from coverage.summary import SummaryReporter
class coverage:
def __init__(self):
@@ -153,58 +154,8 @@ class coverage:
# Programmatic entry point
def report(self, morfs, show_missing=True, ignore_errors=False, file=None):
- self.report_engine(morfs, show_missing=show_missing, ignore_errors=ignore_errors, outfile=file)
-
- def report_engine(self, morfs, show_missing=True, ignore_errors=False, outfile=None, omit_prefixes=None):
- morfs = morfs or self.data.executed_files()
- code_units = code_unit_factory(morfs, self.file_locator, omit_prefixes)
- code_units.sort()
-
- max_name = max(5, max(map(lambda cu: len(cu.name), code_units)))
- fmt_name = "%%- %ds " % max_name
- fmt_err = fmt_name + "%s: %s"
- header = fmt_name % "Name" + " Stmts Exec Cover"
- fmt_coverage = fmt_name + "% 6d % 6d % 5d%%"
- if show_missing:
- header = header + " Missing"
- fmt_coverage = fmt_coverage + " %s"
- if not outfile:
- outfile = sys.stdout
- print >>outfile, header
- print >>outfile, "-" * len(header)
- total_statements = 0
- total_executed = 0
- for cu in code_units:
- try:
- _, statements, _, missing, readable = self.analyze(cu)
- n = len(statements)
- m = n - len(missing)
- if n > 0:
- pc = 100.0 * m / n
- else:
- pc = 100.0
- args = (cu.name, n, m, pc)
- if show_missing:
- args = args + (readable,)
- print >>outfile, fmt_coverage % args
- total_statements = total_statements + n
- total_executed = total_executed + m
- except KeyboardInterrupt: #pragma: no cover
- raise
- except:
- if not ignore_errors:
- typ, msg = sys.exc_info()[:2]
- print >>outfile, fmt_err % (cu.name, typ, msg)
- if len(code_units) > 1:
- print >>outfile, "-" * len(header)
- if total_statements > 0:
- pc = 100.0 * total_executed / total_statements
- else:
- pc = 100.0
- args = ("TOTAL", total_statements, total_executed, pc)
- if show_missing:
- args = args + ("",)
- print >>outfile, fmt_coverage % args
+ reporter = SummaryReporter(self, show_missing, ignore_errors)
+ reporter.report(morfs, outfile=file)
# annotate(morfs, ignore_errors).