From 68393248947adaa61962cd44e9d49c44017ba94f Mon Sep 17 00:00:00 2001 From: Christian Heimes Date: Sat, 23 Jul 2022 12:26:31 +0200 Subject: [PATCH] gh-90473: Fix more tests on platforms without umask (GH-95164) --- Lib/distutils/tests/test_dir_util.py | 7 +++++-- Lib/test/support/os_helper.py | 5 +++++ Lib/test/test_os.py | 8 ++++++++ 3 files changed, 18 insertions(+), 2 deletions(-) diff --git a/Lib/distutils/tests/test_dir_util.py b/Lib/distutils/tests/test_dir_util.py index f3ba0ee33b4bc1..ebd89f320dca89 100644 --- a/Lib/distutils/tests/test_dir_util.py +++ b/Lib/distutils/tests/test_dir_util.py @@ -11,7 +11,7 @@ from distutils import log from distutils.tests import support -from test.support import run_unittest, is_emscripten +from test.support import run_unittest, is_emscripten, is_wasi class DirUtilTestCase(support.TempdirManager, unittest.TestCase): @@ -55,7 +55,10 @@ def test_mkpath_remove_tree_verbosity(self): @unittest.skipIf(sys.platform.startswith('win'), "This test is only appropriate for POSIX-like systems.") - @unittest.skipIf(is_emscripten, "Emscripten's umask is a stub.") + @unittest.skipIf( + is_emscripten or is_wasi, + "Emscripten's/WASI's umask is a stub." + ) def test_mkpath_with_custom_mode(self): # Get and set the current umask value for testing mode bits. umask = os.umask(0o002) diff --git a/Lib/test/support/os_helper.py b/Lib/test/support/os_helper.py index 61d12f59e4a602..f37a442aa0e6c8 100644 --- a/Lib/test/support/os_helper.py +++ b/Lib/test/support/os_helper.py @@ -658,6 +658,11 @@ def temp_umask(umask): yield finally: os.umask(oldmask) +else: + @contextlib.contextmanager + def temp_umask(umask): + """no-op on platforms without umask()""" + yield class EnvironmentVarGuard(collections.abc.MutableMapping): diff --git a/Lib/test/test_os.py b/Lib/test/test_os.py index 29f69a8f475b20..9970b234b4831b 100644 --- a/Lib/test/test_os.py +++ b/Lib/test/test_os.py @@ -1607,6 +1607,10 @@ def test_mode(self): self.assertEqual(os.stat(path).st_mode & 0o777, 0o555) self.assertEqual(os.stat(parent).st_mode & 0o777, 0o775) + @unittest.skipIf( + support.is_emscripten or support.is_wasi, + "Emscripten's/WASI's umask is a stub." + ) def test_exist_ok_existing_directory(self): path = os.path.join(os_helper.TESTFN, 'dir1') mode = 0o777 @@ -1621,6 +1625,10 @@ def test_exist_ok_existing_directory(self): # Issue #25583: A drive root could raise PermissionError on Windows os.makedirs(os.path.abspath('/'), exist_ok=True) + @unittest.skipIf( + support.is_emscripten or support.is_wasi, + "Emscripten's/WASI's umask is a stub." + ) def test_exist_ok_s_isgid_directory(self): path = os.path.join(os_helper.TESTFN, 'dir1') S_ISGID = stat.S_ISGID