summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorgarar <none@none>2015-08-14 12:44:23 +0000
committergarar <none@none>2015-08-14 12:44:23 +0000
commitc62707914e5a90a0a843b7ed72fae0153ce97cd6 (patch)
tree8234ba40e98c95713c844e32a957ef2995d1e977
parente265df98cec9d3cf2cd1fd89975002fb27c5978a (diff)
downloadpython-coveragepy-git-c62707914e5a90a0a843b7ed72fae0153ce97cd6.tar.gz
Update skip_covered handling, add info when files are skipped. Tests.
-rw-r--r--coverage/summary.py11
-rw-r--r--tests/test_summary.py33
2 files changed, 39 insertions, 5 deletions
diff --git a/coverage/summary.py b/coverage/summary.py
index 2bf097bc..9b8b2338 100644
--- a/coverage/summary.py
+++ b/coverage/summary.py
@@ -29,6 +29,9 @@ class SummaryReporter(Reporter):
max_name = max([len(fr.relative_filename()) for fr in self.file_reporters] + [5])
fmt_name = "%%- %ds " % max_name
fmt_err = "%s %s: %s\n"
+ fmt_skip_covered = ("\n%s file%s skipped because of 'skip covered' "
+ "option.\n")
+
header = (fmt_name % "Name") + " Stmts Miss"
fmt_coverage = fmt_name + "%6d %6d"
if self.branches:
@@ -52,6 +55,7 @@ class SummaryReporter(Reporter):
outfile.write(rule)
total = Numbers()
+ skipped_count = 0
for fr in self.file_reporters:
try:
@@ -66,6 +70,7 @@ class SummaryReporter(Reporter):
else:
no_missing_branches = True
if no_missing_lines and no_missing_branches:
+ skipped_count += 1
continue
args = (fr.relative_filename(), nums.n_statements, nums.n_missing)
@@ -103,6 +108,10 @@ class SummaryReporter(Reporter):
if self.config.show_missing:
args += ("",)
outfile.write(fmt_coverage % args)
- if not total.n_files and not self.config.skip_covered:
+ if not total.n_files:
raise CoverageException("No data to report.")
+ if self.config.skip_covered and skipped_count:
+ outfile.write(
+ fmt_skip_covered % (skipped_count,
+ 's' if skipped_count > 1 else ''))
return total.n_statements and total.pc_covered
diff --git a/tests/test_summary.py b/tests/test_summary.py
index 850f4dfd..15e948ab 100644
--- a/tests/test_summary.py
+++ b/tests/test_summary.py
@@ -259,14 +259,16 @@ class SummaryTest(CoverageTest):
# Name Stmts Miss Cover
# ------------------------------------
# not_covered.py 2 1 50%
+ #
+ # 1 file skipped because of 'skip covered' option.
- self.assertEqual(self.line_count(report), 3, report)
+ self.assertEqual(self.line_count(report), 5, report)
squeezed = self.squeezed_lines(report)
self.assertEqual(squeezed[2], "not_covered.py 2 1 50%")
def test_report_skip_covered_branches(self):
self.make_file("main.py", """
- import not_covered
+ import not_covered, covered
def normal(z):
if z:
@@ -280,6 +282,11 @@ class SummaryTest(CoverageTest):
print("n")
not_covered(True)
""")
+ self.make_file("covered.py", """
+ def foo():
+ pass
+ foo()
+ """)
out = self.run_command("coverage run --branch main.py")
self.assertEqual(out, "n\nz\n")
report = self.report_from_command("coverage report --skip-covered")
@@ -287,8 +294,10 @@ class SummaryTest(CoverageTest):
# Name Stmts Miss Branch BrPart Cover
# --------------------------------------------------
# not_covered.py 4 0 2 1 83%
+ #
+ # 2 files skipped because of 'skip covered' option.
- self.assertEqual(self.line_count(report), 3, report)
+ self.assertEqual(self.line_count(report), 5, report)
squeezed = self.squeezed_lines(report)
self.assertEqual(squeezed[2], "not_covered.py 4 0 2 1 83%")
@@ -323,12 +332,28 @@ class SummaryTest(CoverageTest):
# not_covered.py 4 0 2 1 83%
# --------------------------------------------------
# TOTAL 6 1 2 1 75%
+ #
+ # 1 file skipped because of 'skip covered' option.
- self.assertEqual(self.line_count(report), 6, report)
+ self.assertEqual(self.line_count(report), 8, report)
squeezed = self.squeezed_lines(report)
self.assertEqual(squeezed[2], "also_not_run.py 2 1 0 0 50%")
self.assertEqual(squeezed[3], "not_covered.py 4 0 2 1 83%")
self.assertEqual(squeezed[5], "TOTAL 6 1 2 1 75%")
+ self.assertEqual(squeezed[7],
+ "1 file skipped because of 'skip covered' option.")
+
+ def test_report_skip_covered_no_data(self):
+ self.make_file("main.py", "")
+ out = self.run_command("coverage run --branch main.py")
+ self.assertEqual(out, "")
+ report = self.report_from_command("coverage report --skip-covered")
+ # Name Stmts Miss Branch BrPart Cover
+ # -------------------------------------------
+ # No data to report.
+ self.assertEqual(self.line_count(report), 3, report)
+ squeezed = self.squeezed_lines(report)
+ self.assertEqual(squeezed[2], "No data to report.")
def test_dotpy_not_python(self):
# We run a .py file, and when reporting, we can't parse it as Python.