Skip to content

Commit

Permalink
Fix count of selected tests on terminal collection summary (#9628)
Browse files Browse the repository at this point in the history
  • Loading branch information
schettino72 committed Feb 15, 2022
1 parent f224517 commit c9cf2d4
Show file tree
Hide file tree
Showing 4 changed files with 33 additions and 3 deletions.
3 changes: 3 additions & 0 deletions changelog/9626.bugfix.rst
@@ -0,0 +1,3 @@
Fixed count of selected tests on terminal collection summary when there were errors or skipped modules.

If there were errors or skipped modules on collection, pytest would mistakenly subtract those from the selected count.
4 changes: 2 additions & 2 deletions src/_pytest/terminal.py
Expand Up @@ -663,7 +663,7 @@ def report_collect(self, final: bool = False) -> None:
errors = len(self.stats.get("error", []))
skipped = len(self.stats.get("skipped", []))
deselected = len(self.stats.get("deselected", []))
selected = self._numcollected - errors - skipped - deselected
selected = self._numcollected - deselected
line = "collected " if final else "collecting "
line += (
str(self._numcollected) + " item" + ("" if self._numcollected == 1 else "s")
Expand All @@ -674,7 +674,7 @@ def report_collect(self, final: bool = False) -> None:
line += " / %d deselected" % deselected
if skipped:
line += " / %d skipped" % skipped
if self._numcollected > selected > 0:
if self._numcollected > selected:
line += " / %d selected" % selected
if self.isatty:
self.rewrite(line, bold=True, erase=True)
Expand Down
2 changes: 1 addition & 1 deletion testing/test_cacheprovider.py
Expand Up @@ -773,7 +773,7 @@ def pytest_sessionfinish():
result = pytester.runpytest("--lf", "--lfnf", "none")
result.stdout.fnmatch_lines(
[
"collected 2 items / 2 deselected",
"collected 2 items / 2 deselected / 0 selected",
"run-last-failure: no previously failed tests, deselecting all items.",
"deselected=2",
"* 2 deselected in *",
Expand Down
27 changes: 27 additions & 0 deletions testing/test_terminal.py
Expand Up @@ -783,6 +783,33 @@ def test_pass():
result.stdout.no_fnmatch_line("*= 1 deselected =*")
assert result.ret == 0

def test_selected_count_with_error(self, pytester: Pytester) -> None:
pytester.makepyfile(
test_selected_count_3="""
def test_one():
pass
def test_two():
pass
def test_three():
pass
""",
test_selected_count_error="""
5/0
def test_foo():
pass
def test_bar():
pass
""",
)
result = pytester.runpytest("-k", "test_t")
result.stdout.fnmatch_lines(
[
"collected 3 items / 1 error / 1 deselected / 2 selected",
"* ERROR collecting test_selected_count_error.py *",
]
)
assert result.ret == ExitCode.INTERRUPTED

def test_no_skip_summary_if_failure(self, pytester: Pytester) -> None:
pytester.makepyfile(
"""
Expand Down

0 comments on commit c9cf2d4

Please sign in to comment.