diff options
author | Christian Heimes <christian@python.org> | 2022-03-22 10:04:36 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-03-22 10:04:36 (GMT) |
commit | deeaac49e267285158264643799624623f4a7b29 (patch) | |
tree | 27f409d7d43cf169451aa892a2363f1cac85f7df /Lib/test/support/__init__.py | |
parent | a25a985535ccbb7df8caddc0017550ff4eae5855 (diff) | |
download | cpython-deeaac49e267285158264643799624623f4a7b29.zip cpython-deeaac49e267285158264643799624623f4a7b29.tar.gz cpython-deeaac49e267285158264643799624623f4a7b29.tar.bz2 |
bpo-40280: Skip socket, fork, subprocess tests on Emscripten (GH-31986)
- Add requires_fork and requires_subprocess to more tests
- Skip extension import tests if dlopen is not available
- Don't assume that _testcapi is a shared extension
- Skip a lot of socket tests that don't work on Emscripten
- Skip mmap tests, mmap emulation is incomplete
- venv does not work yet
- Cannot get libc from executable
The "entire" test suite is now passing on Emscripten with EMSDK from git head (91 suites are skipped).
Diffstat (limited to 'Lib/test/support/__init__.py')
-rw-r--r-- | Lib/test/support/__init__.py | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/Lib/test/support/__init__.py b/Lib/test/support/__init__.py index fc1b86b..c5666d6 100644 --- a/Lib/test/support/__init__.py +++ b/Lib/test/support/__init__.py @@ -42,6 +42,7 @@ __all__ = [ "requires_IEEE_754", "requires_zlib", "has_fork_support", "requires_fork", "has_subprocess_support", "requires_subprocess", + "has_socket_support", "requires_working_socket", "anticipate_failure", "load_package_tests", "detect_api_mismatch", "check__all__", "skip_if_buggy_ucrt_strfptime", "check_disallow_instantiation", "check_sanitizer", "skip_if_sanitizer", @@ -520,6 +521,21 @@ def requires_subprocess(): """Used for subprocess, os.spawn calls, fd inheritance""" return unittest.skipUnless(has_subprocess_support, "requires subprocess support") +# Emscripten's socket emulation has limitation. WASI doesn't have sockets yet. +has_socket_support = not is_emscripten and not is_wasi + +def requires_working_socket(*, module=False): + """Skip tests or modules that require working sockets + + Can be used as a function/class decorator or to skip an entire module. + """ + msg = "requires socket support" + if module: + if not has_socket_support: + raise unittest.SkipTest(msg) + else: + return unittest.skipUnless(has_socket_support, msg) + # Does strftime() support glibc extension like '%4Y'? has_strftime_extensions = False if sys.platform != "win32": |