Skip to content

Commit

Permalink
refactor: a plural helper
Browse files Browse the repository at this point in the history
  • Loading branch information
nedbat committed Nov 13, 2021
1 parent 5ca980d commit ec48227
Show file tree
Hide file tree
Showing 3 changed files with 19 additions and 14 deletions.
6 changes: 3 additions & 3 deletions coverage/cmdline.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@
from coverage.debug import info_formatter, info_header, short_stack
from coverage.exceptions import BaseCoverageException, ExceptionDuringRun, NoSource
from coverage.execfile import PyRunner
from coverage.misc import human_sorted
from coverage.misc import human_sorted, plural
from coverage.results import Numbers, should_fail_under


Expand Down Expand Up @@ -819,9 +819,9 @@ def do_debug_data_file(self, filename):
summary = line_counts(data, fullpath=True)
filenames = human_sorted(summary.keys())
nfiles = len(filenames)
print(f"{nfiles} file{'' if nfiles == 1 else 's'}:")
print(f"{nfiles} file{plural(nfiles)}:")
for f in filenames:
line = f"{f}: {summary[f]} line{'' if summary[f] == 1 else 's'}"
line = f"{f}: {summary[f]} line{plural(summary[f])}"
plugin = data.file_tracer(f)
if plugin:
line += f" [{plugin}]"
Expand Down
16 changes: 5 additions & 11 deletions coverage/html.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@
from coverage.exceptions import CoverageException
from coverage.files import flat_rootname
from coverage.misc import ensure_dir, file_be_gone, Hasher, isolate_module, format_local_datetime
from coverage.misc import human_sorted
from coverage.misc import human_sorted, plural
from coverage.report import get_analysis_to_report
from coverage.results import Numbers
from coverage.templite import Templite
Expand Down Expand Up @@ -331,17 +331,11 @@ def index_file(self):

skipped_covered_msg = skipped_empty_msg = ""
if self.skipped_covered_count:
msg = "{} {} skipped due to complete coverage."
skipped_covered_msg = msg.format(
self.skipped_covered_count,
"file" if self.skipped_covered_count == 1 else "files",
)
n = self.skipped_covered_count
skipped_covered_msg = f"{n} file{plural(n)} skipped due to complete coverage."
if self.skipped_empty_count:
msg = "{} empty {} skipped."
skipped_empty_msg = msg.format(
self.skipped_empty_count,
"file" if self.skipped_empty_count == 1 else "files",
)
n = self.skipped_empty_count
skipped_empty_msg = f"{n} empty file{plural(n)} skipped."

html = index_tmpl.render({
'files': self.file_summaries,
Expand Down
11 changes: 11 additions & 0 deletions coverage/misc.py
Original file line number Diff line number Diff line change
Expand Up @@ -415,3 +415,14 @@ def human_sorted_items(items, reverse=False):
Returns the sorted list of items.
"""
return sorted(items, key=lambda pair: (human_key(pair[0]), pair[1]), reverse=reverse)


def plural(n, thing="", things=""):
"""Pluralize a word.
If n is 1, return thing. Otherwise return things, or thing+s.
"""
if n == 1:
return thing
else:
return things or (thing + "s")

0 comments on commit ec48227

Please sign in to comment.