]> git.ipfire.org Git - thirdparty/Python/cpython.git/commit
bpo-40692: Run more test_concurrent_futures tests (GH-20239)
authorAsheesh Laroia <github@asheesh.org>
Mon, 8 Feb 2021 03:15:51 +0000 (19:15 -0800)
committerGitHub <noreply@github.com>
Mon, 8 Feb 2021 03:15:51 +0000 (03:15 +0000)
commitbf2e7e55d7306b1e2fce7dce767e8df5ff42cf1c
treef6372786f3d6ca7add303f58671c44de0f7b34f7
parent30a8b2839646c849371c7f8411132571cd8bf17c
bpo-40692: Run more test_concurrent_futures tests (GH-20239)

In the case of multiprocessing.synchronize() being missing, the
test_concurrent_futures test suite now skips only the tests that
require multiprocessing.synchronize().

Validate that multiprocessing.synchronize exists as part of
_check_system_limits(), allowing ProcessPoolExecutor to raise
NotImplementedError during __init__, rather than crashing with
ImportError during __init__ when creating a lock imported from
multiprocessing.synchronize.

Use _check_system_limits() to disable tests of
ProcessPoolExecutor on systems without multiprocessing.synchronize.

Running the test suite without multiprocessing.synchronize reveals
that Lib/compileall.py crashes when it uses a ProcessPoolExecutor.
Therefore, change Lib/compileall.py to call _check_system_limits()
before creating the ProcessPoolExecutor.

Note that both Lib/compileall.py and Lib/test/test_compileall.py
were attempting to sanity-check ProcessPoolExecutor by expecting
ImportError. In multiprocessing.resource_tracker, sem_unlink() is also absent
on platforms where POSIX semaphores aren't available. Avoid using
sem_unlink() if it, too, does not exist.

Co-authored-by: Pablo Galindo <Pablogsal@gmail.com>
Lib/compileall.py
Lib/concurrent/futures/process.py
Lib/multiprocessing/resource_tracker.py
Lib/test/test_compileall.py
Lib/test/test_concurrent_futures.py
Misc/NEWS.d/next/Core and Builtins/2020-05-19-22-10-05.bpo-40692.ajEhrR.rst [new file with mode: 0644]