@@ -2072,6 +2072,125 @@ def test_copy_dangling_symlink(self):
2072
2072
self .assertTrue (target2 .joinpath ('link' ).is_symlink ())
2073
2073
self .assertEqual (target2 .joinpath ('link' ).readlink (), self .cls ('nonexistent' ))
2074
2074
2075
+ def test_move_file (self ):
2076
+ base = self .cls (self .base )
2077
+ source = base / 'fileA'
2078
+ source_text = source .read_text ()
2079
+ target = base / 'fileA_moved'
2080
+ result = source .move (target )
2081
+ self .assertEqual (result , target )
2082
+ self .assertFalse (source .exists ())
2083
+ self .assertTrue (target .exists ())
2084
+ self .assertEqual (source_text , target .read_text ())
2085
+
2086
+ def test_move_file_to_file (self ):
2087
+ base = self .cls (self .base )
2088
+ source = base / 'fileA'
2089
+ source_text = source .read_text ()
2090
+ target = base / 'dirB' / 'fileB'
2091
+ result = source .move (target )
2092
+ self .assertEqual (result , target )
2093
+ self .assertFalse (source .exists ())
2094
+ self .assertTrue (target .exists ())
2095
+ self .assertEqual (source_text , target .read_text ())
2096
+
2097
+ def test_move_file_to_dir (self ):
2098
+ base = self .cls (self .base )
2099
+ source = base / 'fileA'
2100
+ target = base / 'dirB'
2101
+ self .assertRaises (OSError , source .move , target )
2102
+
2103
+ def test_move_file_to_itself (self ):
2104
+ base = self .cls (self .base )
2105
+ source = base / 'fileA'
2106
+ self .assertRaises (OSError , source .move , source )
2107
+
2108
+ def test_move_dir (self ):
2109
+ base = self .cls (self .base )
2110
+ source = base / 'dirC'
2111
+ target = base / 'dirC_moved'
2112
+ result = source .move (target )
2113
+ self .assertEqual (result , target )
2114
+ self .assertFalse (source .exists ())
2115
+ self .assertTrue (target .is_dir ())
2116
+ self .assertTrue (target .joinpath ('dirD' ).is_dir ())
2117
+ self .assertTrue (target .joinpath ('dirD' , 'fileD' ).is_file ())
2118
+ self .assertEqual (target .joinpath ('dirD' , 'fileD' ).read_text (),
2119
+ "this is file D\n " )
2120
+ self .assertTrue (target .joinpath ('fileC' ).is_file ())
2121
+ self .assertTrue (target .joinpath ('fileC' ).read_text (),
2122
+ "this is file C\n " )
2123
+
2124
+ def test_move_dir_to_dir (self ):
2125
+ base = self .cls (self .base )
2126
+ source = base / 'dirC'
2127
+ target = base / 'dirB'
2128
+ self .assertRaises (OSError , source .move , target )
2129
+ self .assertTrue (source .exists ())
2130
+ self .assertTrue (target .exists ())
2131
+
2132
+ def test_move_dir_to_itself (self ):
2133
+ base = self .cls (self .base )
2134
+ source = base / 'dirC'
2135
+ self .assertRaises (OSError , source .move , source )
2136
+ self .assertTrue (source .exists ())
2137
+
2138
+ def test_move_dir_into_itself (self ):
2139
+ base = self .cls (self .base )
2140
+ source = base / 'dirC'
2141
+ target = base / 'dirC' / 'bar'
2142
+ self .assertRaises (OSError , source .move , target )
2143
+ self .assertTrue (source .exists ())
2144
+ self .assertFalse (target .exists ())
2145
+
2146
+ @needs_symlinks
2147
+ def test_move_file_symlink (self ):
2148
+ base = self .cls (self .base )
2149
+ source = base / 'linkA'
2150
+ source_readlink = source .readlink ()
2151
+ target = base / 'linkA_moved'
2152
+ result = source .move (target )
2153
+ self .assertEqual (result , target )
2154
+ self .assertFalse (source .exists ())
2155
+ self .assertTrue (target .is_symlink ())
2156
+ self .assertEqual (source_readlink , target .readlink ())
2157
+
2158
+ @needs_symlinks
2159
+ def test_move_file_symlink_to_itself (self ):
2160
+ base = self .cls (self .base )
2161
+ source = base / 'linkA'
2162
+ self .assertRaises (OSError , source .move , source )
2163
+
2164
+ @needs_symlinks
2165
+ def test_move_dir_symlink (self ):
2166
+ base = self .cls (self .base )
2167
+ source = base / 'linkB'
2168
+ source_readlink = source .readlink ()
2169
+ target = base / 'linkB_moved'
2170
+ result = source .move (target )
2171
+ self .assertEqual (result , target )
2172
+ self .assertFalse (source .exists ())
2173
+ self .assertTrue (target .is_symlink ())
2174
+ self .assertEqual (source_readlink , target .readlink ())
2175
+
2176
+ @needs_symlinks
2177
+ def test_move_dir_symlink_to_itself (self ):
2178
+ base = self .cls (self .base )
2179
+ source = base / 'linkB'
2180
+ self .assertRaises (OSError , source .move , source )
2181
+
2182
+ @needs_symlinks
2183
+ def test_move_dangling_symlink (self ):
2184
+ base = self .cls (self .base )
2185
+ source = base / 'brokenLink'
2186
+ source_readlink = source .readlink ()
2187
+ target = base / 'brokenLink_moved'
2188
+ result = source .move (target )
2189
+ self .assertEqual (result , target )
2190
+ self .assertFalse (source .exists ())
2191
+ self .assertTrue (target .is_symlink ())
2192
+ self .assertEqual (source_readlink , target .readlink ())
2193
+
2075
2194
def test_iterdir (self ):
2076
2195
P = self .cls
2077
2196
p = P (self .base )
0 commit comments