~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/tests/test_log.py

  • Committer: wang
  • Date: 2006-10-29 13:41:32 UTC
  • mto: (2104.4.1 wang_65714)
  • mto: This revision was merged to the branch mainline in revision 2109.
  • Revision ID: wang@ubuntu-20061029134132-3d7f4216f20c4aef
Replace python's difflib by patiencediff because the worst case 
performance is cubic for difflib and people commiting large data 
files are often hurt by this. The worst case performance of patience is 
quadratic. Fix bug 65714.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
# Copyright (C) 2005 by Canonical Ltd
 
1
# Copyright (C) 2005 Canonical Ltd
2
2
# -*- coding: utf-8 -*-
3
3
# vim: encoding=utf-8
4
4
#
126
126
        lf = LogCatcher()
127
127
        show_log(b, lf, verbose=True)
128
128
        eq(len(lf.logs), 1)
129
 
        eq(lf.logs[0].revno, 1)
 
129
        eq(lf.logs[0].revno, '1')
130
130
        eq(lf.logs[0].rev.message, 'empty commit')
131
131
        d = lf.logs[0].delta
132
132
        self.log('log delta: %r' % d)
149
149
        eq(len(lf.logs), 2)
150
150
        self.log('log entries:')
151
151
        for logentry in lf.logs:
152
 
            self.log('%4d %s' % (logentry.revno, logentry.rev.message))
 
152
            self.log('%4s %s' % (logentry.revno, logentry.rev.message))
153
153
        
154
154
        # first one is most recent
155
155
        logentry = lf.logs[0]
156
 
        eq(logentry.revno, 2)
 
156
        eq(logentry.revno, '2')
157
157
        eq(logentry.rev.message, 'add one file')
158
158
        d = logentry.delta
159
159
        self.log('log 2 delta: %r' % d)
316
316
        rev_nos = {'1': 1, '2': 2, '3': 3}
317
317
        return mainline_revs, rev_nos, wt
318
318
 
319
 
    def pseudo_merge(self, source, target):
320
 
        revision_id = source.last_revision()
321
 
        target.branch.fetch(source.branch, revision_id)
322
 
        target.add_pending_merge(revision_id)
323
 
 
324
319
    def make_tree_with_merges(self):
325
320
        """Create a tree with well-known revision ids and a merge"""
326
321
        mainline_revs, rev_nos, wt = self.make_tree_with_commits()
327
322
        tree2 = wt.bzrdir.sprout('tree2').open_workingtree()
328
323
        tree2.commit('four-a', rev_id='4a')
329
 
        self.pseudo_merge(tree2, wt)
 
324
        wt.merge_from_branch(tree2.branch)
330
325
        wt.commit('four-b', rev_id='4b')
331
326
        mainline_revs.append('4b')
332
327
        rev_nos['4b'] = 4
 
328
        # 4a: 3.1.1
333
329
        return mainline_revs, rev_nos, wt
334
330
 
335
331
    def make_tree_with_many_merges(self):
337
333
        wt = self.make_branch_and_tree('tree1')
338
334
        wt.commit('commit one', rev_id='1')
339
335
        wt.commit('commit two', rev_id='2')
340
 
        tree2 = wt.bzrdir.sprout('tree2').open_workingtree()
341
336
        tree3 = wt.bzrdir.sprout('tree3').open_workingtree()
342
337
        tree3.commit('commit three a', rev_id='3a')
343
 
        self.pseudo_merge(tree3, tree2)
 
338
        tree2 = wt.bzrdir.sprout('tree2').open_workingtree()
 
339
        tree2.merge_from_branch(tree3.branch)
344
340
        tree2.commit('commit three b', rev_id='3b')
345
 
        self.pseudo_merge(tree2, wt)
 
341
        wt.merge_from_branch(tree2.branch)
346
342
        wt.commit('commit three c', rev_id='3c')
347
343
        tree2.commit('four-a', rev_id='4a')
348
 
        self.pseudo_merge(tree2, wt)
 
344
        wt.merge_from_branch(tree2.branch)
349
345
        wt.commit('four-b', rev_id='4b')
350
346
        mainline_revs = [None, '1', '2', '3c', '4b']
351
 
        rev_nos = {'1': 1, '2': 2, '3c': 3, '4b': 4}
 
347
        rev_nos = {'1':1, '2':2, '3c': 3, '4b':4}
 
348
        full_rev_nos_for_reference = {
 
349
            '1': '1',
 
350
            '2': '2',
 
351
            '3a': '2.2.1', #first commit tree 3
 
352
            '3b': '2.1.1', # first commit tree 2
 
353
            '3c': '3', #merges 3b to main
 
354
            '4a': '2.1.2', # second commit tree 2
 
355
            '4b': '4', # merges 4a to main
 
356
            }
352
357
        return mainline_revs, rev_nos, wt
353
358
 
354
359
    def test_get_view_revisions_forward(self):
356
361
        mainline_revs, rev_nos, wt = self.make_tree_with_commits()
357
362
        revisions = list(get_view_revisions(mainline_revs, rev_nos, wt.branch,
358
363
                                            'forward'))
359
 
        self.assertEqual(revisions, [('1', 1, 0), ('2', 2, 0), ('3', 3, 0)])
 
364
        self.assertEqual([('1', '1', 0), ('2', '2', 0), ('3', '3', 0)],
 
365
            revisions)
360
366
        revisions2 = list(get_view_revisions(mainline_revs, rev_nos, wt.branch,
361
367
                                             'forward', include_merges=False))
362
368
        self.assertEqual(revisions, revisions2)
366
372
        mainline_revs, rev_nos, wt = self.make_tree_with_commits()
367
373
        revisions = list(get_view_revisions(mainline_revs, rev_nos, wt.branch,
368
374
                                            'reverse'))
369
 
        self.assertEqual(revisions, [('3', 3, 0), ('2', 2, 0), ('1', 1, 0), ])
 
375
        self.assertEqual([('3', '3', 0), ('2', '2', 0), ('1', '1', 0), ],
 
376
            revisions)
370
377
        revisions2 = list(get_view_revisions(mainline_revs, rev_nos, wt.branch,
371
378
                                             'reverse', include_merges=False))
372
379
        self.assertEqual(revisions, revisions2)
376
383
        mainline_revs, rev_nos, wt = self.make_tree_with_merges()
377
384
        revisions = list(get_view_revisions(mainline_revs, rev_nos, wt.branch,
378
385
                                            'forward'))
379
 
        self.assertEqual(revisions, [('1', 1, 0), ('2', 2, 0), ('3', 3, 0),
380
 
                                     ('4b', 4, 0), ('4a', None, 1)])
 
386
        self.assertEqual([('1', '1', 0), ('2', '2', 0), ('3', '3', 0),
 
387
            ('4b', '4', 0), ('4a', '3.1.1', 1)],
 
388
            revisions)
381
389
        revisions = list(get_view_revisions(mainline_revs, rev_nos, wt.branch,
382
390
                                             'forward', include_merges=False))
383
 
        self.assertEqual(revisions, [('1', 1, 0), ('2', 2, 0), ('3', 3, 0),
384
 
                                     ('4b', 4, 0)])
 
391
        self.assertEqual([('1', '1', 0), ('2', '2', 0), ('3', '3', 0),
 
392
            ('4b', '4', 0)],
 
393
            revisions)
385
394
 
386
395
    def test_get_view_revisions_merge_reverse(self):
387
396
        """Test get_view_revisions in reverse when there are merges"""
388
397
        mainline_revs, rev_nos, wt = self.make_tree_with_merges()
389
398
        revisions = list(get_view_revisions(mainline_revs, rev_nos, wt.branch,
390
399
                                            'reverse'))
391
 
        self.assertEqual(revisions, [('4b', 4, 0), ('4a', None, 1), 
392
 
                                     ('3', 3, 0), ('2', 2, 0), ('1', 1, 0)])
 
400
        self.assertEqual([('4b', '4', 0), ('4a', '3.1.1', 1),
 
401
            ('3', '3', 0), ('2', '2', 0), ('1', '1', 0)],
 
402
            revisions)
393
403
        revisions = list(get_view_revisions(mainline_revs, rev_nos, wt.branch,
394
404
                                             'reverse', include_merges=False))
395
 
        self.assertEqual(revisions, [('4b', 4, 0), ('3', 3, 0), ('2', 2, 0),
396
 
                                     ('1', 1, 0)])
 
405
        self.assertEqual([('4b', '4', 0), ('3', '3', 0), ('2', '2', 0),
 
406
            ('1', '1', 0)],
 
407
            revisions)
397
408
 
398
409
    def test_get_view_revisions_merge2(self):
399
410
        """Test get_view_revisions when there are merges"""
400
411
        mainline_revs, rev_nos, wt = self.make_tree_with_many_merges()
401
412
        revisions = list(get_view_revisions(mainline_revs, rev_nos, wt.branch,
402
413
                                            'forward'))
403
 
        expected = [('1', 1, 0), ('2', 2, 0), ('3c', 3, 0), ('3a', None, 1),
404
 
                    ('3b', None, 1), ('4b', 4, 0), ('4a', None, 1)]
405
 
        self.assertEqual(revisions, expected)
 
414
        expected = [('1', '1', 0), ('2', '2', 0), ('3c', '3', 0),
 
415
            ('3a', '2.2.1', 1), ('3b', '2.1.1', 1), ('4b', '4', 0),
 
416
            ('4a', '2.1.2', 1)]
 
417
        self.assertEqual(expected, revisions)
406
418
        revisions = list(get_view_revisions(mainline_revs, rev_nos, wt.branch,
407
419
                                             'forward', include_merges=False))
408
 
        self.assertEqual(revisions, [('1', 1, 0), ('2', 2, 0), ('3c', 3, 0),
409
 
                                     ('4b', 4, 0)])
 
420
        self.assertEqual([('1', '1', 0), ('2', '2', 0), ('3c', '3', 0),
 
421
            ('4b', '4', 0)],
 
422
            revisions)