summaryrefslogtreecommitdiffstats
path: root/Lib/test
diff options
context:
space:
mode:
authorVictor Stinner <vstinner@python.org>2023-09-12 01:31:15 (GMT)
committerGitHub <noreply@github.com>2023-09-12 01:31:15 (GMT)
commit09ea4b8706165fd9474165090a0ba86509abd6c8 (patch)
treecaea03849181960e389a324884093990bd0b825e /Lib/test
parent391f3e3ca904449a50b2dd5956684357fdce690b (diff)
downloadcpython-09ea4b8706165fd9474165090a0ba86509abd6c8.zip
cpython-09ea4b8706165fd9474165090a0ba86509abd6c8.tar.gz
cpython-09ea4b8706165fd9474165090a0ba86509abd6c8.tar.bz2
gh-109295: Clean up multiprocessing in test_asyncio and test_compileall (#109298)
test_asyncio and test_compileall now clean up multiprocessing by calling multiprocessing _cleanup_tests(): explicitly clean up resources and stop background processes like the resource tracker.
Diffstat (limited to 'Lib/test')
-rw-r--r--Lib/test/test_asyncio/test_events.py3
-rw-r--r--Lib/test/test_compileall.py10
2 files changed, 10 insertions, 3 deletions
diff --git a/Lib/test/test_asyncio/test_events.py b/Lib/test/test_asyncio/test_events.py
index 30cc8fd..1647d23 100644
--- a/Lib/test/test_asyncio/test_events.py
+++ b/Lib/test/test_asyncio/test_events.py
@@ -31,6 +31,7 @@ import asyncio
from asyncio import coroutines
from asyncio import events
from asyncio import selector_events
+from multiprocessing.util import _cleanup_tests as multiprocessing_cleanup_tests
from test.test_asyncio import utils as test_utils
from test import support
from test.support import socket_helper
@@ -2765,6 +2766,8 @@ class GetEventLoopTestsMixin:
# multiprocessing.synchronize module cannot be imported.
support.skip_if_broken_multiprocessing_synchronize()
+ self.addCleanup(multiprocessing_cleanup_tests)
+
async def main():
if multiprocessing.get_start_method() == 'fork':
# Avoid 'fork' DeprecationWarning.
diff --git a/Lib/test/test_compileall.py b/Lib/test/test_compileall.py
index df7c512..9cd92ad 100644
--- a/Lib/test/test_compileall.py
+++ b/Lib/test/test_compileall.py
@@ -18,6 +18,7 @@ from unittest import mock, skipUnless
try:
# compileall relies on ProcessPoolExecutor if ProcessPoolExecutor exists
# and it can function.
+ from multiprocessing.util import _cleanup_tests as multiprocessing_cleanup_tests
from concurrent.futures import ProcessPoolExecutor
from concurrent.futures.process import _check_system_limits
_check_system_limits()
@@ -54,6 +55,8 @@ class CompileallTestsBase:
def setUp(self):
self.directory = tempfile.mkdtemp()
+ self.addCleanup(shutil.rmtree, self.directory)
+
self.source_path = os.path.join(self.directory, '_test.py')
self.bc_path = importlib.util.cache_from_source(self.source_path)
with open(self.source_path, 'w', encoding="utf-8") as file:
@@ -66,9 +69,6 @@ class CompileallTestsBase:
self.source_path3 = os.path.join(self.subdirectory, '_test3.py')
shutil.copyfile(self.source_path, self.source_path3)
- def tearDown(self):
- shutil.rmtree(self.directory)
-
def add_bad_source_file(self):
self.bad_source_path = os.path.join(self.directory, '_test_bad.py')
with open(self.bad_source_path, 'w', encoding="utf-8") as file:
@@ -307,9 +307,13 @@ class CompileallTestsBase:
script_helper.make_script(path, "__init__", "")
mods.append(script_helper.make_script(path, "mod",
"def fn(): 1/0\nfn()\n"))
+
+ if parallel:
+ self.addCleanup(multiprocessing_cleanup_tests)
compileall.compile_dir(
self.directory, quiet=True, ddir=ddir,
workers=2 if parallel else 1)
+
self.assertTrue(mods)
for mod in mods:
self.assertTrue(mod.startswith(self.directory), mod)