From de584eda15df6db7912ab6197cfb9ff23024ef23 Mon Sep 17 00:00:00 2001
From: Scott Talbert <swt@techie.net>
Date: Tue, 6 Dec 2022 09:20:18 -0500
Subject: [PATCH] Fix test_xfail_behavior with pytest 7.2.0+
In https://github.com/pytest-dev/pytest/commit/69fb79e741f00714d3ac14ee853c5506f154e94f,
pytest output was changed to include the reason string on the same line as
the short test summary, so the test needs to be updated correspondingly.
---
testing/test_xfail_behavior.py | 7 +++++--
1 file changed, 5 insertions(+), 2 deletions(-)
diff --git a/testing/test_xfail_behavior.py b/testing/test_xfail_behavior.py
index ef00385..15edd93 100644
--- a/testing/test_xfail_behavior.py
+++ b/testing/test_xfail_behavior.py
@@ -6,6 +6,7 @@
IS_PYTEST4_PLUS = int(pytest.__version__[0]) >= 4 # noqa: WPS609
FAILED_WORD = "FAILED" if IS_PYTEST4_PLUS else "FAIL"
+PYTEST_GTE_7_2 = hasattr(pytest, "version_tuple") and pytest.version_tuple >= (7, 2) # type: ignore[attr-defined]
pytestmark = pytest.mark.skipif( # pylint: disable=invalid-name
not hasattr(os, "fork"), # noqa: WPS421
@@ -68,10 +69,12 @@ def test_xfail(is_crashing, is_strict, testdir):
)
)
reason_string = (
- " reason: The process gets terminated; "
+ "reason: The process gets terminated; "
"pytest-forked reason: "
"*:*: running the test CRASHED with signal {sig_num:d}".format(**locals())
)
+ if expected_lowercase == "xfailed" and PYTEST_GTE_7_2:
+ short_test_summary += " - " + reason_string
total_summary_line = "*==== 1 {expected_lowercase!s} in 0.*s* ====*".format(
**locals()
)
@@ -95,7 +98,7 @@ def test_xfail(is_crashing, is_strict, testdir):
)
if expected_lowercase == "xpassed" and expected_word == FAILED_WORD:
# XPASS(strict)
- expected_lines += (reason_string,)
+ expected_lines += (" " + reason_string,)
expected_lines += (total_summary_line,)
test_module = testdir.makepyfile(