Issue 28668: Merge 3.5

This commit is contained in:
Xavier de Gaye 2016-11-15 17:03:12 +01:00
commit d178e69ad8
2 changed files with 19 additions and 1 deletions

View file

@ -90,7 +90,7 @@ __all__ = [
"bigmemtest", "bigaddrspacetest", "cpython_only", "get_attribute",
"requires_IEEE_754", "skip_unless_xattr", "requires_zlib",
"anticipate_failure", "load_package_tests", "detect_api_mismatch",
"check__all__", "requires_android_level",
"check__all__", "requires_android_level", "requires_multiprocessing_queue",
# sys
"is_jython", "is_android", "check_impl_detail", "unix_shell",
# network
@ -1752,6 +1752,22 @@ def impl_detail(msg=None, **guards):
msg = msg.format(' or '.join(guardnames))
return unittest.skip(msg)
_have_mp_queue = None
def requires_multiprocessing_queue(test):
"""Skip decorator for tests that use multiprocessing.Queue."""
global _have_mp_queue
if _have_mp_queue is None:
import multiprocessing
# Without a functioning shared semaphore implementation attempts to
# instantiate a Queue will result in an ImportError (issue #3770).
try:
multiprocessing.Queue()
_have_mp_queue = True
except ImportError:
_have_mp_queue = False
msg = "requires a functioning shared semaphore implementation"
return test if _have_mp_queue else unittest.skip(msg)(test)
def _parse_guards(guards):
# Returns a tuple ({platform_name: run_me}, default_value)
if not guards: