@@ -895,6 +895,26 @@ def test_copytree_dangling_symlinks(self):
895
895
shutil .copytree (src_dir , dst_dir , symlinks = True )
896
896
self .assertIn ('test.txt' , os .listdir (dst_dir ))
897
897
898
+ @support .skip_unless_symlink
899
+ def test_copytree_symlink_dir (self ):
900
+ src_dir = self .mkdtemp ()
901
+ dst_dir = os .path .join (self .mkdtemp (), 'destination' )
902
+ os .mkdir (os .path .join (src_dir , 'real_dir' ))
903
+ with open (os .path .join (src_dir , 'real_dir' , 'test.txt' ), 'w' ):
904
+ pass
905
+ os .symlink (os .path .join (src_dir , 'real_dir' ),
906
+ os .path .join (src_dir , 'link_to_dir' ),
907
+ target_is_directory = True )
908
+
909
+ shutil .copytree (src_dir , dst_dir , symlinks = False )
910
+ self .assertFalse (os .path .islink (os .path .join (dst_dir , 'link_to_dir' )))
911
+ self .assertIn ('test.txt' , os .listdir (os .path .join (dst_dir , 'link_to_dir' )))
912
+
913
+ dst_dir = os .path .join (self .mkdtemp (), 'destination2' )
914
+ shutil .copytree (src_dir , dst_dir , symlinks = True )
915
+ self .assertTrue (os .path .islink (os .path .join (dst_dir , 'link_to_dir' )))
916
+ self .assertIn ('test.txt' , os .listdir (os .path .join (dst_dir , 'link_to_dir' )))
917
+
898
918
def _copy_file (self , method ):
899
919
fname = 'test.txt'
900
920
tmpdir = self .mkdtemp ()
0 commit comments