DebugClients/Python3/coverage/summary.py

changeset 29
391dc0bc4ae5
parent 0
de9c2efb9d02
child 3495
fac17a82b431
--- 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

eric ide

mercurial