/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: Gordon Tyler
  • Date: 2009-11-17 02:27:12 UTC
  • mfrom: (4800 +trunk)
  • mto: This revision was merged to the branch mainline in revision 4802.
  • Revision ID: gordon@doxxx.net-20091117022712-4nrb2c0h4mzfkvx2
Merged from bzr.dev.

Show diffs side-by-side

added added

removed removed

Lines of Context:
126
126
 
127
127
class TestRename(tests.TestCaseInTempDir):
128
128
 
 
129
    def create_file(self, filename, content):
 
130
        f = open(filename, 'wb')
 
131
        try:
 
132
            f.write(content)
 
133
        finally:
 
134
            f.close()
 
135
 
 
136
    def _fancy_rename(self, a, b):
 
137
        osutils.fancy_rename(a, b, rename_func=os.rename,
 
138
                             unlink_func=os.unlink)
 
139
 
129
140
    def test_fancy_rename(self):
130
141
        # 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')
 
142
        self.create_file('a', 'something in a\n')
 
143
        self._fancy_rename('a', 'b')
138
144
        self.failIfExists('a')
139
145
        self.failUnlessExists('b')
140
146
        self.check_file_contents('b', 'something in a\n')
141
147
 
142
 
        open('a', 'wb').write('new something in a\n')
143
 
        rename('b', 'a')
 
148
        self.create_file('a', 'new something in a\n')
 
149
        self._fancy_rename('b', 'a')
144
150
 
145
151
        self.check_file_contents('a', 'something in a\n')
146
152
 
 
153
    def test_fancy_rename_fails_source_missing(self):
 
154
        # An exception should be raised, and the target should be left in place
 
155
        self.create_file('target', 'data in target\n')
 
156
        self.assertRaises((IOError, OSError), self._fancy_rename,
 
157
                          'missingsource', 'target')
 
158
        self.failUnlessExists('target')
 
159
        self.check_file_contents('target', 'data in target\n')
 
160
 
 
161
    def test_fancy_rename_fails_if_source_and_target_missing(self):
 
162
        self.assertRaises((IOError, OSError), self._fancy_rename,
 
163
                          'missingsource', 'missingtarget')
 
164
 
147
165
    def test_rename(self):
148
166
        # Rename should be semi-atomic on all platforms
149
 
        open('a', 'wb').write('something in a\n')
 
167
        self.create_file('a', 'something in a\n')
150
168
        osutils.rename('a', 'b')
151
169
        self.failIfExists('a')
152
170
        self.failUnlessExists('b')
153
171
        self.check_file_contents('b', 'something in a\n')
154
172
 
155
 
        open('a', 'wb').write('new something in a\n')
 
173
        self.create_file('a', 'new something in a\n')
156
174
        osutils.rename('b', 'a')
157
175
 
158
176
        self.check_file_contents('a', 'something in a\n')