138
138
def test_fancy_rename(self):
139
139
# This should work everywhere
140
self.create_file('a', 'something in a\n')
140
self.create_file('a', b'something in a\n')
141
141
self._fancy_rename('a', 'b')
142
142
self.assertPathDoesNotExist('a')
143
143
self.assertPathExists('b')
144
self.check_file_contents('b', 'something in a\n')
144
self.check_file_contents('b', b'something in a\n')
146
self.create_file('a', 'new something in a\n')
146
self.create_file('a', b'new something in a\n')
147
147
self._fancy_rename('b', 'a')
149
self.check_file_contents('a', 'something in a\n')
149
self.check_file_contents('a', b'something in a\n')
151
151
def test_fancy_rename_fails_source_missing(self):
152
152
# An exception should be raised, and the target should be left in place
153
self.create_file('target', 'data in target\n')
153
self.create_file('target', b'data in target\n')
154
154
self.assertRaises((IOError, OSError), self._fancy_rename,
155
155
'missingsource', 'target')
156
156
self.assertPathExists('target')
157
self.check_file_contents('target', 'data in target\n')
157
self.check_file_contents('target', b'data in target\n')
159
159
def test_fancy_rename_fails_if_source_and_target_missing(self):
160
160
self.assertRaises((IOError, OSError), self._fancy_rename,
163
163
def test_rename(self):
164
164
# Rename should be semi-atomic on all platforms
165
self.create_file('a', 'something in a\n')
165
self.create_file('a', b'something in a\n')
166
166
osutils.rename('a', 'b')
167
167
self.assertPathDoesNotExist('a')
168
168
self.assertPathExists('b')
169
self.check_file_contents('b', 'something in a\n')
169
self.check_file_contents('b', b'something in a\n')
171
self.create_file('a', 'new something in a\n')
171
self.create_file('a', b'new something in a\n')
172
172
osutils.rename('b', 'a')
174
self.check_file_contents('a', 'something in a\n')
174
self.check_file_contents('a', b'something in a\n')
176
176
# TODO: test fancy_rename using a MemoryTransport