~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/tests/test_log.py

  • Committer: Robey Pointer
  • Date: 2006-07-01 19:03:33 UTC
  • mfrom: (1829 +trunk)
  • mto: This revision was merged to the branch mainline in revision 1830.
  • Revision ID: robey@lag.net-20060701190333-f58465aec4bd3412
merge from bzr.dev

Show diffs side-by-side

added added

removed removed

Lines of Context:
20
20
from cStringIO import StringIO
21
21
 
22
22
from bzrlib.tests import BzrTestBase, TestCaseWithTransport
23
 
from bzrlib.log import (LogFormatter, show_log, LongLogFormatter,
24
 
                        ShortLogFormatter, LineLogFormatter)
 
23
from bzrlib.log import (show_log, 
 
24
                        get_view_revisions, 
 
25
                        LogFormatter, 
 
26
                        LongLogFormatter, 
 
27
                        ShortLogFormatter, 
 
28
                        LineLogFormatter)
25
29
from bzrlib.branch import Branch
26
30
from bzrlib.errors import InvalidRevisionNumber
27
31
 
301
305
        logfile.seek(0)
302
306
        log_contents = logfile.read()
303
307
        self.assertEqualDiff(log_contents, '1: Line-Log-Formatte... 2005-11-23 add a\n')
 
308
 
 
309
    def make_tree_with_commits(self):
 
310
        """Create a tree with well-known revision ids"""
 
311
        wt = self.make_branch_and_tree('tree1')
 
312
        wt.commit('commit one', rev_id='1')
 
313
        wt.commit('commit two', rev_id='2')
 
314
        wt.commit('commit three', rev_id='3')
 
315
        mainline_revs = [None, '1', '2', '3']
 
316
        rev_nos = {'1': 1, '2': 2, '3': 3}
 
317
        return mainline_revs, rev_nos, wt
 
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
    def make_tree_with_merges(self):
 
325
        """Create a tree with well-known revision ids and a merge"""
 
326
        mainline_revs, rev_nos, wt = self.make_tree_with_commits()
 
327
        tree2 = wt.bzrdir.sprout('tree2').open_workingtree()
 
328
        tree2.commit('four-a', rev_id='4a')
 
329
        self.pseudo_merge(tree2, wt)
 
330
        wt.commit('four-b', rev_id='4b')
 
331
        mainline_revs.append('4b')
 
332
        rev_nos['4b'] = 4
 
333
        return mainline_revs, rev_nos, wt
 
334
 
 
335
    def make_tree_with_many_merges(self):
 
336
        """Create a tree with well-known revision ids"""
 
337
        wt = self.make_branch_and_tree('tree1')
 
338
        wt.commit('commit one', rev_id='1')
 
339
        wt.commit('commit two', rev_id='2')
 
340
        tree2 = wt.bzrdir.sprout('tree2').open_workingtree()
 
341
        tree3 = wt.bzrdir.sprout('tree3').open_workingtree()
 
342
        tree3.commit('commit three a', rev_id='3a')
 
343
        self.pseudo_merge(tree3, tree2)
 
344
        tree2.commit('commit three b', rev_id='3b')
 
345
        self.pseudo_merge(tree2, wt)
 
346
        wt.commit('commit three c', rev_id='3c')
 
347
        tree2.commit('four-a', rev_id='4a')
 
348
        self.pseudo_merge(tree2, wt)
 
349
        wt.commit('four-b', rev_id='4b')
 
350
        mainline_revs = [None, '1', '2', '3c', '4b']
 
351
        rev_nos = {'1': 1, '2': 2, '3c': 3, '4b': 4}
 
352
        return mainline_revs, rev_nos, wt
 
353
 
 
354
    def test_get_view_revisions_forward(self):
 
355
        """Test the get_view_revisions method"""
 
356
        mainline_revs, rev_nos, wt = self.make_tree_with_commits()
 
357
        revisions = list(get_view_revisions(mainline_revs, rev_nos, wt.branch,
 
358
                                            'forward'))
 
359
        self.assertEqual(revisions, [('1', 1, 0), ('2', 2, 0), ('3', 3, 0)])
 
360
        revisions2 = list(get_view_revisions(mainline_revs, rev_nos, wt.branch,
 
361
                                             'forward', include_merges=False))
 
362
        self.assertEqual(revisions, revisions2)
 
363
 
 
364
    def test_get_view_revisions_reverse(self):
 
365
        """Test the get_view_revisions with reverse"""
 
366
        mainline_revs, rev_nos, wt = self.make_tree_with_commits()
 
367
        revisions = list(get_view_revisions(mainline_revs, rev_nos, wt.branch,
 
368
                                            'reverse'))
 
369
        self.assertEqual(revisions, [('3', 3, 0), ('2', 2, 0), ('1', 1, 0), ])
 
370
        revisions2 = list(get_view_revisions(mainline_revs, rev_nos, wt.branch,
 
371
                                             'reverse', include_merges=False))
 
372
        self.assertEqual(revisions, revisions2)
 
373
 
 
374
    def test_get_view_revisions_merge(self):
 
375
        """Test get_view_revisions when there are merges"""
 
376
        mainline_revs, rev_nos, wt = self.make_tree_with_merges()
 
377
        revisions = list(get_view_revisions(mainline_revs, rev_nos, wt.branch,
 
378
                                            'forward'))
 
379
        self.assertEqual(revisions, [('1', 1, 0), ('2', 2, 0), ('3', 3, 0),
 
380
                                     ('4b', 4, 0), ('4a', None, 1)])
 
381
        revisions = list(get_view_revisions(mainline_revs, rev_nos, wt.branch,
 
382
                                             'forward', include_merges=False))
 
383
        self.assertEqual(revisions, [('1', 1, 0), ('2', 2, 0), ('3', 3, 0),
 
384
                                     ('4b', 4, 0)])
 
385
 
 
386
    def test_get_view_revisions_merge_reverse(self):
 
387
        """Test get_view_revisions in reverse when there are merges"""
 
388
        mainline_revs, rev_nos, wt = self.make_tree_with_merges()
 
389
        revisions = list(get_view_revisions(mainline_revs, rev_nos, wt.branch,
 
390
                                            'reverse'))
 
391
        self.assertEqual(revisions, [('4b', 4, 0), ('4a', None, 1), 
 
392
                                     ('3', 3, 0), ('2', 2, 0), ('1', 1, 0)])
 
393
        revisions = list(get_view_revisions(mainline_revs, rev_nos, wt.branch,
 
394
                                             'reverse', include_merges=False))
 
395
        self.assertEqual(revisions, [('4b', 4, 0), ('3', 3, 0), ('2', 2, 0),
 
396
                                     ('1', 1, 0)])
 
397
 
 
398
    def test_get_view_revisions_merge2(self):
 
399
        """Test get_view_revisions when there are merges"""
 
400
        mainline_revs, rev_nos, wt = self.make_tree_with_many_merges()
 
401
        revisions = list(get_view_revisions(mainline_revs, rev_nos, wt.branch,
 
402
                                            '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)
 
406
        revisions = list(get_view_revisions(mainline_revs, rev_nos, wt.branch,
 
407
                                             'forward', include_merges=False))
 
408
        self.assertEqual(revisions, [('1', 1, 0), ('2', 2, 0), ('3c', 3, 0),
 
409
                                     ('4b', 4, 0)])