summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--AUTHORS.txt1
-rw-r--r--CHANGES.txt4
-rw-r--r--coverage/cmdline.py2
-rw-r--r--coverage/summary.py14
-rw-r--r--tests/test_cmdline.py2
-rw-r--r--tests/test_summary.py50
6 files changed, 58 insertions, 15 deletions
diff --git a/AUTHORS.txt b/AUTHORS.txt
index f2862633..05794483 100644
--- a/AUTHORS.txt
+++ b/AUTHORS.txt
@@ -26,6 +26,7 @@ Christian Heimes
Roger Hu
Stan Hu
Devin Jeanpierre
+Krystian Kichewko
Ross Lawley
Steve Leonard
Edward Loper
diff --git a/CHANGES.txt b/CHANGES.txt
index 9df12fe2..3974a46e 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -11,6 +11,10 @@ Latest
- The original command line switches (`-x` to run a program, etc) are no
longer supported.
+- A new option: `coverage report --skip-covered` will reduce the number of
+ files reported by skipping files with 100% coverage. Thanks, Krystian
+ Kichewko.
+
- The ``COVERAGE_OPTIONS`` environment variable is no longer supported. It was
a hack for ``--timid`` before configuration files were available.
diff --git a/coverage/cmdline.py b/coverage/cmdline.py
index f776950a..3e3f7e44 100644
--- a/coverage/cmdline.py
+++ b/coverage/cmdline.py
@@ -63,7 +63,7 @@ class Opts(object):
"executed."
)
skip_covered = optparse.make_option(
- '-s', '--skip-covered', action='store_true',
+ '--skip-covered', action='store_true',
help="Skip files with 100% coverage."
)
omit = optparse.make_option(
diff --git a/coverage/summary.py b/coverage/summary.py
index c9877658..33aa017f 100644
--- a/coverage/summary.py
+++ b/coverage/summary.py
@@ -54,9 +54,17 @@ class SummaryReporter(Reporter):
try:
analysis = self.coverage._analyze(cu)
nums = analysis.numbers
- if self.config.skip_covered and nums.n_missing == 0 and \
- (not self.branches or nums.n_partial_branches == 0):
- continue
+
+ if self.config.skip_covered:
+ # Don't report on 100% files.
+ no_missing_lines = (nums.n_missing == 0)
+ if self.branches:
+ no_missing_branches = (nums.n_partial_branches == 0)
+ else:
+ no_missing_branches = True
+ if no_missing_lines and no_missing_branches:
+ continue
+
args = (cu.name, nums.n_statements, nums.n_missing)
if self.branches:
args += (nums.n_branches, nums.n_partial_branches)
diff --git a/tests/test_cmdline.py b/tests/test_cmdline.py
index b7ab81e6..e0d10867 100644
--- a/tests/test_cmdline.py
+++ b/tests/test_cmdline.py
@@ -347,7 +347,7 @@ class CmdLineTest(BaseCmdLineTest):
.load()
.report(morfs=["mod1", "mod2", "mod3"])
""")
- self.cmd_executes("report -s", """\
+ self.cmd_executes("report --skip-covered", """\
.coverage()
.load()
.report(skip_covered=True)
diff --git a/tests/test_summary.py b/tests/test_summary.py
index cf255e51..21817a52 100644
--- a/tests/test_summary.py
+++ b/tests/test_summary.py
@@ -239,17 +239,13 @@ class SummaryTest(CoverageTest):
self.assertEqual(out, "z\n")
report = self.report_from_command("coverage report --skip-covered")
- # pylint: disable=C0301
# Name Stmts Miss Cover
# ---------------------------------
# not_covered 2 1 50%
self.assertEqual(self.line_count(report), 3, report)
squeezed = self.squeezed_lines(report)
- self.assertEqual(
- squeezed[2],
- "not_covered 2 1 50%"
- )
+ self.assertEqual(squeezed[2], "not_covered 2 1 50%")
def test_report_skip_covered_branches(self):
self.make_file("main.py", """
@@ -271,17 +267,51 @@ class SummaryTest(CoverageTest):
self.assertEqual(out, "n\nz\n")
report = self.report_from_command("coverage report --skip-covered")
- # pylint: disable=C0301
# Name Stmts Miss Branch BrPart Cover
# -----------------------------------------------
# not_covered 4 0 2 1 83%
self.assertEqual(self.line_count(report), 3, report)
squeezed = self.squeezed_lines(report)
- self.assertEqual(
- squeezed[2],
- "not_covered 4 0 2 1 83%"
- )
+ self.assertEqual(squeezed[2], "not_covered 4 0 2 1 83%")
+
+ def test_report_skip_covered_branches_with_totals(self):
+ self.make_file("main.py", """
+ import not_covered
+ import also_not_run
+
+ def normal(z):
+ if z:
+ print("z")
+ normal(True)
+ normal(False)
+ """)
+ self.make_file("not_covered.py", """
+ def not_covered(n):
+ if n:
+ print("n")
+ not_covered(True)
+ """)
+ self.make_file("also_not_run.py", """
+ def does_not_appear_in_this_film(ni):
+ print("Ni!")
+ """)
+ out = self.run_command("coverage run --branch main.py")
+ self.assertEqual(out, "n\nz\n")
+ report = self.report_from_command("coverage report --skip-covered")
+
+ # Name Stmts Miss Branch BrPart Cover
+ # -----------------------------------------------
+ # also_not_run 2 1 0 0 50%
+ # not_covered 4 0 2 1 83%
+ # -----------------------------------------------
+ # TOTAL 6 1 2 1 75%
+
+ self.assertEqual(self.line_count(report), 6, report)
+ squeezed = self.squeezed_lines(report)
+ self.assertEqual(squeezed[2], "also_not_run 2 1 0 0 50%")
+ self.assertEqual(squeezed[3], "not_covered 4 0 2 1 83%")
+ self.assertEqual(squeezed[5], "TOTAL 6 1 2 1 75%")
def test_dotpy_not_python(self):
# We run a .py file, and when reporting, we can't parse it as Python.