diff --git a/Lib/test/support/socket_helper.py b/Lib/test/support/socket_helper.py index 754af181ec922e..42b2a93398cbf7 100644 --- a/Lib/test/support/socket_helper.py +++ b/Lib/test/support/socket_helper.py @@ -11,6 +11,9 @@ HOSTv4 = "127.0.0.1" HOSTv6 = "::1" +# WASI SDK 15.0 does not provide gethostname, stub raises OSError ENOTSUP. +has_gethostname = not support.is_wasi + def find_unused_port(family=socket.AF_INET, socktype=socket.SOCK_STREAM): """Returns an unused port that should be suitable for binding. This is diff --git a/Lib/test/test_mailbox.py b/Lib/test/test_mailbox.py index 20c460e300cc9d..07c2764dfd1b2f 100644 --- a/Lib/test/test_mailbox.py +++ b/Lib/test/test_mailbox.py @@ -10,12 +10,17 @@ import tempfile from test import support from test.support import os_helper +from test.support import socket_helper import unittest import textwrap import mailbox import glob +if not socket_helper.has_gethostname: + raise unittest.SkipTest("test requires gethostname()") + + class TestBase: all_mailbox_types = (mailbox.Message, mailbox.MaildirMessage, diff --git a/Lib/test/test_mailcap.py b/Lib/test/test_mailcap.py index 97a8fac6e074ad..d3995b14720e66 100644 --- a/Lib/test/test_mailcap.py +++ b/Lib/test/test_mailcap.py @@ -221,6 +221,10 @@ def test_findmatch(self): @unittest.skipUnless(os.name == "posix", "Requires 'test' command on system") @unittest.skipIf(sys.platform == "vxworks", "'test' command is not supported on VxWorks") + @unittest.skipUnless( + test.support.has_subprocess_support, + "'test' command needs process support." + ) def test_test(self): # findmatch() will automatically check any "test" conditions and skip # the entry if the check fails. diff --git a/Lib/test/test_smtpd.py b/Lib/test/test_smtpd.py index 57eb98ebc1d1ef..39ff8793648ba6 100644 --- a/Lib/test/test_smtpd.py +++ b/Lib/test/test_smtpd.py @@ -10,6 +10,9 @@ smtpd = warnings_helper.import_deprecated('smtpd') asyncore = warnings_helper.import_deprecated('asyncore') +if not socket_helper.has_gethostname: + raise unittest.SkipTest("test requires gethostname()") + class DummyServer(smtpd.SMTPServer): def __init__(self, *args, **kwargs): diff --git a/Lib/test/test_support.py b/Lib/test/test_support.py index 7a8b6819c5a91b..23bcceedd71b2a 100644 --- a/Lib/test/test_support.py +++ b/Lib/test/test_support.py @@ -664,6 +664,7 @@ def id(self): self.assertTrue(support.match_test(test_chdir)) @unittest.skipIf(support.is_emscripten, "Unstable in Emscripten") + @unittest.skipIf(support.is_wasi, "Unavailable on WASI") def test_fd_count(self): # We cannot test the absolute value of fd_count(): on old Linux # kernel or glibc versions, os.urandom() keeps a FD open on diff --git a/Lib/test/test_time.py b/Lib/test/test_time.py index dc0bbb0ee29311..884b14231f5737 100644 --- a/Lib/test/test_time.py +++ b/Lib/test/test_time.py @@ -489,6 +489,9 @@ def test_monotonic(self): def test_perf_counter(self): time.perf_counter() + @unittest.skipIf( + support.is_wasi, "process_time not available on WASI" + ) def test_process_time(self): # process_time() should not include time spend during a sleep start = time.process_time() diff --git a/Lib/test/test_urllib.py b/Lib/test/test_urllib.py index bc6e74c291ac1c..f067560ca6caa1 100644 --- a/Lib/test/test_urllib.py +++ b/Lib/test/test_urllib.py @@ -10,6 +10,7 @@ from unittest.mock import patch from test import support from test.support import os_helper +from test.support import socket_helper from test.support import warnings_helper import os try: @@ -24,6 +25,10 @@ import collections +if not socket_helper.has_gethostname: + raise unittest.SkipTest("test requires gethostname()") + + def hexescape(char): """Escape char as RFC 2396 specifies""" hex_repr = hex(ord(char))[2:].upper() diff --git a/Lib/test/test_urllib_response.py b/Lib/test/test_urllib_response.py index 73d2ef0424f4af..b76763f4ed824f 100644 --- a/Lib/test/test_urllib_response.py +++ b/Lib/test/test_urllib_response.py @@ -4,6 +4,11 @@ import tempfile import urllib.response import unittest +from test import support + +if support.is_wasi: + raise unittest.SkipTest("Cannot create socket on WASI") + class TestResponse(unittest.TestCase): diff --git a/Tools/wasm/README.md b/Tools/wasm/README.md index 977b2bb2a8ab93..9e253bc878bd95 100644 --- a/Tools/wasm/README.md +++ b/Tools/wasm/README.md @@ -239,6 +239,7 @@ are: yet. A future version of WASI may provide a limited ``set_permissions`` API. - File locking (``fcntl``) is not available. - ``os.pipe()``, ``os.mkfifo()``, and ``os.mknod()`` are not supported. +- ``process_time`` clock does not work. # Detect WebAssembly builds