]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
GH-73991: Fix "Operation not supported" on Fedora buildbot. (#121444)
authorBarney Gale <barney.gale@gmail.com>
Sun, 7 Jul 2024 16:27:52 +0000 (17:27 +0100)
committerGitHub <noreply@github.com>
Sun, 7 Jul 2024 16:27:52 +0000 (17:27 +0100)
Follow-up to #120806. Use `os_helper.skip_unless_xattr` to skip testing
xattr preservation when unsupported.

Lib/test/test_pathlib/test_pathlib.py

index 234e5746e544cdd4ae130d3478a18f73272ffb00..1328a8695b0cca23ed2eabb121877d4ad3135726 100644 (file)
@@ -656,8 +656,6 @@ class PathTest(test_pathlib_abc.DummyPathTest, PurePathTest):
     def test_copy_file_preserve_metadata(self):
         base = self.cls(self.base)
         source = base / 'fileA'
-        if hasattr(os, 'setxattr'):
-            os.setxattr(source, b'user.foo', b'42')
         if hasattr(os, 'chmod'):
             os.chmod(source, stat.S_IRWXU | stat.S_IRWXO)
         if hasattr(os, 'chflags') and hasattr(stat, 'UF_NODUMP'):
@@ -670,12 +668,19 @@ class PathTest(test_pathlib_abc.DummyPathTest, PurePathTest):
         target_st = target.stat()
         self.assertLessEqual(source_st.st_atime, target_st.st_atime)
         self.assertLessEqual(source_st.st_mtime, target_st.st_mtime)
-        if hasattr(os, 'getxattr'):
-            self.assertEqual(os.getxattr(target, b'user.foo'), b'42')
         self.assertEqual(source_st.st_mode, target_st.st_mode)
         if hasattr(source_st, 'st_flags'):
             self.assertEqual(source_st.st_flags, target_st.st_flags)
 
+    @os_helper.skip_unless_xattr
+    def test_copy_file_preserve_metadata_xattrs(self):
+        base = self.cls(self.base)
+        source = base / 'fileA'
+        os.setxattr(source, b'user.foo', b'42')
+        target = base / 'copyA'
+        source.copy(target, preserve_metadata=True)
+        self.assertEqual(os.getxattr(target, b'user.foo'), b'42')
+
     @needs_symlinks
     def test_copy_link_preserve_metadata(self):
         base = self.cls(self.base)