@@ -656,8 +656,6 @@ def test_open_unbuffered(self):
656
656
def test_copy_file_preserve_metadata (self ):
657
657
base = self .cls (self .base )
658
658
source = base / 'fileA'
659
- if hasattr (os , 'setxattr' ):
660
- os .setxattr (source , b'user.foo' , b'42' )
661
659
if hasattr (os , 'chmod' ):
662
660
os .chmod (source , stat .S_IRWXU | stat .S_IRWXO )
663
661
if hasattr (os , 'chflags' ) and hasattr (stat , 'UF_NODUMP' ):
@@ -670,12 +668,19 @@ def test_copy_file_preserve_metadata(self):
670
668
target_st = target .stat ()
671
669
self .assertLessEqual (source_st .st_atime , target_st .st_atime )
672
670
self .assertLessEqual (source_st .st_mtime , target_st .st_mtime )
673
- if hasattr (os , 'getxattr' ):
674
- self .assertEqual (os .getxattr (target , b'user.foo' ), b'42' )
675
671
self .assertEqual (source_st .st_mode , target_st .st_mode )
676
672
if hasattr (source_st , 'st_flags' ):
677
673
self .assertEqual (source_st .st_flags , target_st .st_flags )
678
674
675
+ @os_helper .skip_unless_xattr
676
+ def test_copy_file_preserve_metadata_xattrs (self ):
677
+ base = self .cls (self .base )
678
+ source = base / 'fileA'
679
+ os .setxattr (source , b'user.foo' , b'42' )
680
+ target = base / 'copyA'
681
+ source .copy (target , preserve_metadata = True )
682
+ self .assertEqual (os .getxattr (target , b'user.foo' ), b'42' )
683
+
679
684
@needs_symlinks
680
685
def test_copy_link_preserve_metadata (self ):
681
686
base = self .cls (self .base )
0 commit comments