[3.12] gh-102251: Disable non-rerunnable test in test_import (GH-106013) (#109540)

gh-102251: Disable non-rerunnable test in test_import (GH-106013)
(cherry picked from commit 4849a80dd1)

Co-authored-by: Erlend E. Aasland <erlend.aasland@protonmail.com>
This commit is contained in:
Miss Islington (bot) 2023-09-18 07:31:01 -07:00 committed by GitHub
parent fbf703ce6e
commit f6fc831aa9
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -106,6 +106,25 @@ def remove_files(name):
rmtree('__pycache__') rmtree('__pycache__')
def no_rerun(reason):
"""Skip rerunning for a particular test.
WARNING: Use this decorator with care; skipping rerunning makes it
impossible to find reference leaks. Provide a clear reason for skipping the
test using the 'reason' parameter.
"""
def deco(func):
_has_run = False
def wrapper(self):
nonlocal _has_run
if _has_run:
self.skipTest(reason)
func(self)
_has_run = True
return wrapper
return deco
@contextlib.contextmanager @contextlib.contextmanager
def _ready_to_import(name=None, source=""): def _ready_to_import(name=None, source=""):
# sets up a temporary directory and removes it # sets up a temporary directory and removes it
@ -2018,10 +2037,6 @@ class SinglephaseInitTests(unittest.TestCase):
@classmethod @classmethod
def setUpClass(cls): def setUpClass(cls):
if '-R' in sys.argv or '--huntrleaks' in sys.argv:
# https://github.com/python/cpython/issues/102251
raise unittest.SkipTest('unresolved refleaks (see gh-102251)')
spec = importlib.util.find_spec(cls.NAME) spec = importlib.util.find_spec(cls.NAME)
from importlib.machinery import ExtensionFileLoader from importlib.machinery import ExtensionFileLoader
cls.FILE = spec.origin cls.FILE = spec.origin
@ -2535,6 +2550,7 @@ class SinglephaseInitTests(unittest.TestCase):
# * m_copy was copied from interp2 (was from interp1) # * m_copy was copied from interp2 (was from interp1)
# * module's global state was updated, not reset # * module's global state was updated, not reset
@no_rerun(reason="rerun not possible; module state is never cleared (see gh-102251)")
@requires_subinterpreters @requires_subinterpreters
def test_basic_multiple_interpreters_deleted_no_reset(self): def test_basic_multiple_interpreters_deleted_no_reset(self):
# without resetting; already loaded in a deleted interpreter # without resetting; already loaded in a deleted interpreter