diff --git a/pytest82.patch b/pytest82.patch new file mode 100644 index 0000000..9135649 --- /dev/null +++ b/pytest82.patch @@ -0,0 +1,46 @@ +From 91e617a5c0bb220779b1d9912f3e946a28be53d4 Mon Sep 17 00:00:00 2001 +From: Natanael Copa +Date: Mon, 13 May 2024 08:43:49 +0200 +Subject: [PATCH] Treat methodName="runTest" similar to unittest.TestCase + +pytest 8.2 relies on a feature of `unittest.TestCase` where the +initialization of it with the default `methodName="runTest"` is treated +specially, allowing it to insantiate even without `runTest` method +actually existing. + +See under "Changed in Python 3.2" in unittest.TestCase docs + +This fixes the error with pytest 8.2: + AttributeError: 'TestUtil' object has no attribute 'runTest'. Did you mean: 'subTest'? + +Fixes: https://github.com/testing-cabal/testtools/issues/372 +ref: https://docs.python.org/3/library/unittest.html#unittest.TestCase +ref: https://github.com/python/cpython/blob/51aefc5bf907ddffaaf083ded0de773adcdf08c8/Lib/unittest/case.py#L419-L426 +ref: https://github.com/pytest-dev/pytest/issues/12263#issuecomment-2081434468 +--- + testtools/testcase.py | 12 +++++++++++- + 1 file changed, 11 insertions(+), 1 deletion(-) + +diff --git a/testtools/testcase.py b/testtools/testcase.py +index 08b158b6..b8722df7 100644 +--- a/testtools/testcase.py ++++ b/testtools/testcase.py +@@ -735,7 +735,17 @@ def _run_teardown(self, result): + + def _get_test_method(self): + method_name = getattr(self, '_testMethodName') +- return getattr(self, method_name) ++ try: ++ m = getattr(self, method_name) ++ except AttributeError: ++ if method_name != "runTest": ++ # We allow instantiation with no explicit method name ++ # but not an *incorrect* or missing method name. ++ raise ValueError( ++ "no such test method in %s: %s" % (self.__class__, method_name) ++ ) ++ else: ++ return m + + def _run_test_method(self, result): + """Run the test method for this test. diff --git a/python-testtools.changes b/python-testtools.changes index 3285101..4800131 100644 --- a/python-testtools.changes +++ b/python-testtools.changes @@ -1,3 +1,8 @@ +------------------------------------------------------------------- +Fri May 17 14:07:33 UTC 2024 - Markéta Machová + +- Add pytest82.patch to fix functionality with the new pytest. + ------------------------------------------------------------------- Wed May 8 06:42:24 UTC 2024 - Steve Kowalik diff --git a/python-testtools.spec b/python-testtools.spec index eb36952..12f5f3e 100644 --- a/python-testtools.spec +++ b/python-testtools.spec @@ -32,6 +32,8 @@ Summary: Extensions to the Python Standard Library Unit Testing Framework License: MIT URL: https://github.com/testing-cabal/testtools Source0: https://files.pythonhosted.org/packages/source/t/testtools/testtools-%{version}.tar.gz +# PATCH-FIX-UPSTREAM https://github.com/testing-cabal/testtools/pull/373 Treat methodName="runTest" similar to unittest.TestCase +Patch: pytest82.patch BuildRequires: %{python_module hatch_vcs} BuildRequires: %{python_module pip} BuildRequires: %{python_module wheel} @@ -58,7 +60,7 @@ with unit tests in Python and come from many different sources. testtools also ports recent unittest changes all the way back to Python 2.4. %prep -%setup -q -n testtools-%{version} +%autosetup -p1 -n testtools-%{version} %if !%{with test} %build