Merge pull request #5990 from MarcoGorelli/plurality-matching
Plurality matching
This commit is contained in:
@@ -248,7 +248,10 @@ def pytest_collection(session):
|
||||
|
||||
def pytest_runtestloop(session):
|
||||
if session.testsfailed and not session.config.option.continue_on_collection_errors:
|
||||
raise session.Interrupted("%d errors during collection" % session.testsfailed)
|
||||
raise session.Interrupted(
|
||||
"%d error%s during collection"
|
||||
% (session.testsfailed, "s" if session.testsfailed != 1 else "")
|
||||
)
|
||||
|
||||
if session.config.option.collectonly:
|
||||
return True
|
||||
|
||||
@@ -539,7 +539,7 @@ class TerminalReporter:
|
||||
str(self._numcollected) + " item" + ("" if self._numcollected == 1 else "s")
|
||||
)
|
||||
if errors:
|
||||
line += " / %d errors" % errors
|
||||
line += " / %d error%s" % (errors, "s" if errors != 1 else "")
|
||||
if deselected:
|
||||
line += " / %d deselected" % deselected
|
||||
if skipped:
|
||||
@@ -1056,6 +1056,19 @@ _color_for_type = {
|
||||
_color_for_type_default = "yellow"
|
||||
|
||||
|
||||
def _make_plural(count, noun):
|
||||
# No need to pluralize words such as `failed` or `passed`.
|
||||
if noun not in ["error", "warnings"]:
|
||||
return count, noun
|
||||
|
||||
# The `warnings` key is plural. To avoid API breakage, we keep it that way but
|
||||
# set it to singular here so we can determine plurality in the same way as we do
|
||||
# for `error`.
|
||||
noun = noun.replace("warnings", "warning")
|
||||
|
||||
return count, noun + "s" if count != 1 else noun
|
||||
|
||||
|
||||
def build_summary_stats_line(stats):
|
||||
known_types = (
|
||||
"failed passed skipped deselected xfailed xpassed warnings error".split()
|
||||
@@ -1086,7 +1099,7 @@ def build_summary_stats_line(stats):
|
||||
)
|
||||
color = _color_for_type.get(key, _color_for_type_default)
|
||||
markup = {color: True, "bold": color == main_color}
|
||||
parts.append(("%d %s" % (count, key), markup))
|
||||
parts.append(("%d %s" % _make_plural(count, key), markup))
|
||||
|
||||
if not parts:
|
||||
parts = [("no tests ran", {_color_for_type_default: True})]
|
||||
|
||||
Reference in New Issue
Block a user