@@ -34,11 +34,37 @@ def test_move_fs(self):
3434 self .assertTrue (dst_fs .isfile ("foo/bar/baz.txt" ))
3535 self .assertTrue (src_fs .isempty ("/" ))
3636
37- if self .preserve_time :
38- dst_file1_info = dst_fs .getinfo ("test.txt" , namespaces )
39- dst_file2_info = dst_fs .getinfo ("foo/bar/baz.txt" , namespaces )
40- self .assertEqual (dst_file1_info .modified , src_file1_info .modified )
41- self .assertEqual (dst_file2_info .modified , src_file2_info .modified )
37+ dst_file1_info = dst_fs .getinfo ("test.txt" , namespaces )
38+ dst_file2_info = dst_fs .getinfo ("foo/bar/baz.txt" , namespaces )
39+ self .assertEqual (
40+ dst_file1_info .modified == src_file1_info .modified ,
41+ self .preserve_time ,
42+ )
43+ self .assertEqual (
44+ dst_file2_info .modified == src_file2_info .modified ,
45+ self .preserve_time ,
46+ )
47+
48+ def test_move_file (self ):
49+ namespaces = ("details" , "modified" )
50+ with open_fs ("mem://" ) as src_fs , open_fs ("mem://" ) as dst_fs :
51+ src_fs .writetext ("source.txt" , "Source" )
52+ src_fs_file_info = src_fs .getinfo ("source.txt" , namespaces )
53+ fs .move .move_file (
54+ src_fs ,
55+ "source.txt" ,
56+ dst_fs ,
57+ "dest.txt" ,
58+ preserve_time = self .preserve_time ,
59+ )
60+ self .assertFalse (src_fs .exists ("source.txt" ))
61+ self .assertEqual (dst_fs .readtext ("dest.txt" ), "Source" )
62+
63+ dst_fs_file_info = dst_fs .getinfo ("dest.txt" , namespaces )
64+ self .assertEqual (
65+ src_fs_file_info .modified == dst_fs_file_info .modified ,
66+ self .preserve_time ,
67+ )
4268
4369 def test_move_dir (self ):
4470 namespaces = ("details" , "modified" )
@@ -60,35 +86,26 @@ def test_move_dir(self):
6086 self .assertFalse (src_fs .exists ("foo" ))
6187 self .assertTrue (src_fs .isfile ("test.txt" ))
6288
63- if self .preserve_time :
64- dst_file2_info = dst_fs .getinfo ("bar/baz.txt" , namespaces )
65- self .assertEqual (dst_file2_info .modified , src_file2_info .modified )
89+ dst_file2_info = dst_fs .getinfo ("bar/baz.txt" , namespaces )
90+ self .assertEqual (
91+ dst_file2_info .modified == src_file2_info .modified , self .preserve_time
92+ )
6693
6794
6895class TestMove (unittest .TestCase ):
69- def test_move_file (self ):
70- with open_fs ("temp://" ) as temp :
71- syspath = temp .getsyspath ("/" )
72- a = open_fs (syspath )
73- a .makedir ("dir" )
74- b = open_fs (join (syspath , "dir" ))
75- b .writetext ("file.txt" , "Content" )
76- fs .move .move_file (b , "file.txt" , a , "here.txt" )
77- self .assertEqual (a .readtext ("here.txt" ), "Content" )
78- self .assertFalse (b .exists ("file.txt" ))
79-
80- def test_move_file_different_mems (self ):
81- with open_fs ("mem://" ) as src , open_fs ("mem://" ) as dst :
82- src .writetext ("source.txt" , "Source" )
83- fs .move .move_file (src , "source.txt" , dst , "dest.txt" )
84- self .assertFalse (src .exists ("source.txt" ))
85- self .assertEqual (dst .readtext ("dest.txt" ), "Source" )
96+ def test_move_file_tempfs (self ):
97+ with open_fs ("temp://" ) as a , open_fs ("temp://" ) as b :
98+ dir_a = a .makedir ("dir" )
99+ dir_b = b .makedir ("subdir" )
100+ dir_b .writetext ("file.txt" , "Content" )
101+ fs .move .move_file (dir_b , "file.txt" , dir_a , "here.txt" )
102+ self .assertEqual (a .readtext ("dir/here.txt" ), "Content" )
103+ self .assertFalse (b .exists ("subdir/file.txt" ))
86104
87105 def test_move_file_fs_urls (self ):
88106 # create a temp dir to work on
89107 with open_fs ("temp://" ) as tmp :
90108 path = tmp .getsyspath ("/" )
91-
92109 tmp .writetext ("file.txt" , "Content" )
93110 tmp .makedir ("subdir" )
94111 fs .move .move_file (
@@ -97,7 +114,6 @@ def test_move_file_fs_urls(self):
97114 "osfs://" + join (path , "subdir" ),
98115 "file.txt" ,
99116 )
100-
101117 self .assertFalse (tmp .exists ("file.txt" ))
102118 self .assertEqual (tmp .readtext ("subdir/file.txt" ), "Content" )
103119
@@ -107,7 +123,7 @@ def test_move_file_fs_urls(self):
107123 self .assertFalse (src .exists ("source.txt" ))
108124 self .assertEqual (dst .readtext ("dest.txt" ), "Source" )
109125
110- def test_move_file_read_only_source (self ):
126+ def test_move_file_same_fs_read_only_source (self ):
111127 with open_fs ("temp://" ) as tmp :
112128 path = tmp .getsyspath ("/" )
113129 tmp .writetext ("file.txt" , "Content" )
@@ -132,6 +148,17 @@ def test_move_file_read_only_mem_source(self):
132148 )
133149 self .assertTrue (src .exists ("file.txt" ))
134150
151+ def test_move_file_read_only_mem_dest (self ):
152+ with open_fs ("mem://" ) as src , open_fs ("mem://" ) as dst :
153+ src .writetext ("file.txt" , "Content" )
154+ dst_ro = read_only (dst )
155+ with self .assertRaises (ResourceReadOnly ):
156+ fs .move .move_file (src , "file.txt" , dst_ro , "file.txt" )
157+ self .assertFalse (
158+ dst_ro .exists ("file.txt" ), "file should not have been copied over"
159+ )
160+ self .assertTrue (src .exists ("file.txt" ))
161+
135162 def test_move_dir_cleanup (self ):
136163 src_fs = open_fs ("mem://" )
137164 src_fs .makedirs ("foo/bar" )
0 commit comments