/brz/remove-bazaar

To get this branch, use:
bzr branch http://gegoxaren.bato24.eu/bzr/brz/remove-bazaar

« back to all changes in this revision

Viewing changes to bzrlib/tests/test_log.py

  • Committer: Martin Pool
  • Date: 2006-10-06 02:04:17 UTC
  • mfrom: (1908.10.1 bench_usecases.merge2)
  • mto: This revision was merged to the branch mainline in revision 2068.
  • Revision ID: mbp@sourcefrog.net-20061006020417-4949ca86f4417a4d
merge additional fix from cfbolz

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
1
# Copyright (C) 2005 by Canonical Ltd
2
 
 
 
2
# -*- coding: utf-8 -*-
 
3
# vim: encoding=utf-8
 
4
#
3
5
# This program is free software; you can redistribute it and/or modify
4
6
# it under the terms of the GNU General Public License as published by
5
7
# the Free Software Foundation; either version 2 of the License, or
6
8
# (at your option) any later version.
7
 
 
 
9
#
8
10
# This program is distributed in the hope that it will be useful,
9
11
# but WITHOUT ANY WARRANTY; without even the implied warranty of
10
12
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
11
13
# GNU General Public License for more details.
12
 
 
 
14
#
13
15
# You should have received a copy of the GNU General Public License
14
16
# along with this program; if not, write to the Free Software
15
17
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
18
20
from cStringIO import StringIO
19
21
 
20
22
from bzrlib.tests import BzrTestBase, TestCaseWithTransport
21
 
from bzrlib.log import LogFormatter, show_log, LongLogFormatter, ShortLogFormatter
 
23
from bzrlib.log import (show_log, 
 
24
                        get_view_revisions, 
 
25
                        LogFormatter, 
 
26
                        LongLogFormatter, 
 
27
                        ShortLogFormatter, 
 
28
                        LineLogFormatter)
22
29
from bzrlib.branch import Branch
23
30
from bzrlib.errors import InvalidRevisionNumber
24
31
 
 
32
 
25
33
class _LogEntry(object):
26
34
    # should probably move into bzrlib.log?
27
35
    pass
39
47
    def __init__(self):
40
48
        super(LogCatcher, self).__init__(to_file=None)
41
49
        self.logs = []
42
 
        
43
 
        
 
50
 
44
51
    def show(self, revno, rev, delta):
45
52
        le = _LogEntry()
46
53
        le.revno = revno
276
283
added:
277
284
  a
278
285
''')
 
286
 
 
287
    def test_line_log(self):
 
288
        """Line log should show revno
 
289
        
 
290
        bug #5162
 
291
        """
 
292
        wt = self.make_branch_and_tree('.')
 
293
        b = wt.branch
 
294
        self.build_tree(['a'])
 
295
        wt.add('a')
 
296
        b.nick = 'test-line-log'
 
297
        wt.commit(message='add a', 
 
298
                  timestamp=1132711707, 
 
299
                  timezone=36000,
 
300
                  committer='Line-Log-Formatter Tester <test@line.log>')
 
301
        logfile = file('out.tmp', 'w+')
 
302
        formatter = LineLogFormatter(to_file=logfile)
 
303
        show_log(b, formatter)
 
304
        logfile.flush()
 
305
        logfile.seek(0)
 
306
        log_contents = logfile.read()
 
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 make_tree_with_merges(self):
 
320
        """Create a tree with well-known revision ids and a merge"""
 
321
        mainline_revs, rev_nos, wt = self.make_tree_with_commits()
 
322
        tree2 = wt.bzrdir.sprout('tree2').open_workingtree()
 
323
        tree2.commit('four-a', rev_id='4a')
 
324
        wt.merge_from_branch(tree2.branch)
 
325
        wt.commit('four-b', rev_id='4b')
 
326
        mainline_revs.append('4b')
 
327
        rev_nos['4b'] = 4
 
328
        return mainline_revs, rev_nos, wt
 
329
 
 
330
    def make_tree_with_many_merges(self):
 
331
        """Create a tree with well-known revision ids"""
 
332
        wt = self.make_branch_and_tree('tree1')
 
333
        wt.commit('commit one', rev_id='1')
 
334
        wt.commit('commit two', rev_id='2')
 
335
        tree2 = wt.bzrdir.sprout('tree2').open_workingtree()
 
336
        tree3 = wt.bzrdir.sprout('tree3').open_workingtree()
 
337
        tree3.commit('commit three a', rev_id='3a')
 
338
        tree2.merge_from_branch(tree3.branch)
 
339
        tree2.commit('commit three b', rev_id='3b')
 
340
        wt.merge_from_branch(tree2.branch)
 
341
        wt.commit('commit three c', rev_id='3c')
 
342
        tree2.commit('four-a', rev_id='4a')
 
343
        wt.merge_from_branch(tree2.branch)
 
344
        wt.commit('four-b', rev_id='4b')
 
345
        mainline_revs = [None, '1', '2', '3c', '4b']
 
346
        rev_nos = {'1': 1, '2': 2, '3c': 3, '4b': 4}
 
347
        return mainline_revs, rev_nos, wt
 
348
 
 
349
    def test_get_view_revisions_forward(self):
 
350
        """Test the get_view_revisions method"""
 
351
        mainline_revs, rev_nos, wt = self.make_tree_with_commits()
 
352
        revisions = list(get_view_revisions(mainline_revs, rev_nos, wt.branch,
 
353
                                            'forward'))
 
354
        self.assertEqual(revisions, [('1', 1, 0), ('2', 2, 0), ('3', 3, 0)])
 
355
        revisions2 = list(get_view_revisions(mainline_revs, rev_nos, wt.branch,
 
356
                                             'forward', include_merges=False))
 
357
        self.assertEqual(revisions, revisions2)
 
358
 
 
359
    def test_get_view_revisions_reverse(self):
 
360
        """Test the get_view_revisions with reverse"""
 
361
        mainline_revs, rev_nos, wt = self.make_tree_with_commits()
 
362
        revisions = list(get_view_revisions(mainline_revs, rev_nos, wt.branch,
 
363
                                            'reverse'))
 
364
        self.assertEqual(revisions, [('3', 3, 0), ('2', 2, 0), ('1', 1, 0), ])
 
365
        revisions2 = list(get_view_revisions(mainline_revs, rev_nos, wt.branch,
 
366
                                             'reverse', include_merges=False))
 
367
        self.assertEqual(revisions, revisions2)
 
368
 
 
369
    def test_get_view_revisions_merge(self):
 
370
        """Test get_view_revisions when there are merges"""
 
371
        mainline_revs, rev_nos, wt = self.make_tree_with_merges()
 
372
        revisions = list(get_view_revisions(mainline_revs, rev_nos, wt.branch,
 
373
                                            'forward'))
 
374
        self.assertEqual(revisions, [('1', 1, 0), ('2', 2, 0), ('3', 3, 0),
 
375
                                     ('4b', 4, 0), ('4a', None, 1)])
 
376
        revisions = list(get_view_revisions(mainline_revs, rev_nos, wt.branch,
 
377
                                             'forward', include_merges=False))
 
378
        self.assertEqual(revisions, [('1', 1, 0), ('2', 2, 0), ('3', 3, 0),
 
379
                                     ('4b', 4, 0)])
 
380
 
 
381
    def test_get_view_revisions_merge_reverse(self):
 
382
        """Test get_view_revisions in reverse when there are merges"""
 
383
        mainline_revs, rev_nos, wt = self.make_tree_with_merges()
 
384
        revisions = list(get_view_revisions(mainline_revs, rev_nos, wt.branch,
 
385
                                            'reverse'))
 
386
        self.assertEqual(revisions, [('4b', 4, 0), ('4a', None, 1), 
 
387
                                     ('3', 3, 0), ('2', 2, 0), ('1', 1, 0)])
 
388
        revisions = list(get_view_revisions(mainline_revs, rev_nos, wt.branch,
 
389
                                             'reverse', include_merges=False))
 
390
        self.assertEqual(revisions, [('4b', 4, 0), ('3', 3, 0), ('2', 2, 0),
 
391
                                     ('1', 1, 0)])
 
392
 
 
393
    def test_get_view_revisions_merge2(self):
 
394
        """Test get_view_revisions when there are merges"""
 
395
        mainline_revs, rev_nos, wt = self.make_tree_with_many_merges()
 
396
        revisions = list(get_view_revisions(mainline_revs, rev_nos, wt.branch,
 
397
                                            'forward'))
 
398
        expected = [('1', 1, 0), ('2', 2, 0), ('3c', 3, 0), ('3a', None, 1),
 
399
                    ('3b', None, 1), ('4b', 4, 0), ('4a', None, 1)]
 
400
        self.assertEqual(revisions, expected)
 
401
        revisions = list(get_view_revisions(mainline_revs, rev_nos, wt.branch,
 
402
                                             'forward', include_merges=False))
 
403
        self.assertEqual(revisions, [('1', 1, 0), ('2', 2, 0), ('3c', 3, 0),
 
404
                                     ('4b', 4, 0)])