bpo-38377: Fix skip_if_broken_multiprocessing_synchronize() on macOS (GH-20984)
skip_if_broken_multiprocessing_synchronize() only attempts for create
a semaphore on Linux to fix multiprocessing
test_resource_tracker_reused() on macOS.
(cherry picked from commit 3358da4054
)
Co-authored-by: Victor Stinner <vstinner@python.org>
This commit is contained in:
parent
83e54debac
commit
1529322ca6
|
@ -3174,7 +3174,7 @@ def skip_if_broken_multiprocessing_synchronize():
|
|||
"""
|
||||
Skip tests if the multiprocessing.synchronize module is missing, if there
|
||||
is no available semaphore implementation, or if creating a lock raises an
|
||||
OSError.
|
||||
OSError (on Linux only).
|
||||
"""
|
||||
|
||||
# Skip tests if the _multiprocessing extension is missing.
|
||||
|
@ -3184,10 +3184,11 @@ def skip_if_broken_multiprocessing_synchronize():
|
|||
# multiprocessing.synchronize requires _multiprocessing.SemLock.
|
||||
synchronize = import_module('multiprocessing.synchronize')
|
||||
|
||||
try:
|
||||
# bpo-38377: On Linux, creating a semaphore is the current user
|
||||
# does not have the permission to create a file in /dev/shm.
|
||||
# Create a semaphore to check permissions.
|
||||
synchronize.Lock(ctx=None)
|
||||
except OSError as exc:
|
||||
raise unittest.SkipTest(f"broken multiprocessing SemLock: {exc!r}")
|
||||
if sys.platform == "linux":
|
||||
try:
|
||||
# bpo-38377: On Linux, creating a semaphore fails with OSError
|
||||
# if the current user does not have the permission to create
|
||||
# a file in /dev/shm/ directory.
|
||||
synchronize.Lock(ctx=None)
|
||||
except OSError as exc:
|
||||
raise unittest.SkipTest(f"broken multiprocessing SemLock: {exc!r}")
|
||||
|
|
Loading…
Reference in New Issue