/brz/remove-bazaar

To get this branch, use:
bzr branch http://gegoxaren.bato24.eu/bzr/brz/remove-bazaar

« back to all changes in this revision

Viewing changes to bzrlib/tests/test_osutils.py

  • Committer: Martin Pool
  • Date: 2009-11-26 01:42:06 UTC
  • mfrom: (4827 +trunk)
  • mto: This revision was merged to the branch mainline in revision 4828.
  • Revision ID: mbp@sourcefrog.net-20091126014206-qvf8jfpwpro558r4
merge news

Show diffs side-by-side

added added

removed removed

Lines of Context:
58
58
    return s
59
59
 
60
60
 
61
 
def _fs_enc_to_unicode(s):
62
 
    return s.decode(osutils._fs_enc)
63
 
 
64
 
 
65
61
def _utf8_to_unicode(s):
66
62
    return s.decode('UTF-8')
67
63
 
87
83
    if test__walkdirs_win32.Win32ReadDirFeature.available():
88
84
        try:
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
92
86
            scenarios.append(
93
87
                ('win32',
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:
97
91
            pass
98
92
    return scenarios
126
120
 
127
121
class TestRename(tests.TestCaseInTempDir):
128
122
 
 
123
    def create_file(self, filename, content):
 
124
        f = open(filename, 'wb')
 
125
        try:
 
126
            f.write(content)
 
127
        finally:
 
128
            f.close()
 
129
 
 
130
    def _fancy_rename(self, a, b):
 
131
        osutils.fancy_rename(a, b, rename_func=os.rename,
 
132
                             unlink_func=os.unlink)
 
133
 
129
134
    def test_fancy_rename(self):
130
135
        # This should work everywhere
131
 
        def rename(a, b):
132
 
            osutils.fancy_rename(a, b,
133
 
                    rename_func=os.rename,
134
 
                    unlink_func=os.unlink)
135
 
 
136
 
        open('a', 'wb').write('something in a\n')
137
 
        rename('a', 'b')
 
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')
141
141
 
142
 
        open('a', 'wb').write('new something in a\n')
143
 
        rename('b', 'a')
 
142
        self.create_file('a', 'new something in a\n')
 
143
        self._fancy_rename('b', 'a')
144
144
 
145
145
        self.check_file_contents('a', 'something in a\n')
146
146
 
 
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')
 
154
 
 
155
    def test_fancy_rename_fails_if_source_and_target_missing(self):
 
156
        self.assertRaises((IOError, OSError), self._fancy_rename,
 
157
                          'missingsource', 'missingtarget')
 
158
 
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')
154
166
 
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')
157
169
 
158
170
        self.check_file_contents('a', 'something in a\n')
1613
1625
        text = 'test\r\nwith\nall\rpossible line endings\r\n'
1614
1626
        self.build_tree_contents([('foo', text)])
1615
1627
        expected_sha = osutils.sha_string(text)
1616
 
        f = open('foo')
 
1628
        f = open('foo', 'rb')
1617
1629
        self.addCleanup(f.close)
1618
1630
        size, sha = osutils.size_sha_file(f)
1619
1631
        self.assertEqual(38, size)