summaryrefslogtreecommitdiffstats
path: root/Lib
diff options
context:
space:
mode:
authorChristian Heimes <christian@python.org>2022-05-25 13:57:26 (GMT)
committerGitHub <noreply@github.com>2022-05-25 13:57:26 (GMT)
commit1f134e96ba994bea3aaea533d4a558df3c5cc3c0 (patch)
treec3784124138da2484288227c68ca8be3e4c273bd /Lib
parent5e6e5b98a8b943a8e05feb9c0c982150565f4c10 (diff)
downloadcpython-1f134e96ba994bea3aaea533d4a558df3c5cc3c0.zip
cpython-1f134e96ba994bea3aaea533d4a558df3c5cc3c0.tar.gz
cpython-1f134e96ba994bea3aaea533d4a558df3c5cc3c0.tar.bz2
gh-90473: Misc test fixes for WASI (GH-93218)
* ``sys.executable`` is not set * WASI does not support subprocess * ``pwd`` module is not available * WASI checks ``open`` syscall flags more strict, needs r, w, rw flag. * ``umask`` is not available * ``/dev/null`` may not be accessible
Diffstat (limited to 'Lib')
-rw-r--r--Lib/distutils/tests/test_build.py1
-rw-r--r--Lib/lib2to3/tests/test_parser.py2
-rw-r--r--Lib/test/test_netrc.py6
-rw-r--r--Lib/test/test_os.py2
-rw-r--r--Lib/test/test_pathlib.py9
-rw-r--r--Lib/test/test_tarfile.py5
-rw-r--r--Lib/test/test_unicode_file.py2
7 files changed, 21 insertions, 6 deletions
diff --git a/Lib/distutils/tests/test_build.py b/Lib/distutils/tests/test_build.py
index 83a9e4f..71b5e16 100644
--- a/Lib/distutils/tests/test_build.py
+++ b/Lib/distutils/tests/test_build.py
@@ -12,6 +12,7 @@ class BuildTestCase(support.TempdirManager,
support.LoggingSilencer,
unittest.TestCase):
+ @unittest.skipUnless(sys.executable, "test requires sys.executable")
def test_finalize_options(self):
pkg_dir, dist = self.create_dist()
cmd = build(dist)
diff --git a/Lib/lib2to3/tests/test_parser.py b/Lib/lib2to3/tests/test_parser.py
index e2dddbe..8e7773b 100644
--- a/Lib/lib2to3/tests/test_parser.py
+++ b/Lib/lib2to3/tests/test_parser.py
@@ -63,7 +63,7 @@ class TestPgen2Caching(support.TestCase):
@unittest.skipIf(sys.executable is None, 'sys.executable required')
@unittest.skipIf(
- sys.platform == 'emscripten', 'requires working subprocess'
+ sys.platform in {'emscripten', 'wasi'}, 'requires working subprocess'
)
def test_load_grammar_from_subprocess(self):
tmpdir = tempfile.mkdtemp()
diff --git a/Lib/test/test_netrc.py b/Lib/test/test_netrc.py
index 3cca1e8..05a23e5 100644
--- a/Lib/test/test_netrc.py
+++ b/Lib/test/test_netrc.py
@@ -1,6 +1,11 @@
import netrc, os, unittest, sys, textwrap
from test.support import os_helper, run_unittest
+try:
+ import pwd
+except ImportError:
+ pwd = None
+
temp_filename = os_helper.TESTFN
class NetrcTestCase(unittest.TestCase):
@@ -266,6 +271,7 @@ class NetrcTestCase(unittest.TestCase):
@unittest.skipUnless(os.name == 'posix', 'POSIX only test')
+ @unittest.skipIf(pwd is None, 'security check requires pwd module')
def test_security(self):
# This test is incomplete since we are normally not run as root and
# therefore can't test the file ownership being wrong.
diff --git a/Lib/test/test_os.py b/Lib/test/test_os.py
index ae07182..009bb5a 100644
--- a/Lib/test/test_os.py
+++ b/Lib/test/test_os.py
@@ -1765,6 +1765,7 @@ class RemoveDirsTests(unittest.TestCase):
self.assertTrue(os.path.exists(os_helper.TESTFN))
+@unittest.skipIf(support.is_wasi, "WASI has no /dev/null")
class DevNullTests(unittest.TestCase):
def test_devnull(self):
with open(os.devnull, 'wb', 0) as f:
@@ -2111,6 +2112,7 @@ class Win32ErrorTests(unittest.TestCase):
self.assertRaises(OSError, os.chmod, os_helper.TESTFN, 0)
+@unittest.skipIf(support.is_wasi, "Cannot create invalid FD on WASI.")
class TestInvalidFD(unittest.TestCase):
singles = ["fchdir", "dup", "fdatasync", "fstat",
"fstatvfs", "fsync", "tcgetpgrp", "ttyname"]
diff --git a/Lib/test/test_pathlib.py b/Lib/test/test_pathlib.py
index 964cc85..642dfeb 100644
--- a/Lib/test/test_pathlib.py
+++ b/Lib/test/test_pathlib.py
@@ -13,7 +13,7 @@ import unittest
from unittest import mock
from test.support import import_helper
-from test.support import is_emscripten
+from test.support import is_emscripten, is_wasi
from test.support import os_helper
from test.support.os_helper import TESTFN, FakePath
@@ -1530,6 +1530,7 @@ class _BasePathTest(object):
p = self.cls('')
self.assertEqual(p.stat(), os.stat('.'))
+ @unittest.skipIf(is_wasi, "WASI has no user accounts.")
def test_expanduser_common(self):
P = self.cls
p = P('~')
@@ -2508,7 +2509,8 @@ class PosixPathTest(_BasePathTest, unittest.TestCase):
print(path.resolve(strict))
@unittest.skipIf(
- is_emscripten, "umask is not implemented on Emscripten."
+ is_emscripten or is_wasi,
+ "umask is not implemented on Emscripten/WASI."
)
def test_open_mode(self):
old_mask = os.umask(0)
@@ -2534,7 +2536,8 @@ class PosixPathTest(_BasePathTest, unittest.TestCase):
os.chdir(current_directory)
@unittest.skipIf(
- is_emscripten, "umask is not implemented on Emscripten."
+ is_emscripten or is_wasi,
+ "umask is not implemented on Emscripten/WASI."
)
def test_touch_mode(self):
old_mask = os.umask(0)
diff --git a/Lib/test/test_tarfile.py b/Lib/test/test_tarfile.py
index 12850cd..a364043 100644
--- a/Lib/test/test_tarfile.py
+++ b/Lib/test/test_tarfile.py
@@ -1498,7 +1498,10 @@ class StreamWriteTest(WriteTestBase, unittest.TestCase):
@unittest.skipUnless(sys.platform != "win32" and hasattr(os, "umask"),
"Missing umask implementation")
- @unittest.skipIf(support.is_emscripten, "Emscripten's umask is a stub.")
+ @unittest.skipIf(
+ support.is_emscripten or support.is_wasi,
+ "Emscripten's/WASI's umask is a stub."
+ )
def test_file_mode(self):
# Test for issue #8464: Create files with correct
# permissions.
diff --git a/Lib/test/test_unicode_file.py b/Lib/test/test_unicode_file.py
index 80c22c6..fe25bfe 100644
--- a/Lib/test/test_unicode_file.py
+++ b/Lib/test/test_unicode_file.py
@@ -110,7 +110,7 @@ class TestUnicodeFiles(unittest.TestCase):
os.unlink(filename)
self.assertTrue(not os.path.exists(filename))
# and again with os.open.
- f = os.open(filename, os.O_CREAT)
+ f = os.open(filename, os.O_CREAT | os.O_WRONLY)
os.close(f)
try:
self._do_single(filename)