diff --git a/changelog/5068.feature.rst b/changelog/5068.feature.rst new file mode 100644 index 00000000000..bceebffc164 --- /dev/null +++ b/changelog/5068.feature.rst @@ -0,0 +1 @@ +The ``-r`` option learnt about ``A`` to display all reports (including passed ones) in the short test summary. diff --git a/doc/en/usage.rst b/doc/en/usage.rst index d6850beda58..1c49f81d6d6 100644 --- a/doc/en/usage.rst +++ b/doc/en/usage.rst @@ -235,7 +235,8 @@ Example: FAILED test_example.py::test_fail = 1 failed, 1 passed, 1 skipped, 1 xfailed, 1 xpassed, 1 error in 0.12 seconds = -The ``-r`` options accepts a number of characters after it, with ``a`` used above meaning "all except passes". +The ``-r`` options accepts a number of characters after it, with ``a`` used +above meaning "all except passes". Here is the full list of available characters that can be used: @@ -247,6 +248,7 @@ Here is the full list of available characters that can be used: - ``p`` - passed - ``P`` - passed with output - ``a`` - all except ``pP`` + - ``A`` - all More than one character can be used, so for example to only see failed and skipped tests, you can execute: diff --git a/src/_pytest/terminal.py b/src/_pytest/terminal.py index ee3fd30174b..2d7132259d0 100644 --- a/src/_pytest/terminal.py +++ b/src/_pytest/terminal.py @@ -82,11 +82,11 @@ def pytest_addoption(parser): dest="reportchars", default="", metavar="chars", - help="show extra test summary info as specified by chars (f)ailed, " - "(E)error, (s)skipped, (x)failed, (X)passed, " - "(p)passed, (P)passed with output, (a)all except pP. " + help="show extra test summary info as specified by chars: (f)ailed, " + "(E)rror, (s)kipped, (x)failed, (X)passed, " + "(p)assed, (P)assed with output, (a)ll except passed (p/P), or (A)ll. " "Warnings are displayed at all times except when " - "--disable-warnings is set", + "--disable-warnings is set.", ) group._addoption( "--disable-warnings", @@ -167,10 +167,13 @@ def getreportopt(config): reportchars = reportchars.replace("w", "") if reportchars: for char in reportchars: - if char not in reportopts and char != "a": - reportopts += char - elif char == "a": + if char == "a": reportopts = "sxXwEf" + elif char == "A": + reportopts = "sxXwEfpP" + break + elif char not in reportopts: + reportopts += char return reportopts diff --git a/testing/test_terminal.py b/testing/test_terminal.py index 12878d2b3fc..feacc242d41 100644 --- a/testing/test_terminal.py +++ b/testing/test_terminal.py @@ -831,14 +831,23 @@ class Option(object): config.option.reportchars = "sfxw" assert getreportopt(config) == "sfx" - config.option.reportchars = "sfx" + # Now with --disable-warnings. config.option.disable_warnings = False + config.option.reportchars = "a" + assert getreportopt(config) == "sxXwEf" # NOTE: "w" included! + + config.option.reportchars = "sfx" assert getreportopt(config) == "sfxw" config.option.reportchars = "sfxw" - config.option.disable_warnings = False assert getreportopt(config) == "sfxw" + config.option.reportchars = "a" + assert getreportopt(config) == "sxXwEf" # NOTE: "w" included! + + config.option.reportchars = "A" + assert getreportopt(config) == "sxXwEfpP" + def test_terminalreporter_reportopt_addopts(testdir): testdir.makeini("[pytest]\naddopts=-rs")