~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/tests/test_merge.py

  • Committer: Joe Julian
  • Date: 2010-01-10 02:25:31 UTC
  • mto: (4634.119.7 2.0)
  • mto: This revision was merged to the branch mainline in revision 4959.
  • Revision ID: joe@julianfamily.org-20100110022531-wqk61rsagz8xsiga
Added MANIFEST.in to allow bdist_rpm to have all the required include files and tools. bdist_rpm will still fail to build correctly on some distributions due to a disttools bug http://bugs.python.org/issue644744

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
 
1141
1143
                'X\n'
1142
1144
                'e\n', 'test/foo')
1143
1145
 
 
1146
    def get_limbodir_deletiondir(self, wt):
 
1147
        transform = TreeTransform(wt)
 
1148
        limbodir = transform._limbodir
 
1149
        deletiondir = transform._deletiondir
 
1150
        transform.finalize()
 
1151
        return (limbodir, deletiondir)
 
1152
    
 
1153
    def test_merge_with_existing_limbo(self):
 
1154
        wt = self.make_branch_and_tree('this')
 
1155
        (limbodir, deletiondir) =  self.get_limbodir_deletiondir(wt)
 
1156
        os.mkdir(limbodir)
 
1157
        self.assertRaises(errors.ExistingLimbo, self.do_merge, wt, wt)
 
1158
        self.assertRaises(errors.LockError, wt.unlock)
 
1159
 
 
1160
    def test_merge_with_pending_deletion(self):
 
1161
        wt = self.make_branch_and_tree('this')
 
1162
        (limbodir, deletiondir) =  self.get_limbodir_deletiondir(wt)
 
1163
        os.mkdir(deletiondir)
 
1164
        self.assertRaises(errors.ExistingPendingDeletion, self.do_merge, wt, wt)
 
1165
        self.assertRaises(errors.LockError, wt.unlock)
 
1166
 
1144
1167
 
1145
1168
class TestMerge3Merge(TestCaseWithTransport, TestMergeImplementation):
1146
1169
 
1232
1255
 
1233
1256
class TestMergerInMemory(TestMergerBase):
1234
1257
 
 
1258
    def test_cache_trees_with_revision_ids_None(self):
 
1259
        merger = self.make_Merger(self.setup_simple_graph(), 'C-id')
 
1260
        original_cache = dict(merger._cached_trees)
 
1261
        merger.cache_trees_with_revision_ids([None])
 
1262
        self.assertEqual(original_cache, merger._cached_trees)
 
1263
 
 
1264
    def test_cache_trees_with_revision_ids_no_revision_id(self):
 
1265
        merger = self.make_Merger(self.setup_simple_graph(), 'C-id')
 
1266
        original_cache = dict(merger._cached_trees)
 
1267
        tree = self.make_branch_and_memory_tree('tree')
 
1268
        merger.cache_trees_with_revision_ids([tree])
 
1269
        self.assertEqual(original_cache, merger._cached_trees)
 
1270
 
 
1271
    def test_cache_trees_with_revision_ids_having_revision_id(self):
 
1272
        merger = self.make_Merger(self.setup_simple_graph(), 'C-id')
 
1273
        original_cache = dict(merger._cached_trees)
 
1274
        tree = merger.this_branch.repository.revision_tree('B-id')
 
1275
        original_cache['B-id'] = tree
 
1276
        merger.cache_trees_with_revision_ids([tree])
 
1277
        self.assertEqual(original_cache, merger._cached_trees)
 
1278
 
1235
1279
    def test_find_base(self):
1236
1280
        merger = self.make_Merger(self.setup_simple_graph(), 'C-id')
1237
1281
        self.assertEqual('A-id', merger.base_rev_id)