~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/tests/test_merge.py

  • Committer: Martin Pool
  • Date: 2009-09-14 01:48:28 UTC
  • mfrom: (4685 +trunk)
  • mto: This revision was merged to the branch mainline in revision 4688.
  • Revision ID: mbp@sourcefrog.net-20090914014828-ydr9rlkdfq2sv57z
Merge news

Show diffs side-by-side

added added

removed removed

Lines of Context:
36
36
from bzrlib.osutils import pathjoin, file_kind
37
37
from bzrlib.tests import TestCaseWithTransport, TestCaseWithMemoryTransport
38
38
from bzrlib.workingtree import WorkingTree
39
 
 
 
39
from bzrlib.transform import TreeTransform
40
40
 
41
41
class TestMerge(TestCaseWithTransport):
42
42
    """Test appending more than one revision"""
218
218
        tree_a.add('file')
219
219
        tree_a.commit('commit base')
220
220
        # basis_tree() is only guaranteed to be valid as long as it is actually
221
 
        # the basis tree. This mutates the tree after grabbing basis, so go to
222
 
        # the repository.
 
221
        # the basis tree. This test commits to the tree after grabbing basis,
 
222
        # so we go to the repository.
223
223
        base_tree = tree_a.branch.repository.revision_tree(tree_a.last_revision())
224
224
        tree_b = tree_a.bzrdir.sprout('tree_b').open_workingtree()
225
225
        self.build_tree_contents([('tree_a/file', 'content_2')])
226
226
        tree_a.commit('commit other')
227
227
        other_tree = tree_a.basis_tree()
 
228
        # 'file' is now missing but isn't altered in any commit in b so no
 
229
        # change should be applied.
228
230
        os.unlink('tree_b/file')
229
231
        merge_inner(tree_b.branch, other_tree, base_tree, this_tree=tree_b)
230
232
 
282
284
        except AttributeError:
283
285
            self.fail('tried to join a path when name was None')
284
286
 
285
 
    def test_merge_uncommitted_otherbasis_ancestor_of_thisbasis(self):
 
287
 
 
288
    def test_merge_existing_limbo_or_pending_deletion(self):
286
289
        tree_a = self.make_branch_and_tree('a')
287
290
        self.build_tree(['a/file_1', 'a/file_2'])
288
291
        tree_a.add(['file_1'])
1141
1144
                'X\n'
1142
1145
                'e\n', 'test/foo')
1143
1146
 
 
1147
    def get_limbodir_deletiondir(self, wt):
 
1148
        transform = TreeTransform(wt)
 
1149
        limbodir = transform._limbodir
 
1150
        deletiondir = transform._deletiondir
 
1151
        transform.finalize()
 
1152
        return (limbodir, deletiondir)
 
1153
    
 
1154
    def test_merge_with_existing_limbo(self):
 
1155
        wt = self.make_branch_and_tree('this')
 
1156
        (limbodir, deletiondir) =  self.get_limbodir_deletiondir(wt)
 
1157
        os.mkdir(limbodir)
 
1158
        self.assertRaises(errors.ExistingLimbo, self.do_merge, wt, wt)
 
1159
        self.assertRaises(errors.LockError, wt.unlock)
 
1160
 
 
1161
    def test_merge_with_pending_deletion(self):
 
1162
        wt = self.make_branch_and_tree('this')
 
1163
        (limbodir, deletiondir) =  self.get_limbodir_deletiondir(wt)
 
1164
        os.mkdir(deletiondir)
 
1165
        self.assertRaises(errors.ExistingPendingDeletion, self.do_merge, wt, wt)
 
1166
        self.assertRaises(errors.LockError, wt.unlock)
 
1167
 
1144
1168
 
1145
1169
class TestMerge3Merge(TestCaseWithTransport, TestMergeImplementation):
1146
1170
 
1232
1256
 
1233
1257
class TestMergerInMemory(TestMergerBase):
1234
1258
 
 
1259
    def test_cache_trees_with_revision_ids_None(self):
 
1260
        merger = self.make_Merger(self.setup_simple_graph(), 'C-id')
 
1261
        original_cache = dict(merger._cached_trees)
 
1262
        merger.cache_trees_with_revision_ids([None])
 
1263
        self.assertEqual(original_cache, merger._cached_trees)
 
1264
 
 
1265
    def test_cache_trees_with_revision_ids_no_revision_id(self):
 
1266
        merger = self.make_Merger(self.setup_simple_graph(), 'C-id')
 
1267
        original_cache = dict(merger._cached_trees)
 
1268
        tree = self.make_branch_and_memory_tree('tree')
 
1269
        merger.cache_trees_with_revision_ids([tree])
 
1270
        self.assertEqual(original_cache, merger._cached_trees)
 
1271
 
 
1272
    def test_cache_trees_with_revision_ids_having_revision_id(self):
 
1273
        merger = self.make_Merger(self.setup_simple_graph(), 'C-id')
 
1274
        original_cache = dict(merger._cached_trees)
 
1275
        tree = merger.this_branch.repository.revision_tree('B-id')
 
1276
        original_cache['B-id'] = tree
 
1277
        merger.cache_trees_with_revision_ids([tree])
 
1278
        self.assertEqual(original_cache, merger._cached_trees)
 
1279
 
1235
1280
    def test_find_base(self):
1236
1281
        merger = self.make_Merger(self.setup_simple_graph(), 'C-id')
1237
1282
        self.assertEqual('A-id', merger.base_rev_id)