* #12592: Fixed :class:`KeyError` crash when using --import- mode=importlib in a directory layout where a directory contains a child directory with the same name. * #12818: Assertion rewriting now preserves the source ranges of the original instructions, making it play well with tools that deal with the AST, like executing. * #12849: ANSI escape codes for colored output now handled correctly in :func:`pytest.fail` with pytrace=False. * #9353: :func:`pytest.approx` now uses strict equality when given booleans. * #10558: Fix ambiguous docstring of :func:`pytest.Config.getoption`. * #10829: Improve documentation on the current handling of the --basetemp option and its lack of retention functionality (:ref:`temporary directory location and retention`). * #12866: Improved cross-references concerning the :fixture:`recwarn` fixture. * #12966: Clarify :ref:`filterwarnings` docs on filter precedence/order when using multiple :ref:`@pytest.mark.filterwarnings <pytest.mark.filterwarnings ref>` marks. * #12497: Fixed two failing pdb-related tests on Python 3.13. OBS-URL: https://build.opensuse.org/package/show/devel:languages:python:pytest/python-pytest?expand=0&rev=146
104 lines
3.7 KiB
Diff
104 lines
3.7 KiB
Diff
From 31791676501f8a8f9eb0d316a6d841a4c0d6738d Mon Sep 17 00:00:00 2001
|
|
From: Ran Benita <ran@unusedvar.com>
|
|
Date: Sat, 8 Jun 2024 02:11:20 +0300
|
|
Subject: [PATCH 1/2] [8.2.x] unittest: fix assertion errors on unittest reruns
|
|
|
|
---
|
|
changelog/12424.bugfix.rst | 1 +
|
|
src/_pytest/unittest.py | 2 +-
|
|
.../pytest_rerunfailures_integration.py | 11 +++++++++++
|
|
tox.ini | 2 +-
|
|
4 files changed, 14 insertions(+), 2 deletions(-)
|
|
create mode 100644 changelog/12424.bugfix.rst
|
|
create mode 100644 testing/plugins_integration/pytest_rerunfailures_integration.py
|
|
|
|
diff --git a/changelog/12424.bugfix.rst b/changelog/12424.bugfix.rst
|
|
new file mode 100644
|
|
index 00000000000..7ad1126858b
|
|
--- /dev/null
|
|
+++ b/changelog/12424.bugfix.rst
|
|
@@ -0,0 +1 @@
|
|
+Fix crash with `assert testcase is not None` assertion failure when re-running unittest tests using plugins like pytest-rerunfailures. Regressed in 8.2.2.
|
|
diff --git a/src/_pytest/unittest.py b/src/_pytest/unittest.py
|
|
index baca58bd9b2..2f3fd5b014c 100644
|
|
--- a/src/_pytest/unittest.py
|
|
+++ b/src/_pytest/unittest.py
|
|
@@ -216,7 +216,7 @@ def teardown(self) -> None:
|
|
self._explicit_tearDown()
|
|
self._explicit_tearDown = None
|
|
self._obj = None
|
|
- self._instance = None
|
|
+ del self._instance
|
|
super().teardown()
|
|
|
|
def startTest(self, testcase: "unittest.TestCase") -> None:
|
|
diff --git a/testing/plugins_integration/pytest_rerunfailures_integration.py b/testing/plugins_integration/pytest_rerunfailures_integration.py
|
|
new file mode 100644
|
|
index 00000000000..9a13a3279a9
|
|
--- /dev/null
|
|
+++ b/testing/plugins_integration/pytest_rerunfailures_integration.py
|
|
@@ -0,0 +1,11 @@
|
|
+import unittest
|
|
+
|
|
+
|
|
+class MyTestCase(unittest.TestCase):
|
|
+ first_time = True
|
|
+
|
|
+ def test_fail_the_first_time(self) -> None:
|
|
+ """Regression test for issue #12424."""
|
|
+ if self.first_time:
|
|
+ type(self).first_time = False
|
|
+ self.fail()
|
|
diff --git a/tox.ini b/tox.ini
|
|
index 30d3e68defc..e42c2265525 100644
|
|
--- a/tox.ini
|
|
+++ b/tox.ini
|
|
@@ -143,7 +143,7 @@ commands =
|
|
pytest --cov=. simple_integration.py
|
|
pytest --ds=django_settings simple_integration.py
|
|
pytest --html=simple.html simple_integration.py
|
|
- pytest --reruns 5 simple_integration.py
|
|
+ pytest --reruns 5 simple_integration.py pytest_rerunfailures_integration.py
|
|
pytest pytest_anyio_integration.py
|
|
pytest pytest_asyncio_integration.py
|
|
pytest pytest_mock_integration.py
|
|
|
|
From 63136f2c483388bf268bafbd06eb7246ed5e9097 Mon Sep 17 00:00:00 2001
|
|
From: Bruno Oliveira <bruno@soliv.dev>
|
|
Date: Fri, 7 Jun 2024 22:17:58 -0300
|
|
Subject: [PATCH 2/2] Update testing/plugins_integration/requirements.txt from
|
|
main
|
|
|
|
This is required to make the 'plugins' tox env to pass on the 8.2.x branch.
|
|
---
|
|
testing/plugins_integration/requirements.txt | 12 +++++-------
|
|
1 file changed, 5 insertions(+), 7 deletions(-)
|
|
|
|
diff --git a/testing/plugins_integration/requirements.txt b/testing/plugins_integration/requirements.txt
|
|
index 9e152f1191b..f44a02915f2 100644
|
|
--- a/testing/plugins_integration/requirements.txt
|
|
+++ b/testing/plugins_integration/requirements.txt
|
|
@@ -1,9 +1,7 @@
|
|
-anyio[curio,trio]==4.3.0
|
|
-django==5.0.4
|
|
-pytest-asyncio==0.23.6
|
|
-# Temporarily not installed until pytest-bdd is fixed:
|
|
-# https://github.com/pytest-dev/pytest/pull/11785
|
|
-# pytest-bdd==7.0.1
|
|
+anyio[curio,trio]==4.4.0
|
|
+django==5.0.6
|
|
+pytest-asyncio==0.23.7
|
|
+pytest-bdd==7.1.2
|
|
pytest-cov==5.0.0
|
|
pytest-django==4.8.0
|
|
pytest-flakes==4.0.5
|
|
@@ -11,7 +9,7 @@ pytest-html==4.1.1
|
|
pytest-mock==3.14.0
|
|
pytest-rerunfailures==14.0
|
|
pytest-sugar==1.0.0
|
|
-pytest-trio==0.7.0
|
|
+pytest-trio==0.8.0
|
|
pytest-twisted==1.14.1
|
|
twisted==24.3.0
|
|
pytest-xvfb==3.0.0
|