87
83
if test__walkdirs_win32.Win32ReadDirFeature.available():
89
85
from bzrlib import _walkdirs_win32
90
# TODO: check on windows, it may be that we need to use/add
91
# safe_unicode instead of _fs_enc_to_unicode
94
88
dict(_dir_reader_class=_walkdirs_win32.Win32ReadDir,
95
_native_to_unicode=_fs_enc_to_unicode)))
89
_native_to_unicode=_already_unicode)))
96
90
except ImportError:
127
121
class TestRename(tests.TestCaseInTempDir):
123
def create_file(self, filename, content):
124
f = open(filename, 'wb')
130
def _fancy_rename(self, a, b):
131
osutils.fancy_rename(a, b, rename_func=os.rename,
132
unlink_func=os.unlink)
129
134
def test_fancy_rename(self):
130
135
# This should work everywhere
132
osutils.fancy_rename(a, b,
133
rename_func=os.rename,
134
unlink_func=os.unlink)
136
open('a', 'wb').write('something in a\n')
136
self.create_file('a', 'something in a\n')
137
self._fancy_rename('a', 'b')
138
138
self.failIfExists('a')
139
139
self.failUnlessExists('b')
140
140
self.check_file_contents('b', 'something in a\n')
142
open('a', 'wb').write('new something in a\n')
142
self.create_file('a', 'new something in a\n')
143
self._fancy_rename('b', 'a')
145
145
self.check_file_contents('a', 'something in a\n')
147
def test_fancy_rename_fails_source_missing(self):
148
# An exception should be raised, and the target should be left in place
149
self.create_file('target', 'data in target\n')
150
self.assertRaises((IOError, OSError), self._fancy_rename,
151
'missingsource', 'target')
152
self.failUnlessExists('target')
153
self.check_file_contents('target', 'data in target\n')
155
def test_fancy_rename_fails_if_source_and_target_missing(self):
156
self.assertRaises((IOError, OSError), self._fancy_rename,
157
'missingsource', 'missingtarget')
147
159
def test_rename(self):
148
160
# Rename should be semi-atomic on all platforms
149
open('a', 'wb').write('something in a\n')
161
self.create_file('a', 'something in a\n')
150
162
osutils.rename('a', 'b')
151
163
self.failIfExists('a')
152
164
self.failUnlessExists('b')
153
165
self.check_file_contents('b', 'something in a\n')
155
open('a', 'wb').write('new something in a\n')
167
self.create_file('a', 'new something in a\n')
156
168
osutils.rename('b', 'a')
158
170
self.check_file_contents('a', 'something in a\n')