136
def _fancy_rename(self, a, b):
137
osutils.fancy_rename(a, b, rename_func=os.rename,
138
unlink_func=os.unlink)
136
140
def test_fancy_rename(self):
137
141
# This should work everywhere
139
osutils.fancy_rename(a, b,
140
rename_func=os.rename,
141
unlink_func=os.unlink)
143
142
self.create_file('a', 'something in a\n')
143
self._fancy_rename('a', 'b')
145
144
self.failIfExists('a')
146
145
self.failUnlessExists('b')
147
146
self.check_file_contents('b', 'something in a\n')
149
148
self.create_file('a', 'new something in a\n')
149
self._fancy_rename('b', 'a')
152
151
self.check_file_contents('a', 'something in a\n')
154
153
def test_fancy_rename_fails_source_missing(self):
156
osutils.fancy_rename(a, b,
157
rename_func=os.rename,
158
unlink_func=os.unlink)
160
154
# An exception should be raised, and the target should be left in place
161
155
self.create_file('target', 'data in target\n')
162
self.assertRaises((IOError, OSError), rename,
156
self.assertRaises((IOError, OSError), self._fancy_rename,
163
157
'missingsource', 'target')
164
158
self.failUnlessExists('target')
165
159
self.check_file_contents('target', 'data in target\n')
161
def test_fancy_rename_fails_if_source_and_target_missing(self):
162
self.assertRaises((IOError, OSError), self._fancy_rename,
163
'missingsource', 'missingtarget')
167
165
def test_rename(self):
168
166
# Rename should be semi-atomic on all platforms
169
167
self.create_file('a', 'something in a\n')