summaryrefslogtreecommitdiff
path: root/coverage/results.py
diff options
context:
space:
mode:
authorNed Batchelder <ned@nedbatchelder.com>2018-01-21 12:32:03 -0500
committerNed Batchelder <ned@nedbatchelder.com>2018-01-21 12:32:03 -0500
commiteaf55bf6d75675220a12b59b348362f2ecaadb9f (patch)
tree12886e75d8d5879908eff4ebd7a1830e8e631504 /coverage/results.py
parent60807c8e06b6811f4829b7a871cc6bddbbc004c9 (diff)
downloadpython-coveragepy-eaf55bf6d75675220a12b59b348362f2ecaadb9f.tar.gz
fail_under can now be a float. #631.
Diffstat (limited to 'coverage/results.py')
-rw-r--r--coverage/results.py24
1 files changed, 9 insertions, 15 deletions
diff --git a/coverage/results.py b/coverage/results.py
index 81ce2a6..5f84a68 100644
--- a/coverage/results.py
+++ b/coverage/results.py
@@ -6,7 +6,7 @@
import collections
from coverage.backward import iitems
-from coverage.misc import format_lines, SimpleRepr
+from coverage.misc import contract, format_lines, SimpleRepr
class Analysis(object):
@@ -271,25 +271,19 @@ class Numbers(SimpleRepr):
return NotImplemented
-def should_fail_under(total, fail_under):
+@contract(total='number', fail_under='number', precision=int, returns=bool)
+def should_fail_under(total, fail_under, precision):
"""Determine if a total should fail due to fail-under.
`total` is a float, the coverage measurement total. `fail_under` is the
- fail_under setting to compare with.
+ fail_under setting to compare with. `precision` is the number of digits
+ to consider after the decimal point.
Returns True if the total should fail.
"""
- # The fail_under option defaults to 0.
- if fail_under:
- # Total needs to be rounded, but don't want to report 100
- # unless it is really 100.
- if 99 < total < 100:
- total = 99
- else:
- total = round(total)
-
- if total < fail_under:
- return True
+ # Special case for fail_under=100, it must really be 100.
+ if fail_under == 100.0 and total != 100.0:
+ return True
- return False
+ return round(total, precision) < fail_under