diff options
Diffstat (limited to 'coverage')
-rw-r--r-- | coverage/cmdline.py | 6 | ||||
-rw-r--r-- | coverage/results.py | 24 |
2 files changed, 20 insertions, 10 deletions
diff --git a/coverage/cmdline.py b/coverage/cmdline.py index d1e8f283..697d2960 100644 --- a/coverage/cmdline.py +++ b/coverage/cmdline.py @@ -20,7 +20,7 @@ from coverage.data import line_counts from coverage.debug import info_formatter, info_header, short_stack from coverage.exceptions import BaseCoverageException, ExceptionDuringRun, NoSource from coverage.execfile import PyRunner -from coverage.results import should_fail_under +from coverage.results import Numbers, should_fail_under class Opts: @@ -655,8 +655,8 @@ class CoverageScript: fail_under = self.coverage.get_option("report:fail_under") precision = self.coverage.get_option("report:precision") if should_fail_under(total, fail_under, precision): - msg = "total of {total:.{p}f} is less than fail-under={fail_under:.{p}f}".format( - total=total, fail_under=fail_under, p=precision, + msg = "total of {total} is less than fail-under={fail_under:.{p}f}".format( + total=Numbers.display_covered(total), fail_under=fail_under, p=precision, ) print("Coverage failure:", msg) return FAIL_UNDER diff --git a/coverage/results.py b/coverage/results.py index c60ccac2..f7331b41 100644 --- a/coverage/results.py +++ b/coverage/results.py @@ -219,14 +219,24 @@ class Numbers(SimpleReprMixin): result in either "0" or "100". """ - pc = self.pc_covered - if 0 < pc < self._near0: - pc = self._near0 - elif self._near100 < pc < 100: - pc = self._near100 + return self.display_covered(self.pc_covered) + + @classmethod + def display_covered(cls, pc): + """Return a displayable total percentage, as a string. + + Note that "0" is only returned when the value is truly zero, and "100" + is only returned when the value is truly 100. Rounding can never + result in either "0" or "100". + + """ + if 0 < pc < cls._near0: + pc = cls._near0 + elif cls._near100 < pc < 100: + pc = cls._near100 else: - pc = round(pc, self._precision) - return "%.*f" % (self._precision, pc) + pc = round(pc, cls._precision) + return "%.*f" % (cls._precision, pc) @classmethod def pc_str_width(cls): |