--- a/DebugClients/Python3/coverage/summary.py Thu Jan 07 12:31:11 2010 +0000 +++ b/DebugClients/Python3/coverage/summary.py Thu Jan 07 13:13:31 2010 +0000 @@ -3,30 +3,39 @@ import sys from .report import Reporter +from .results import Numbers class SummaryReporter(Reporter): """A reporter for writing the summary report.""" - + def __init__(self, coverage, show_missing=True, ignore_errors=False): super(SummaryReporter, self).__init__(coverage, ignore_errors) self.show_missing = show_missing + self.branches = coverage.data.has_arcs() def report(self, morfs, omit_prefixes=None, outfile=None): """Writes a report summarizing coverage statistics per module.""" - + self.find_code_units(morfs, omit_prefixes) # Prepare the formatting strings max_name = max([len(cu.name) for cu in self.code_units] + [5]) fmt_name = "%%- %ds " % max_name fmt_err = "%s %s: %s\n" - header = fmt_name % "Name" + " Stmts Exec Cover\n" - fmt_coverage = fmt_name + "% 6d % 6d % 5d%%\n" + header = (fmt_name % "Name") + " Stmts Exec" + fmt_coverage = fmt_name + "%6d %6d" + if self.branches: + header += " Branch BrExec" + fmt_coverage += " %6d %6d" + header += " Cover" + fmt_coverage += " %5d%%" if self.show_missing: - header = header.replace("\n", " Missing\n") - fmt_coverage = fmt_coverage.replace("\n", " %s\n") - rule = "-" * (len(header)-1) + "\n" + header += " Missing" + fmt_coverage += " %s" + rule = "-" * len(header) + "\n" + header += "\n" + fmt_coverage += "\n" if not outfile: outfile = sys.stdout @@ -35,26 +44,20 @@ outfile.write(header) outfile.write(rule) - total_statements = 0 - total_executed = 0 - total_units = 0 - + total = Numbers() + for cu in self.code_units: try: - statements, _, missing, readable = self.coverage._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) + analysis = self.coverage._analyze(cu) + nums = analysis.numbers + args = (cu.name, nums.n_statements, nums.n_executed) + if self.branches: + args += (nums.n_branches, nums.n_executed_branches) + args += (nums.pc_covered,) if self.show_missing: - args = args + (readable,) + args += (analysis.missing_formatted(),) outfile.write(fmt_coverage % args) - total_units += 1 - total_statements = total_statements + n - total_executed = total_executed + m + total += nums except KeyboardInterrupt: #pragma: no cover raise except: @@ -62,13 +65,12 @@ typ, msg = sys.exc_info()[:2] outfile.write(fmt_err % (cu.name, typ.__name__, msg)) - if total_units > 1: + if total.n_files > 1: outfile.write(rule) - if total_statements > 0: - pc = 100.0 * total_executed / total_statements - else: - pc = 100.0 - args = ("TOTAL", total_statements, total_executed, pc) + args = ("TOTAL", total.n_statements, total.n_executed) + if self.branches: + args += (total.n_branches, total.n_executed_branches) + args += (total.pc_covered,) if self.show_missing: - args = args + ("",) + args += ("",) outfile.write(fmt_coverage % args) \ No newline at end of file