Make 'S' and 'F' aliases to 's' and 'f' respectively (#6337)
Make 'S' and 'F' aliases to 's' and 'f' respectively
This commit is contained in:
commit
ecd1e43afb
|
@ -0,0 +1,3 @@
|
|||
Fix summary entries appearing twice when ``f/F`` and ``s/S`` report chars were used at the same time in the ``-r`` command-line option (for example ``-rFf``).
|
||||
|
||||
The upper case variants were never documented and the preferred form should be the lower case.
|
|
@ -172,7 +172,11 @@ def getreportopt(config: Config) -> str:
|
|||
reportchars += "w"
|
||||
elif config.option.disable_warnings and "w" in reportchars:
|
||||
reportchars = reportchars.replace("w", "")
|
||||
aliases = {"F", "S"}
|
||||
for char in reportchars:
|
||||
# handle old aliases
|
||||
if char in aliases:
|
||||
char = char.lower()
|
||||
if char == "a":
|
||||
reportopts = "sxXwEf"
|
||||
elif char == "A":
|
||||
|
@ -185,19 +189,16 @@ def getreportopt(config: Config) -> str:
|
|||
|
||||
@pytest.hookimpl(trylast=True) # after _pytest.runner
|
||||
def pytest_report_teststatus(report: TestReport) -> Tuple[str, str, str]:
|
||||
letter = "F"
|
||||
if report.passed:
|
||||
letter = "."
|
||||
elif report.skipped:
|
||||
letter = "s"
|
||||
elif report.failed:
|
||||
letter = "F"
|
||||
if report.when != "call":
|
||||
letter = "f"
|
||||
|
||||
# Report failed CollectReports as "error" (in line with pytest_collectreport).
|
||||
outcome = report.outcome
|
||||
if report.when == "collect" and outcome == "failed":
|
||||
if report.when in ("collect", "setup", "teardown") and outcome == "failed":
|
||||
outcome = "error"
|
||||
letter = "E"
|
||||
|
||||
return outcome, letter, outcome.upper()
|
||||
|
||||
|
@ -988,9 +989,7 @@ class TerminalReporter:
|
|||
"x": show_xfailed,
|
||||
"X": show_xpassed,
|
||||
"f": partial(show_simple, "failed"),
|
||||
"F": partial(show_simple, "failed"),
|
||||
"s": show_skipped,
|
||||
"S": show_skipped,
|
||||
"p": partial(show_simple, "passed"),
|
||||
"E": partial(show_simple, "error"),
|
||||
} # type: Mapping[str, Callable[[List[str]], None]]
|
||||
|
|
|
@ -754,6 +754,35 @@ class TestTerminalFunctional:
|
|||
result = testdir.runpytest(*params)
|
||||
result.stdout.fnmatch_lines(["collected 3 items", "hello from hook: 3 items"])
|
||||
|
||||
def test_summary_f_alias(self, testdir):
|
||||
"""Test that 'f' and 'F' report chars are aliases and don't show up twice in the summary (#6334)"""
|
||||
testdir.makepyfile(
|
||||
"""
|
||||
def test():
|
||||
assert False
|
||||
"""
|
||||
)
|
||||
result = testdir.runpytest("-rfF")
|
||||
expected = "FAILED test_summary_f_alias.py::test - assert False"
|
||||
result.stdout.fnmatch_lines([expected])
|
||||
assert result.stdout.lines.count(expected) == 1
|
||||
|
||||
def test_summary_s_alias(self, testdir):
|
||||
"""Test that 's' and 'S' report chars are aliases and don't show up twice in the summary"""
|
||||
testdir.makepyfile(
|
||||
"""
|
||||
import pytest
|
||||
|
||||
@pytest.mark.skip
|
||||
def test():
|
||||
pass
|
||||
"""
|
||||
)
|
||||
result = testdir.runpytest("-rsS")
|
||||
expected = "SKIPPED [1] test_summary_s_alias.py:3: unconditional skip"
|
||||
result.stdout.fnmatch_lines([expected])
|
||||
assert result.stdout.lines.count(expected) == 1
|
||||
|
||||
|
||||
def test_fail_extra_reporting(testdir, monkeypatch):
|
||||
monkeypatch.setenv("COLUMNS", "80")
|
||||
|
@ -1685,12 +1714,16 @@ class TestProgressWithTeardown:
|
|||
testdir.makepyfile(
|
||||
"""
|
||||
def test_foo(fail_teardown):
|
||||
assert False
|
||||
assert 0
|
||||
"""
|
||||
)
|
||||
output = testdir.runpytest()
|
||||
output = testdir.runpytest("-rfE")
|
||||
output.stdout.re_match_lines(
|
||||
[r"test_teardown_with_test_also_failing.py FE\s+\[100%\]"]
|
||||
[
|
||||
r"test_teardown_with_test_also_failing.py FE\s+\[100%\]",
|
||||
"FAILED test_teardown_with_test_also_failing.py::test_foo - assert 0",
|
||||
"ERROR test_teardown_with_test_also_failing.py::test_foo - assert False",
|
||||
]
|
||||
)
|
||||
|
||||
def test_teardown_many(self, testdir, many_files):
|
||||
|
|
Loading…
Reference in New Issue