~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/tests/test_log.py

  • Committer: Canonical.com Patch Queue Manager
  • Date: 2009-08-17 21:06:55 UTC
  • mfrom: (4615.1.3 2.0b1-merge-sort)
  • Revision ID: pqm@pqm.ubuntu.com-20090817210655-w8d1xxic3wi6gs61
(jam) Tweak how merge_sort handles right parents when the left parent
        is already processed.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1197
1197
        # 4a: 3.1.1
1198
1198
        return mainline_revs, rev_nos, wt
1199
1199
 
1200
 
    def make_tree_with_many_merges(self):
 
1200
    def make_branch_with_many_merges(self):
1201
1201
        """Create a tree with well-known revision ids"""
1202
 
        wt = self.make_branch_and_tree('tree1')
1203
 
        self.build_tree_contents([('tree1/f', '1\n')])
1204
 
        wt.add(['f'], ['f-id'])
1205
 
        wt.commit('commit one', rev_id='1')
1206
 
        wt.commit('commit two', rev_id='2')
1207
 
 
1208
 
        tree3 = wt.bzrdir.sprout('tree3').open_workingtree()
1209
 
        self.build_tree_contents([('tree3/f', '1\n2\n3a\n')])
1210
 
        tree3.commit('commit three a', rev_id='3a')
1211
 
 
1212
 
        tree2 = wt.bzrdir.sprout('tree2').open_workingtree()
1213
 
        tree2.merge_from_branch(tree3.branch)
1214
 
        tree2.commit('commit three b', rev_id='3b')
1215
 
 
1216
 
        wt.merge_from_branch(tree2.branch)
1217
 
        wt.commit('commit three c', rev_id='3c')
1218
 
        tree2.commit('four-a', rev_id='4a')
1219
 
 
1220
 
        wt.merge_from_branch(tree2.branch)
1221
 
        wt.commit('four-b', rev_id='4b')
 
1202
        builder = self.make_branch_builder('tree1')
 
1203
        builder.start_series()
 
1204
        builder.build_snapshot('1', None, [
 
1205
            ('add', ('', 'TREE_ROOT', 'directory', '')),
 
1206
            ('add', ('f', 'f-id', 'file', '1\n'))])
 
1207
        builder.build_snapshot('2', ['1'], [])
 
1208
        builder.build_snapshot('3a', ['2'], [
 
1209
            ('modify', ('f-id', '1\n2\n3a\n'))])
 
1210
        builder.build_snapshot('3b', ['2', '3a'], [
 
1211
            ('modify', ('f-id', '1\n2\n3a\n'))])
 
1212
        builder.build_snapshot('3c', ['2', '3b'], [
 
1213
            ('modify', ('f-id', '1\n2\n3a\n'))])
 
1214
        builder.build_snapshot('4a', ['3b'], [])
 
1215
        builder.build_snapshot('4b', ['3c', '4a'], [])
 
1216
        builder.finish_series()
 
1217
 
 
1218
        # 1
 
1219
        # |
 
1220
        # 2-.
 
1221
        # |\ \
 
1222
        # | | 3a
 
1223
        # | |/
 
1224
        # | 3b
 
1225
        # |/|
 
1226
        # 3c4a
 
1227
        # |/
 
1228
        # 4b
1222
1229
 
1223
1230
        mainline_revs = [None, '1', '2', '3c', '4b']
1224
1231
        rev_nos = {'1':1, '2':2, '3c': 3, '4b':4}
1231
1238
            '4a': '2.2.2', # second commit tree 2
1232
1239
            '4b': '4', # merges 4a to main
1233
1240
            }
1234
 
        return mainline_revs, rev_nos, wt
 
1241
        return mainline_revs, rev_nos, builder.get_branch()
1235
1242
 
1236
1243
    def test_get_view_revisions_forward(self):
1237
1244
        """Test the get_view_revisions method"""
1297
1304
 
1298
1305
    def test_get_view_revisions_merge2(self):
1299
1306
        """Test get_view_revisions when there are merges"""
1300
 
        mainline_revs, rev_nos, wt = self.make_tree_with_many_merges()
1301
 
        wt.lock_read()
1302
 
        self.addCleanup(wt.unlock)
 
1307
        mainline_revs, rev_nos, b = self.make_branch_with_many_merges()
 
1308
        b.lock_read()
 
1309
        self.addCleanup(b.unlock)
1303
1310
        revisions = list(log.get_view_revisions(
1304
 
                mainline_revs, rev_nos, wt.branch, 'forward'))
 
1311
                mainline_revs, rev_nos, b, 'forward'))
1305
1312
        expected = [('1', '1', 0), ('2', '2', 0), ('3c', '3', 0),
1306
 
                    ('3a', '2.1.1', 1), ('3b', '2.2.1', 1), ('4b', '4', 0),
 
1313
                    ('3b', '2.2.1', 1), ('3a', '2.1.1', 2), ('4b', '4', 0),
1307
1314
                    ('4a', '2.2.2', 1)]
1308
1315
        self.assertEqual(expected, revisions)
1309
1316
        revisions = list(log.get_view_revisions(
1310
 
                mainline_revs, rev_nos, wt.branch, 'forward',
 
1317
                mainline_revs, rev_nos, b, 'forward',
1311
1318
                include_merges=False))
1312
1319
        self.assertEqual([('1', '1', 0), ('2', '2', 0), ('3c', '3', 0),
1313
1320
                          ('4b', '4', 0)],
1315
1322
 
1316
1323
 
1317
1324
    def test_file_id_for_range(self):
1318
 
        mainline_revs, rev_nos, wt = self.make_tree_with_many_merges()
1319
 
        wt.lock_read()
1320
 
        self.addCleanup(wt.unlock)
 
1325
        mainline_revs, rev_nos, b = self.make_branch_with_many_merges()
 
1326
        b.lock_read()
 
1327
        self.addCleanup(b.unlock)
1321
1328
 
1322
1329
        def rev_from_rev_id(revid, branch):
1323
1330
            revspec = revisionspec.RevisionSpec.from_string('revid:%s' % revid)
1325
1332
 
1326
1333
        def view_revs(start_rev, end_rev, file_id, direction):
1327
1334
            revs = log.calculate_view_revisions(
1328
 
                wt.branch,
 
1335
                b,
1329
1336
                start_rev, # start_revision
1330
1337
                end_rev, # end_revision
1331
1338
                direction, # direction
1334
1341
                )
1335
1342
            return revs
1336
1343
 
1337
 
        rev_3a = rev_from_rev_id('3a', wt.branch)
1338
 
        rev_4b = rev_from_rev_id('4b', wt.branch)
1339
 
        self.assertEqual([('3c', '3', 0), ('3a', '2.1.1', 1)],
 
1344
        rev_3a = rev_from_rev_id('3a', b)
 
1345
        rev_4b = rev_from_rev_id('4b', b)
 
1346
        self.assertEqual([('3c', '3', 0), ('3b', '2.2.1', 1), ('3a', '2.1.1', 2)],
1340
1347
                          view_revs(rev_3a, rev_4b, 'f-id', 'reverse'))
1341
1348
        # Note: 3c still appears before 3a here because of depth-based sorting
1342
 
        self.assertEqual([('3c', '3', 0), ('3a', '2.1.1', 1)],
 
1349
        self.assertEqual([('3c', '3', 0), ('3b', '2.2.1', 1), ('3a', '2.1.1', 2)],
1343
1350
                          view_revs(rev_3a, rev_4b, 'f-id', 'forward'))
1344
1351
 
1345
1352