summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--coverage/results.py4
-rw-r--r--coverage/summary.py10
-rw-r--r--tests/test_summary.py37
3 files changed, 42 insertions, 9 deletions
diff --git a/coverage/results.py b/coverage/results.py
index 676ba716..94785ca0 100644
--- a/coverage/results.py
+++ b/coverage/results.py
@@ -90,8 +90,10 @@ class Analysis(object):
"""
arcs = self.missing_branch_arcs()
+ line_exits = sorted(arcs.iteritems(), key=lambda (x, _): x)
pairs = []
- for line, exits in arcs.iteritems():
+ for line, exits in line_exits:
+ exits = sorted(exits)
for exit in exits:
pair = '%d->%d' % (line, exit)
pairs.append(pair)
diff --git a/coverage/summary.py b/coverage/summary.py
index 3588d31b..1e55a7d4 100644
--- a/coverage/summary.py
+++ b/coverage/summary.py
@@ -38,7 +38,7 @@ class SummaryReporter(Reporter):
header += " Missing"
fmt_coverage += " %s"
if self.branches:
- fmt_coverage += ", Branches: %s"
+ fmt_coverage += "%sBranches: %s"
rule = "-" * len(header) + "\n"
header += "\n"
fmt_coverage += "\n"
@@ -61,9 +61,13 @@ class SummaryReporter(Reporter):
args += (nums.n_branches, nums.n_missing_branches)
args += (nums.pc_covered_str,)
if self.config.show_missing:
- args += (analysis.missing_formatted(),)
+ missing_fmtd = analysis.missing_formatted()
+ args += (missing_fmtd,)
if self.branches:
- args += (analysis.arcs_missing_formatted(),)
+ separator = ""
+ if missing_fmtd:
+ separator = ", "
+ args += (separator, analysis.arcs_missing_formatted(),)
outfile.write(fmt_coverage % args)
total += nums
except KeyboardInterrupt: # pragma: not covered
diff --git a/tests/test_summary.py b/tests/test_summary.py
index 61bdf37a..7fd11a0e 100644
--- a/tests/test_summary.py
+++ b/tests/test_summary.py
@@ -160,7 +160,7 @@ class SummaryTest(CoverageTest):
# Name Stmts Miss Cover Missing
# -----------------------------------------
- # tests/tmp 9 3 67% 3-4, 8
+ # mymissing 9 3 67% 3-4, 8
self.assertEqual(self.line_count(report), 3)
self.assertIn("mymissing ", report)
@@ -175,21 +175,48 @@ class SummaryTest(CoverageTest):
if y:
print("y")
return x
- branch(1, 0)
+ branch(1, 1)
""")
out = self.run_command("coverage run --branch mybranch.py")
- self.assertEqual(out, 'x\n')
+ self.assertEqual(out, 'x\ny\n')
+ report = self.report_from_command("coverage report --show-missing")
+
+ # Name Stmts Miss Branch BrMiss Cover Missing
+ # -------------------------------------------------------
+ # tests/tmp 7 0 4 2 82% Branches: 2->4, 4->6
+
+ self.assertEqual(self.line_count(report), 3)
+ self.assertIn("mybranch ", report)
+ self.assertEqual(self.last_line_squeezed(report),
+ "mybranch 7 0 4 2 82% Branches: 2->4, 4->6")
+
+ def test_report_show_missing_branches_and_lines(self):
+ self.make_file("mybranch.py", """\
+ def branch(x, y, z):
+ if x:
+ print("x")
+ if y:
+ print("y")
+ if z:
+ if x and y:
+ print("z")
+ return x
+ branch(1, 1, 0)
+ """)
+ out = self.run_command("coverage run --branch mybranch.py")
+ self.assertEqual(out, 'x\ny\n')
report = self.report_from_command("coverage report --show-missing")
# pylint: disable=C0301
# Name Stmts Miss Branch BrMiss Cover Missing
# -------------------------------------------------------
- # mybranch 7 1 4 2 73% 5, Branches: 2->4, 4->5
+ # tests/tmp 10 2 8 5 61% 7-8, Branches: 2->4, 4->6, 6->7, 7->8, 7->9
self.assertEqual(self.line_count(report), 3)
self.assertIn("mybranch ", report)
self.assertEqual(self.last_line_squeezed(report),
- "mybranch 7 1 4 2 73% 5, Branches: 2->4, 4->5")
+ "mybranch 10 2 8 5 61% "
+ "7-8, Branches: 2->4, 4->6, 6->7, 7->8, 7->9")
def test_dotpy_not_python(self):
# We run a .py file, and when reporting, we can't parse it as Python.