With -vv, display the full skip/xfail reason instead of "..." (#9537)

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
This commit is contained in:
Akuli 2022-01-25 15:33:22 +02:00 committed by GitHub
parent 382e3d346e
commit a17e708352
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 60 additions and 19 deletions

View File

@ -0,0 +1 @@
When ``-vv`` is given on command line, show skipping and xfail reasons in full instead of truncating them to fit the terminal width.

View File

@ -542,15 +542,21 @@ class TerminalReporter:
if not running_xdist: if not running_xdist:
self.write_ensure_prefix(line, word, **markup) self.write_ensure_prefix(line, word, **markup)
if rep.skipped or hasattr(report, "wasxfail"): if rep.skipped or hasattr(report, "wasxfail"):
reason = _get_raw_skip_reason(rep)
if self.config.option.verbose < 2:
available_width = ( available_width = (
(self._tw.fullwidth - self._tw.width_of_current_line) (self._tw.fullwidth - self._tw.width_of_current_line)
- len(" [100%]") - len(" [100%]")
- 1 - 1
) )
reason = _get_raw_skip_reason(rep) formatted_reason = _format_trimmed(
reason_ = _format_trimmed(" ({})", reason, available_width) " ({})", reason, available_width
if reason and reason_ is not None: )
self._tw.write(reason_) else:
formatted_reason = f" ({reason})"
if reason and formatted_reason is not None:
self._tw.write(formatted_reason)
if self._show_progress_info: if self._show_progress_info:
self._write_progress_information_filling_space() self._write_progress_information_filling_space()
else: else:

View File

@ -385,11 +385,22 @@ class TestTerminal:
def test_10(): def test_10():
pytest.xfail("It's 🕙 o'clock") pytest.xfail("It's 🕙 o'clock")
@pytest.mark.skip(
reason="cannot do foobar because baz is missing due to I don't know what"
)
def test_long_skip():
pass
@pytest.mark.xfail(
reason="cannot do foobar because baz is missing due to I don't know what"
)
def test_long_xfail():
print(1 / 0)
""" """
) )
result = pytester.runpytest("-v")
result.stdout.fnmatch_lines( common_output = [
[
"test_verbose_skip_reason.py::test_1 SKIPPED (123) *", "test_verbose_skip_reason.py::test_1 SKIPPED (123) *",
"test_verbose_skip_reason.py::test_2 XPASS (456) *", "test_verbose_skip_reason.py::test_2 XPASS (456) *",
"test_verbose_skip_reason.py::test_3 XFAIL (789) *", "test_verbose_skip_reason.py::test_3 XFAIL (789) *",
@ -401,6 +412,29 @@ class TestTerminal:
"test_verbose_skip_reason.py::test_9 XFAIL *", "test_verbose_skip_reason.py::test_9 XFAIL *",
"test_verbose_skip_reason.py::test_10 XFAIL (It's 🕙 o'clock) *", "test_verbose_skip_reason.py::test_10 XFAIL (It's 🕙 o'clock) *",
] ]
result = pytester.runpytest("-v")
result.stdout.fnmatch_lines(
common_output
+ [
"test_verbose_skip_reason.py::test_long_skip SKIPPED (cannot *...) *",
"test_verbose_skip_reason.py::test_long_xfail XFAIL (cannot *...) *",
]
)
result = pytester.runpytest("-vv")
result.stdout.fnmatch_lines(
common_output
+ [
(
"test_verbose_skip_reason.py::test_long_skip SKIPPED"
" (cannot do foobar because baz is missing due to I don't know what) *"
),
(
"test_verbose_skip_reason.py::test_long_xfail XFAIL"
" (cannot do foobar because baz is missing due to I don't know what) *"
),
]
) )