diff options
author | Eric Snow <ericsnowcurrently@gmail.com> | 2024-04-16 02:16:37 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-04-16 02:16:37 (GMT) |
commit | 3831144f9c8ce0fd582a0830a9e48a8da85e166a (patch) | |
tree | 88202292ee1f70e2ab2d62dccb73a6bfc4d1843c /Lib | |
parent | 757891ee8ad61a864444c1fdb764d81bc8a11189 (diff) | |
download | cpython-3831144f9c8ce0fd582a0830a9e48a8da85e166a.zip cpython-3831144f9c8ce0fd582a0830a9e48a8da85e166a.tar.gz cpython-3831144f9c8ce0fd582a0830a9e48a8da85e166a.tar.bz2 |
gh-76785: Fix Windows Refleak in test_interpreters (gh-117913)
gh-117662 introduced some refleaks, or, rather, exposed some existing refleaks. The leaks are coming when test.support.os_helper is imported in a "legacy" interpreter. I've updated test.test_interpreters.utils to avoid importing os_helper, which fixes the leaks. I'll address the root cause separately.
Diffstat (limited to 'Lib')
-rw-r--r-- | Lib/test/test_interpreters/test_api.py | 3 | ||||
-rw-r--r-- | Lib/test/test_interpreters/utils.py | 10 |
2 files changed, 7 insertions, 6 deletions
diff --git a/Lib/test/test_interpreters/test_api.py b/Lib/test/test_interpreters/test_api.py index 9a7c7f2..2bd8bee 100644 --- a/Lib/test/test_interpreters/test_api.py +++ b/Lib/test/test_interpreters/test_api.py @@ -174,9 +174,6 @@ class GetCurrentTests(TestBase): @requires_test_modules def test_created_with_capi(self): - last = 0 - for id, *_ in _interpreters.list_all(): - last = max(last, id) expected = _testinternalcapi.next_interpreter_id() text = self.run_temp_from_capi(f""" import {interpreters.__name__} as interpreters diff --git a/Lib/test/test_interpreters/utils.py b/Lib/test/test_interpreters/utils.py index 08768c0..8e47581 100644 --- a/Lib/test/test_interpreters/utils.py +++ b/Lib/test/test_interpreters/utils.py @@ -17,10 +17,13 @@ import unittest import warnings from test import support -from test.support import os_helper -from test.support import import_helper -_interpreters = import_helper.import_module('_xxsubinterpreters') +# We would use test.support.import_helper.import_module(), +# but the indirect import of test.support.os_helper causes refleaks. +try: + import _xxsubinterpreters as _interpreters +except ImportError as exc: + raise unittest.SkipTest(str(exc)) from test.support import interpreters @@ -399,6 +402,7 @@ class TestBase(unittest.TestCase): def temp_dir(self): tempdir = tempfile.mkdtemp() tempdir = os.path.realpath(tempdir) + from test.support import os_helper self.addCleanup(lambda: os_helper.rmtree(tempdir)) return tempdir |