diff options
-rw-r--r-- | CHANGES.rst | 5 | ||||
-rw-r--r-- | coverage/results.py | 9 | ||||
-rw-r--r-- | tests/test_results.py | 3 |
3 files changed, 11 insertions, 6 deletions
diff --git a/CHANGES.rst b/CHANGES.rst index 2a32ad5a..b00d0f2b 100644 --- a/CHANGES.rst +++ b/CHANGES.rst @@ -16,7 +16,10 @@ Change history for Coverage.py Unreleased ---------- -Nothing yet. +- ``fail_under`` values more than 100 are reported as errors. Thanks to Mike + Fiedler for closing `issue 746`_. + +.. _issue 746: https://github.com/nedbat/coveragepy/issues/746 .. _changes_50a4: diff --git a/coverage/results.py b/coverage/results.py index 9be16b15..ecd50ae9 100644 --- a/coverage/results.py +++ b/coverage/results.py @@ -7,7 +7,7 @@ import collections from coverage.backward import iitems from coverage.debug import SimpleReprMixin -from coverage.misc import contract, format_lines +from coverage.misc import contract, format_lines, CoverageException class Analysis(object): @@ -283,9 +283,10 @@ def should_fail_under(total, fail_under, precision): Returns True if the total should fail. """ - # We can never achieve higher than 100% coverage - if fail_under > 100.0: - raise ValueError("`fail_under` is greater than 100. Please use 100 or lower.") + # We can never achieve higher than 100% coverage, or less than zero. + if not (0 <= fail_under <= 100.0): + msg = "fail_under={} is invalid. Must be between 0 and 100.".format(fail_under) + raise CoverageException(msg) # Special case for fail_under=100, it must really be 100. if fail_under == 100.0 and total != 100.0: diff --git a/tests/test_results.py b/tests/test_results.py index f83b73dd..ec6301db 100644 --- a/tests/test_results.py +++ b/tests/test_results.py @@ -5,6 +5,7 @@ import pytest +from coverage.misc import CoverageException from coverage.results import Numbers, should_fail_under from tests.coveragetest import CoverageTest @@ -108,5 +109,5 @@ def test_should_fail_under(total, fail_under, precision, result): def test_should_fail_under_invalid_value(): - with pytest.raises(ValueError): + with pytest.raises(CoverageException, match=r"fail_under=101"): should_fail_under(100.0, 101, 0) |