191
194
s_trans_id = creator.shelf_transform.trans_id_file_id('foo-id')
192
195
self.assertEqual('foo-id',
193
196
creator.shelf_transform.final_file_id(s_trans_id))
194
self.failIfExists('foo')
195
self.failIfExists('bar')
197
self.assertPathDoesNotExist('foo')
198
self.assertPathDoesNotExist('bar')
196
199
self.assertShelvedFileEqual('a\n', creator, 'foo-id')
197
200
s_bar_trans_id = creator.shelf_transform.trans_id_file_id('bar-id')
198
201
self.assertEqual('directory',
215
218
def _test_shelve_symlink_creation(self, link_name, link_target,
216
219
shelve_change=False):
217
self.requireFeature(tests.SymlinkFeature)
220
self.requireFeature(features.SymlinkFeature)
218
221
tree = self.make_branch_and_tree('.')
219
222
tree.lock_write()
220
223
self.addCleanup(tree.unlock)
231
234
creator.shelve_creation('foo-id')
232
235
creator.transform()
233
236
s_trans_id = creator.shelf_transform.trans_id_file_id('foo-id')
234
self.failIfExists(link_name)
237
self.assertPathDoesNotExist(link_name)
235
238
limbo_name = creator.shelf_transform._limbo_name(s_trans_id)
236
239
self.assertEqual(link_target, osutils.readlink(limbo_name))
237
240
ptree = creator.shelf_transform.get_preview_tree()
241
244
self._test_shelve_symlink_creation('foo', 'bar')
243
246
def test_shelve_unicode_symlink_creation(self):
244
self.requireFeature(tests.UnicodeFilenameFeature)
247
self.requireFeature(features.UnicodeFilenameFeature)
245
248
self._test_shelve_symlink_creation(u'fo\N{Euro Sign}o',
246
249
u'b\N{Euro Sign}ar')
251
254
def _test_shelve_symlink_target_change(self, link_name,
252
255
old_target, new_target,
253
256
shelve_change=False):
254
self.requireFeature(tests.SymlinkFeature)
257
self.requireFeature(features.SymlinkFeature)
255
258
tree = self.make_branch_and_tree('.')
256
259
tree.lock_write()
257
260
self.addCleanup(tree.unlock)
282
285
self._test_shelve_symlink_target_change('foo', 'bar', 'baz')
284
287
def test_shelve_unicode_symlink_target_change(self):
285
self.requireFeature(tests.UnicodeFilenameFeature)
288
self.requireFeature(features.UnicodeFilenameFeature)
286
289
self._test_shelve_symlink_target_change(
287
290
u'fo\N{Euro Sign}o', u'b\N{Euro Sign}ar', u'b\N{Euro Sign}az')
310
313
s_trans_id = creator.shelf_transform.trans_id_file_id('foo-id')
311
314
self.assertEqual('foo-id',
312
315
creator.shelf_transform.final_file_id(s_trans_id))
313
self.failIfExists('foo')
316
self.assertPathDoesNotExist('foo')
315
318
def prepare_shelve_deletion(self):
316
319
tree = self.make_branch_and_tree('tree')
330
333
return creator, tree
332
335
def check_shelve_deletion(self, tree):
333
self.assertTrue('foo-id' in tree)
334
self.assertTrue('bar-id' in tree)
336
self.assertTrue(tree.has_id('foo-id'))
337
self.assertTrue(tree.has_id('bar-id'))
335
338
self.assertFileEqual('baz', 'tree/foo/bar')
337
340
def test_shelve_deletion(self):
362
365
sorted(list(creator.iter_shelvable())))
363
366
creator.shelve_deletion('foo-id')
364
367
creator.transform()
365
self.failUnlessExists('tree/foo')
368
self.assertPathExists('tree/foo')
367
370
def prepare_shelve_change_kind(self):
368
371
tree = self.make_branch_and_tree('tree')
421
424
sorted(list(creator.iter_shelvable())))
422
425
creator.shelve_deletion('foo-id')
423
426
creator.transform()
424
self.failUnlessExists('tree/foo')
427
self.assertPathExists('tree/foo')
426
429
def test_shelve_serialization(self):
427
430
tree = self.make_branch_and_tree('.')
568
571
list(creator.iter_shelvable())
569
572
creator.shelve_deletion('foo-id')
570
573
creator.shelve_deletion('bar-id')
571
shelf_file = open('shelf', 'w+b')
572
self.addCleanup(shelf_file.close)
573
creator.write_shelf(shelf_file)
574
with open('shelf', 'w+b') as shelf_file:
575
creator.write_shelf(shelf_file)
576
578
# validate the test setup
577
self.assertTrue('foo-id' in tree)
578
self.assertTrue('bar-id' in tree)
579
self.assertTrue(tree.has_id('foo-id'))
580
self.assertTrue(tree.has_id('bar-id'))
579
581
self.assertFileEqual('baz', 'tree/foo/bar')
581
unshelver = shelf.Unshelver.from_tree_and_shelf(tree, shelf_file)
582
self.addCleanup(unshelver.finalize)
583
unshelver.make_merger().do_merge()
584
self.assertFalse('foo-id' in tree)
585
self.assertFalse('bar-id' in tree)
582
with open('shelf', 'r+b') as shelf_file:
583
unshelver = shelf.Unshelver.from_tree_and_shelf(tree, shelf_file)
584
self.addCleanup(unshelver.finalize)
585
unshelver.make_merger().do_merge()
586
self.assertFalse(tree.has_id('foo-id'))
587
self.assertFalse(tree.has_id('bar-id'))
587
589
def test_unshelve_base(self):
588
590
tree = self.make_branch_and_tree('tree')
636
638
creator.shelve_change(change)
637
639
shelf_manager = tree.get_shelf_manager()
638
640
shelf_id = shelf_manager.shelve_changes(creator)
639
self.failIfExists('dir/subdir')
641
self.assertPathDoesNotExist('dir/subdir')
640
642
tree.remove(['dir'])
641
643
unshelver = shelf_manager.get_unshelver(shelf_id)
642
644
self.addCleanup(unshelver.finalize)
643
645
unshelver.make_merger().do_merge()
644
self.failUnlessExists('dir/subdir/foo')
646
self.assertPathExists('dir/subdir/foo')
645
647
self.assertEqual('dir-id', tree.path2id('dir'))
646
648
self.assertEqual('subdir-id', tree.path2id('dir/subdir'))
647
649
self.assertEqual('foo-id', tree.path2id('dir/subdir/foo'))
746
748
creator.shelve_creation('foo-id')
747
749
shelf_manager = tree.get_shelf_manager()
748
750
shelf_id = shelf_manager.shelve_changes(creator)
749
self.failIfExists('tree/foo')
751
self.assertPathDoesNotExist('tree/foo')
750
752
unshelver = shelf_manager.get_unshelver(shelf_id)
751
753
self.addCleanup(unshelver.finalize)
752
754
unshelver.make_merger().do_merge()