~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/tests/per_workingtree/test_rename_one.py

  • Committer: Jelmer Vernooij
  • Date: 2012-02-20 12:19:29 UTC
  • mfrom: (6437.23.11 2.5)
  • mto: (6581.1.1 trunk)
  • mto: This revision was merged to the branch mainline in revision 6582.
  • Revision ID: jelmer@samba.org-20120220121929-7ni2psvjoatm1yp4
Merge bzr/2.5.

Show diffs side-by-side

added added

removed removed

Lines of Context:
81
81
 
82
82
        a_contents = tree.get_file_text('a-id')
83
83
        tree.rename_one('a', 'foo')
84
 
        self.assertTreeLayout([('', root_id), ('b', 'b-id'), ('foo', 'a-id')],
 
84
        self.assertTreeLayout([('', root_id), ('b/', 'b-id'), ('foo', 'a-id')],
85
85
                              tree)
86
 
        self.assertTreeLayout([('', root_id), ('a', 'a-id'), ('b', 'b-id')],
 
86
        self.assertTreeLayout([('', root_id), ('a', 'a-id'), ('b/', 'b-id')],
87
87
                              tree.basis_tree())
88
88
        self.assertPathDoesNotExist('a')
89
89
        self.assertFileEqual(a_contents, 'foo')
97
97
 
98
98
        a_contents = tree.get_file_text('a-id')
99
99
        tree.rename_one('a', 'b/foo')
100
 
        self.assertTreeLayout([('', root_id), ('b', 'b-id'), ('b/foo', 'a-id')],
 
100
        self.assertTreeLayout([('', root_id), ('b/', 'b-id'), ('b/foo', 'a-id')],
101
101
                              tree)
102
 
        self.assertTreeLayout([('', root_id), ('a', 'a-id'), ('b', 'b-id')],
 
102
        self.assertTreeLayout([('', root_id), ('a', 'a-id'), ('b/', 'b-id')],
103
103
                              tree.basis_tree())
104
104
        self.assertPathDoesNotExist('tree/a')
105
105
        self.assertFileEqual(a_contents, 'tree/b/foo')
110
110
        tree.add(['a', 'b', 'b/c'], ['a-id', 'b-id', 'c-id'])
111
111
        tree.commit('initial', rev_id='rev-1')
112
112
        root_id = tree.get_root_id()
113
 
        self.assertTreeLayout([('', root_id), ('a', 'a-id'), ('b', 'b-id'),
 
113
        self.assertTreeLayout([('', root_id), ('a', 'a-id'), ('b/', 'b-id'),
114
114
                               ('b/c', 'c-id')], tree)
115
 
        self.assertTreeLayout([('', root_id), ('a', 'a-id'), ('b', 'b-id'),
 
115
        self.assertTreeLayout([('', root_id), ('a', 'a-id'), ('b/', 'b-id'),
116
116
                               ('b/c', 'c-id')], tree.basis_tree())
117
117
        a_contents = tree.get_file_text('a-id')
118
118
        tree.rename_one('a', 'b/d')
119
 
        self.assertTreeLayout([('', root_id), ('b', 'b-id'), ('b/c', 'c-id'),
 
119
        self.assertTreeLayout([('', root_id), ('b/', 'b-id'), ('b/c', 'c-id'),
120
120
                               ('b/d', 'a-id')], tree)
121
 
        self.assertTreeLayout([('', root_id), ('a', 'a-id'), ('b', 'b-id'),
 
121
        self.assertTreeLayout([('', root_id), ('a', 'a-id'), ('b/', 'b-id'),
122
122
                               ('b/c', 'c-id')], tree.basis_tree())
123
123
        self.assertPathDoesNotExist('a')
124
124
        self.assertFileEqual(a_contents, 'b/d')
131
131
        root_id = tree.get_root_id()
132
132
        c_contents = tree.get_file_text('c-id')
133
133
        tree.rename_one('b/c', 'd')
134
 
        self.assertTreeLayout([('', root_id), ('a', 'a-id'), ('b', 'b-id'),
 
134
        self.assertTreeLayout([('', root_id), ('a', 'a-id'), ('b/', 'b-id'),
135
135
                               ('d', 'c-id')], tree)
136
 
        self.assertTreeLayout([('', root_id), ('a', 'a-id'), ('b', 'b-id'),
 
136
        self.assertTreeLayout([('', root_id), ('a', 'a-id'), ('b/', 'b-id'),
137
137
                               ('b/c', 'c-id')], tree.basis_tree())
138
138
        self.assertPathDoesNotExist('b/c')
139
139
        self.assertFileEqual(c_contents, 'd')
147
147
        # Target already exists
148
148
        self.assertRaises(errors.RenameFailedFilesExist,
149
149
                          tree.rename_one, 'a', 'b/a')
150
 
        self.assertTreeLayout([('', root_id), ('a', 'a-id'), ('b', 'b-id'),
 
150
        self.assertTreeLayout([('', root_id), ('a', 'a-id'), ('b/', 'b-id'),
151
151
                               ('c', 'c-id')], tree)
152
 
        self.assertTreeLayout([('', root_id), ('a', 'a-id'), ('b', 'b-id'),
 
152
        self.assertTreeLayout([('', root_id), ('a', 'a-id'), ('b/', 'b-id'),
153
153
                               ('c', 'c-id')], tree.basis_tree())
154
154
 
155
155
    def test_rename_one_onto_existing(self):
187
187
        root_id = tree.get_root_id()
188
188
        os.rename('a', 'b/foo')
189
189
 
190
 
        self.assertTreeLayout([('', root_id), ('a', 'a-id'), ('b', 'b-id')],
 
190
        self.assertTreeLayout([('', root_id), ('a', 'a-id'), ('b/', 'b-id')],
191
191
                              tree)
192
192
        # We don't need after=True as long as source is missing and target
193
193
        # exists.
194
194
        tree.rename_one('a', 'b/foo')
195
 
        self.assertTreeLayout([('', root_id), ('b', 'b-id'),
 
195
        self.assertTreeLayout([('', root_id), ('b/', 'b-id'),
196
196
                               ('b/foo', 'a-id')], tree)
197
 
        self.assertTreeLayout([('', root_id), ('a', 'a-id'), ('b', 'b-id')],
 
197
        self.assertTreeLayout([('', root_id), ('a', 'a-id'), ('b/', 'b-id')],
198
198
                              tree.basis_tree())
199
199
 
200
200
    def test_rename_one_after_with_after(self):
205
205
        root_id = tree.get_root_id()
206
206
        os.rename('a', 'b/foo')
207
207
 
208
 
        self.assertTreeLayout([('', root_id), ('a', 'a-id'), ('b', 'b-id')],
 
208
        self.assertTreeLayout([('', root_id), ('a', 'a-id'), ('b/', 'b-id')],
209
209
                              tree)
210
210
        # Passing after=True should work as well
211
211
        tree.rename_one('a', 'b/foo', after=True)
212
 
        self.assertTreeLayout([('', root_id), ('b', 'b-id'),
 
212
        self.assertTreeLayout([('', root_id), ('b/', 'b-id'),
213
213
                               ('b/foo', 'a-id')], tree)
214
 
        self.assertTreeLayout([('', root_id), ('a', 'a-id'), ('b', 'b-id')],
 
214
        self.assertTreeLayout([('', root_id), ('a', 'a-id'), ('b/', 'b-id')],
215
215
                              tree.basis_tree())
216
216
 
217
217
    def test_rename_one_after_dest_versioned(self):
269
269
        os.rename('a', 'b/foo')
270
270
        tree.remove(['a'])
271
271
 
272
 
        self.assertTreeLayout([('', root_id), ('b', 'b-id')], tree)
 
272
        self.assertTreeLayout([('', root_id), ('b/', 'b-id')], tree)
273
273
        # We don't need after=True as long as source is missing and target
274
274
        # exists.
275
275
        tree.rename_one('a', 'b/foo')
276
 
        self.assertTreeLayout([('', root_id), ('b', 'b-id'),
 
276
        self.assertTreeLayout([('', root_id), ('b/', 'b-id'),
277
277
                               ('b/foo', 'a-id')], tree)
278
 
        self.assertTreeLayout([('', root_id), ('a', 'a-id'), ('b', 'b-id')],
 
278
        self.assertTreeLayout([('', root_id), ('a', 'a-id'), ('b/', 'b-id')],
279
279
                              tree.basis_tree())
280
280
 
281
281
    def test_rename_one_after_no_target(self):
288
288
        # Passing after when the file hasn't been rename_one raises an exception
289
289
        self.assertRaises(errors.BzrMoveFailedError,
290
290
                          tree.rename_one, 'a', 'b/foo', after=True)
291
 
        self.assertTreeLayout([('', root_id), ('a', 'a-id'), ('b', 'b-id')],
 
291
        self.assertTreeLayout([('', root_id), ('a', 'a-id'), ('b/', 'b-id')],
292
292
                              tree)
293
 
        self.assertTreeLayout([('', root_id), ('a', 'a-id'), ('b', 'b-id')],
 
293
        self.assertTreeLayout([('', root_id), ('a', 'a-id'), ('b/', 'b-id')],
294
294
                              tree.basis_tree())
295
295
 
296
296
    def test_rename_one_after_source_and_dest(self):
313
313
        finally:
314
314
            foo_file.close()
315
315
 
316
 
        self.assertTreeLayout([('', root_id), ('a', 'a-id'), ('b', 'b-id')],
 
316
        self.assertTreeLayout([('', root_id), ('a', 'a-id'), ('b/', 'b-id')],
317
317
                              tree)
318
318
        self.assertRaises(errors.RenameFailedFilesExist,
319
319
                          tree.rename_one, 'a', 'b/foo', after=False)
320
 
        self.assertTreeLayout([('', root_id), ('a', 'a-id'), ('b', 'b-id')],
 
320
        self.assertTreeLayout([('', root_id), ('a', 'a-id'), ('b/', 'b-id')],
321
321
                              tree)
322
322
        self.assertFileEqual(a_text, 'a')
323
323
        self.assertFileEqual(foo_text, 'b/foo')
324
324
        # But you can pass after=True
325
325
        tree.rename_one('a', 'b/foo', after=True)
326
 
        self.assertTreeLayout([('', root_id), ('b', 'b-id'),
 
326
        self.assertTreeLayout([('', root_id), ('b/', 'b-id'),
327
327
                               ('b/foo', 'a-id')], tree)
328
 
        self.assertTreeLayout([('', root_id), ('a', 'a-id'), ('b', 'b-id')],
 
328
        self.assertTreeLayout([('', root_id), ('a', 'a-id'), ('b/', 'b-id')],
329
329
                              tree.basis_tree())
330
330
        # But it shouldn't actually move anything
331
331
        self.assertFileEqual(a_text, 'a')
340
340
        root_id = tree.get_root_id()
341
341
 
342
342
        tree.rename_one('a', 'e/f')
343
 
        self.assertTreeLayout([('', root_id), ('e', 'e-id'), ('e/f', 'a-id'),
344
 
                               ('e/f/b', 'b-id'), ('e/f/c', 'c-id'),
 
343
        self.assertTreeLayout([('', root_id), ('e/', 'e-id'), ('e/f/', 'a-id'),
 
344
                               ('e/f/b', 'b-id'), ('e/f/c/', 'c-id'),
345
345
                               ('e/f/c/d', 'd-id')], tree)
346
 
        self.assertTreeLayout([('', root_id), ('a', 'a-id'), ('e', 'e-id'),
347
 
                               ('a/b', 'b-id'), ('a/c', 'c-id'),
 
346
        self.assertTreeLayout([('', root_id), ('a/', 'a-id'), ('e/', 'e-id'),
 
347
                               ('a/b', 'b-id'), ('a/c/', 'c-id'),
348
348
                               ('a/c/d', 'd-id')], tree.basis_tree())
349
349
 
350
350
    def test_rename_one_moved(self):
356
356
        root_id = tree.get_root_id()
357
357
 
358
358
        tree.rename_one('a/b', 'c/foo')
359
 
        self.assertTreeLayout([('', root_id), ('a', 'a-id'), ('c', 'c-id'),
 
359
        self.assertTreeLayout([('', root_id), ('a/', 'a-id'), ('c/', 'c-id'),
360
360
                               ('c/foo', 'b-id')], tree)
361
 
        self.assertTreeLayout([('', root_id), ('a', 'a-id'), ('c', 'c-id'),
 
361
        self.assertTreeLayout([('', root_id), ('a/', 'a-id'), ('c/', 'c-id'),
362
362
                               ('a/b', 'b-id')], tree.basis_tree())
363
363
 
364
364
        tree.rename_one('c/foo', 'bar')
365
 
        self.assertTreeLayout([('', root_id), ('a', 'a-id'), ('bar', 'b-id'),
366
 
                               ('c', 'c-id')], tree)
367
 
        self.assertTreeLayout([('', root_id), ('a', 'a-id'), ('c', 'c-id'),
 
365
        self.assertTreeLayout([('', root_id), ('a/', 'a-id'), ('bar', 'b-id'),
 
366
                               ('c/', 'c-id')], tree)
 
367
        self.assertTreeLayout([('', root_id), ('a/', 'a-id'), ('c/', 'c-id'),
368
368
                               ('a/b', 'b-id')], tree.basis_tree())
369
369
 
370
370
    def test_rename_to_denormalised_fails(self):