1
# Copyright (C) 2008 Canonical Ltd
1
# Copyright (C) 2008, 2009, 2010 Canonical Ltd
3
3
# This program is free software; you can redistribute it and/or modify
4
4
# it under the terms of the GNU General Public License as published by
108
108
creator.shelve_change(('rename', 'baz-id', 'foo/baz', 'bar/baz'))
109
109
self.check_shelve_move(creator, tree)
111
def test_shelve_changed_root_id(self):
112
tree = self.make_branch_and_tree('.')
113
self.build_tree(['foo'])
114
tree.set_root_id('first-root-id')
115
tree.add(['foo'], ['foo-id'])
117
tree.set_root_id('second-root-id')
118
tree.lock_tree_write()
119
self.addCleanup(tree.unlock)
120
creator = shelf.ShelfCreator(tree, tree.basis_tree())
121
self.addCleanup(creator.finalize)
122
self.expectFailure('shelf doesn\'t support shelving root changes yet',
124
('delete file', 'first-root-id', 'directory', ''),
125
('add file', 'second-root-id', 'directory', ''),
126
('rename', 'foo-id', u'foo', u'foo'),
127
], list(creator.iter_shelvable()))
129
self.assertEqual([('delete file', 'first-root-id', 'directory', ''),
130
('add file', 'second-root-id', 'directory', ''),
131
('rename', 'foo-id', u'foo', u'foo'),
132
], list(creator.iter_shelvable()))
111
134
def assertShelvedFileEqual(self, expected_content, creator, file_id):
112
135
s_trans_id = creator.shelf_transform.trans_id_file_id(file_id)
113
136
shelf_file = creator.shelf_transform._limbo_name(s_trans_id)
476
499
def test_shelve_skips_added_root(self):
477
500
"""Skip adds of the root when iterating through shelvable changes."""
478
501
tree = self.make_branch_and_tree('tree')
502
tree.lock_tree_write()
503
self.addCleanup(tree.unlock)
479
504
creator = shelf.ShelfCreator(tree, tree.basis_tree())
480
505
self.addCleanup(creator.finalize)
481
506
self.assertEqual([], list(creator.iter_shelvable()))
501
526
shelf_file.seek(0)
502
527
unshelver = shelf.Unshelver.from_tree_and_shelf(tree, shelf_file)
503
528
unshelver.make_merger().do_merge()
529
self.addCleanup(unshelver.finalize)
504
530
self.assertFileEqual('bar', 'tree/foo')
506
532
shelf_file.close()
524
550
self.build_tree_contents([('tree/foo', 'z\na\nb\nc\n')])
525
551
shelf_file.seek(0)
526
552
unshelver = shelf.Unshelver.from_tree_and_shelf(tree, shelf_file)
553
self.addCleanup(unshelver.finalize)
527
554
unshelver.make_merger().do_merge()
528
555
self.assertFileEqual('z\na\nb\nd\n', 'tree/foo')
552
579
self.assertFileEqual('baz', 'tree/foo/bar')
553
580
shelf_file.seek(0)
554
581
unshelver = shelf.Unshelver.from_tree_and_shelf(tree, shelf_file)
582
self.addCleanup(unshelver.finalize)
555
583
unshelver.make_merger().do_merge()
556
584
self.assertFalse('foo-id' in tree)
557
585
self.assertFalse('bar-id' in tree)
697
725
shelf_id = shelf_manager.shelve_changes(creator)
698
726
self.failIfExists('tree/foo')
699
727
unshelver = shelf_manager.get_unshelver(shelf_id)
728
self.addCleanup(unshelver.finalize)
700
729
unshelver.make_merger().do_merge()
701
730
self.assertFileEqual('bar', 'tree/foo')