gh-90473: WASI: skip gethostname tests (GH-93092)

- WASI's ``gethostname()`` is a stub that always fails with OSError
  ``ENOTSUP``
- skip mailcap ``test`` if subprocess is not available
- WASI process_time clock does not work.
This commit is contained in:
Christian Heimes 2022-05-23 10:39:57 +02:00 committed by GitHub
parent 88f0d0c1e8
commit 760ec8940a
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
9 changed files with 30 additions and 0 deletions

View file

@ -11,6 +11,9 @@ HOST = "localhost"
HOSTv4 = "127.0.0.1" HOSTv4 = "127.0.0.1"
HOSTv6 = "::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): def find_unused_port(family=socket.AF_INET, socktype=socket.SOCK_STREAM):
"""Returns an unused port that should be suitable for binding. This is """Returns an unused port that should be suitable for binding. This is

View file

@ -10,12 +10,17 @@ import io
import tempfile import tempfile
from test import support from test import support
from test.support import os_helper from test.support import os_helper
from test.support import socket_helper
import unittest import unittest
import textwrap import textwrap
import mailbox import mailbox
import glob import glob
if not socket_helper.has_gethostname:
raise unittest.SkipTest("test requires gethostname()")
class TestBase: class TestBase:
all_mailbox_types = (mailbox.Message, mailbox.MaildirMessage, all_mailbox_types = (mailbox.Message, mailbox.MaildirMessage,

View file

@ -221,6 +221,10 @@ class FindmatchTest(unittest.TestCase):
@unittest.skipUnless(os.name == "posix", "Requires 'test' command on system") @unittest.skipUnless(os.name == "posix", "Requires 'test' command on system")
@unittest.skipIf(sys.platform == "vxworks", "'test' command is not supported on VxWorks") @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): def test_test(self):
# findmatch() will automatically check any "test" conditions and skip # findmatch() will automatically check any "test" conditions and skip
# the entry if the check fails. # the entry if the check fails.

View file

@ -10,6 +10,9 @@ import io
smtpd = warnings_helper.import_deprecated('smtpd') smtpd = warnings_helper.import_deprecated('smtpd')
asyncore = warnings_helper.import_deprecated('asyncore') asyncore = warnings_helper.import_deprecated('asyncore')
if not socket_helper.has_gethostname:
raise unittest.SkipTest("test requires gethostname()")
class DummyServer(smtpd.SMTPServer): class DummyServer(smtpd.SMTPServer):
def __init__(self, *args, **kwargs): def __init__(self, *args, **kwargs):

View file

@ -664,6 +664,7 @@ class TestSupport(unittest.TestCase):
self.assertTrue(support.match_test(test_chdir)) self.assertTrue(support.match_test(test_chdir))
@unittest.skipIf(support.is_emscripten, "Unstable in Emscripten") @unittest.skipIf(support.is_emscripten, "Unstable in Emscripten")
@unittest.skipIf(support.is_wasi, "Unavailable on WASI")
def test_fd_count(self): def test_fd_count(self):
# We cannot test the absolute value of fd_count(): on old Linux # We cannot test the absolute value of fd_count(): on old Linux
# kernel or glibc versions, os.urandom() keeps a FD open on # kernel or glibc versions, os.urandom() keeps a FD open on

View file

@ -489,6 +489,9 @@ class TimeTestCase(unittest.TestCase):
def test_perf_counter(self): def test_perf_counter(self):
time.perf_counter() time.perf_counter()
@unittest.skipIf(
support.is_wasi, "process_time not available on WASI"
)
def test_process_time(self): def test_process_time(self):
# process_time() should not include time spend during a sleep # process_time() should not include time spend during a sleep
start = time.process_time() start = time.process_time()

View file

@ -10,6 +10,7 @@ import unittest
from unittest.mock import patch from unittest.mock import patch
from test import support from test import support
from test.support import os_helper from test.support import os_helper
from test.support import socket_helper
from test.support import warnings_helper from test.support import warnings_helper
import os import os
try: try:
@ -24,6 +25,10 @@ from base64 import b64encode
import collections import collections
if not socket_helper.has_gethostname:
raise unittest.SkipTest("test requires gethostname()")
def hexescape(char): def hexescape(char):
"""Escape char as RFC 2396 specifies""" """Escape char as RFC 2396 specifies"""
hex_repr = hex(ord(char))[2:].upper() hex_repr = hex(ord(char))[2:].upper()

View file

@ -4,6 +4,11 @@ import socket
import tempfile import tempfile
import urllib.response import urllib.response
import unittest import unittest
from test import support
if support.is_wasi:
raise unittest.SkipTest("Cannot create socket on WASI")
class TestResponse(unittest.TestCase): class TestResponse(unittest.TestCase):

View file

@ -239,6 +239,7 @@ are:
yet. A future version of WASI may provide a limited ``set_permissions`` API. yet. A future version of WASI may provide a limited ``set_permissions`` API.
- File locking (``fcntl``) is not available. - File locking (``fcntl``) is not available.
- ``os.pipe()``, ``os.mkfifo()``, and ``os.mknod()`` are not supported. - ``os.pipe()``, ``os.mkfifo()``, and ``os.mknod()`` are not supported.
- ``process_time`` clock does not work.
# Detect WebAssembly builds # Detect WebAssembly builds