Commit ee253ebf authored by Trent Nelson's avatar Trent Nelson

Issue #15747: skip chflags UF_IMMUTABLE tests if EOPNOTSUPP is raised.

This is necessary for ZFS systems, which don't support UF_IMMUTABLE.
parent 1b47bf43
...@@ -334,7 +334,16 @@ class PosixTester(unittest.TestCase): ...@@ -334,7 +334,16 @@ class PosixTester(unittest.TestCase):
def _test_chflags_regular_file(self, chflags_func, target_file): def _test_chflags_regular_file(self, chflags_func, target_file):
st = os.stat(target_file) st = os.stat(target_file)
self.assertTrue(hasattr(st, 'st_flags')) self.assertTrue(hasattr(st, 'st_flags'))
chflags_func(target_file, st.st_flags | stat.UF_IMMUTABLE)
# ZFS returns EOPNOTSUPP when attempting to set flag UF_IMMUTABLE.
try:
chflags_func(target_file, st.st_flags | stat.UF_IMMUTABLE)
except OSError as err:
if err.errno != errno.EOPNOTSUPP:
raise
msg = 'chflag UF_IMMUTABLE not supported by underlying fs'
self.skipTest(msg)
try: try:
new_st = os.stat(target_file) new_st = os.stat(target_file)
self.assertEqual(st.st_flags | stat.UF_IMMUTABLE, new_st.st_flags) self.assertEqual(st.st_flags | stat.UF_IMMUTABLE, new_st.st_flags)
...@@ -363,8 +372,16 @@ class PosixTester(unittest.TestCase): ...@@ -363,8 +372,16 @@ class PosixTester(unittest.TestCase):
self.teardown_files.append(_DUMMY_SYMLINK) self.teardown_files.append(_DUMMY_SYMLINK)
dummy_symlink_st = os.lstat(_DUMMY_SYMLINK) dummy_symlink_st = os.lstat(_DUMMY_SYMLINK)
posix.lchflags(_DUMMY_SYMLINK, # ZFS returns EOPNOTSUPP when attempting to set flag UF_IMMUTABLE.
dummy_symlink_st.st_flags | stat.UF_IMMUTABLE) try:
posix.lchflags(_DUMMY_SYMLINK,
dummy_symlink_st.st_flags | stat.UF_IMMUTABLE)
except OSError as err:
if err.errno != errno.EOPNOTSUPP:
raise
msg = 'chflag UF_IMMUTABLE not supported by underlying fs'
self.skipTest(msg)
try: try:
new_testfn_st = os.stat(support.TESTFN) new_testfn_st = os.stat(support.TESTFN)
new_dummy_symlink_st = os.lstat(_DUMMY_SYMLINK) new_dummy_symlink_st = os.lstat(_DUMMY_SYMLINK)
......
...@@ -436,6 +436,10 @@ Extension Modules ...@@ -436,6 +436,10 @@ Extension Modules
Tests Tests
----- -----
- Issue #15747: ZFS always returns EOPNOTSUPP when attempting to set the
UF_IMMUTABLE flag (via either chflags or lchflags); refactor affected
tests in test_posix.py to account for this.
- Issue #15285: Refactor the approach for testing connect timeouts using - Issue #15285: Refactor the approach for testing connect timeouts using
two external hosts that have been configured specifically for this type two external hosts that have been configured specifically for this type
of test. of test.
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment