diff options
author | Christian Heimes <christian@python.org> | 2022-05-25 13:57:26 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-05-25 13:57:26 (GMT) |
commit | 1f134e96ba994bea3aaea533d4a558df3c5cc3c0 (patch) | |
tree | c3784124138da2484288227c68ca8be3e4c273bd /Lib | |
parent | 5e6e5b98a8b943a8e05feb9c0c982150565f4c10 (diff) | |
download | cpython-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.py | 1 | ||||
-rw-r--r-- | Lib/lib2to3/tests/test_parser.py | 2 | ||||
-rw-r--r-- | Lib/test/test_netrc.py | 6 | ||||
-rw-r--r-- | Lib/test/test_os.py | 2 | ||||
-rw-r--r-- | Lib/test/test_pathlib.py | 9 | ||||
-rw-r--r-- | Lib/test/test_tarfile.py | 5 | ||||
-rw-r--r-- | Lib/test/test_unicode_file.py | 2 |
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) |