gh-71052: Enable test_concurrent_futures on platforms that lack multiprocessing (gh-115917)

Enable test_concurrent_futures on platforms that support threading but not multiprocessing.
This commit is contained in:
Malcolm Smith 2024-02-25 19:38:18 +00:00 committed by GitHub
parent c40b5b97fd
commit 4827968af8
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
6 changed files with 16 additions and 21 deletions

View file

@ -20,8 +20,6 @@
from queue import Empty, Full
import _multiprocessing
from . import connection
from . import context
_ForkingPickler = context.reduction.ForkingPickler

View file

@ -5,11 +5,6 @@
import sys
import types
try:
import _multiprocessing
except ModuleNotFoundError:
_multiprocessing = None
if support.check_sanitizer(address=True, memory=True):
SKIP_MODULES = frozenset((
@ -36,17 +31,6 @@ class FailedImport(RuntimeError):
class AllTest(unittest.TestCase):
def setUp(self):
# concurrent.futures uses a __getattr__ hook. Its __all__ triggers
# import of a submodule, which fails when _multiprocessing is not
# available.
if _multiprocessing is None:
sys.modules["_multiprocessing"] = types.ModuleType("_multiprocessing")
def tearDown(self):
if _multiprocessing is None:
sys.modules.pop("_multiprocessing")
def check_all(self, modname):
names = {}
with warnings_helper.check_warnings(

View file

@ -3,8 +3,6 @@
from test import support
from test.support import import_helper
# Skip tests if _multiprocessing wasn't built.
import_helper.import_module('_multiprocessing')
if support.check_sanitizer(address=True, memory=True):
# gh-90791: Skip the test because it is too slow when Python is built

View file

@ -5,6 +5,8 @@
import unittest
import sys
from concurrent.futures._base import BrokenExecutor
from concurrent.futures.process import _check_system_limits
from logging.handlers import QueueHandler
from test import support
@ -117,6 +119,11 @@ class FailingInitializerResourcesTest(unittest.TestCase):
"""
def _test(self, test_class):
try:
_check_system_limits()
except NotImplementedError:
self.skipTest("ProcessPoolExecutor unavailable on this system")
runner = unittest.TextTestRunner()
runner.run(test_class('test_initializer'))

View file

@ -136,6 +136,12 @@ def strip_mixin(name):
def setup_module():
unittest.addModuleCleanup(multiprocessing.util._cleanup_tests)
try:
_check_system_limits()
except NotImplementedError:
pass
else:
unittest.addModuleCleanup(multiprocessing.util._cleanup_tests)
thread_info = threading_helper.threading_setup()
unittest.addModuleCleanup(threading_helper.threading_cleanup, *thread_info)

View file

@ -0,0 +1,2 @@
Enable ``test_concurrent_futures`` on platforms that support threading but not
multiprocessing.