~bzr-pqm/bzr/bzr.dev

1185.5.4 by John Arbash Meinel
Updated bzr revision-info, created tests.
1
# Copyright (C) 2004, 2005 by Canonical Ltd
2
3
# This program is free software; you can redistribute it and/or modify
4
# it under the terms of the GNU General Public License as published by
5
# the Free Software Foundation; either version 2 of the License, or
6
# (at your option) any later version.
7
8
# This program is distributed in the hope that it will be useful,
9
# but WITHOUT ANY WARRANTY; without even the implied warranty of
10
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
11
# GNU General Public License for more details.
12
13
# You should have received a copy of the GNU General Public License
14
# along with this program; if not, write to the Free Software
15
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
16
17
import os
1185.31.25 by John Arbash Meinel
Renamed all of the tests from selftest/foo.py to tests/test_foo.py
18
from bzrlib.tests import TestCaseInTempDir
1185.5.4 by John Arbash Meinel
Updated bzr revision-info, created tests.
19
from bzrlib.errors import BzrCommandError, NoSuchRevision
20
from bzrlib.branch import Branch
21
from bzrlib.revisionspec import RevisionSpec
22
23
class TestRevisionInfo(TestCaseInTempDir):
1185.1.29 by Robert Collins
merge merge tweaks from aaron, which includes latest .dev
24
    
25
    def check_error(self, output, *args):
26
        """Verify that the expected error matches what bzr says.
27
        
28
        The output is supplied first, so that you can supply a variable
29
        number of arguments to bzr.
30
        """
1185.33.27 by Martin Pool
[merge] much integrated work from robert and john
31
        self.assertContainsRe(self.run_bzr_captured(args, retcode=3)[1], output)
1185.1.29 by Robert Collins
merge merge tweaks from aaron, which includes latest .dev
32
33
    def check_output(self, output, *args):
34
        """Verify that the expected output matches what bzr says.
35
        
36
        The output is supplied first, so that you can supply a variable
37
        number of arguments to bzr.
38
        """
39
        self.assertEquals(self.run_bzr_captured(args)[0], output)
40
1185.5.4 by John Arbash Meinel
Updated bzr revision-info, created tests.
41
    def test_revision_info(self):
42
        """Test that 'bzr revision-info' reports the correct thing.
43
        """
44
1185.33.66 by Martin Pool
[patch] use unicode literals for all hardcoded paths (Alexander Belchenko)
45
        b = Branch.initialize(u'.')
1185.5.4 by John Arbash Meinel
Updated bzr revision-info, created tests.
46
1457.1.17 by Robert Collins
Branch.commit() has moved to WorkingTree.commit(). (Robert Collins)
47
        b.working_tree().commit('Commit one', rev_id='a@r-0-1')
48
        b.working_tree().commit('Commit two', rev_id='a@r-0-2')
49
        b.working_tree().commit('Commit three', rev_id='a@r-0-3')
1185.5.4 by John Arbash Meinel
Updated bzr revision-info, created tests.
50
51
        # Make sure revision-info without any arguments throws an exception
1185.33.63 by Martin Pool
Better display of BzrError classes that are not BzrNewErrors.
52
        self.check_error('bzr: ERROR: '
1185.33.27 by Martin Pool
[merge] much integrated work from robert and john
53
                         'You must supply a revision identifier\n',
1185.1.29 by Robert Collins
merge merge tweaks from aaron, which includes latest .dev
54
                         'revision-info')
1185.5.4 by John Arbash Meinel
Updated bzr revision-info, created tests.
55
56
        values = {
57
            1:'   1 a@r-0-1\n',
58
            2:'   2 a@r-0-2\n',
59
            3:'   3 a@r-0-3\n'
60
        }
61
62
        # Check the results of just specifying a numeric revision
1185.1.29 by Robert Collins
merge merge tweaks from aaron, which includes latest .dev
63
        self.check_output(values[1], 'revision-info', '1')
64
        self.check_output(values[2], 'revision-info', '2')
65
        self.check_output(values[3], 'revision-info', '3')
66
        self.check_output(values[1]+values[2], 'revision-info', '1', '2')
67
        self.check_output(values[1]+values[2]+values[3], 'revision-info', '1', '2', '3')
68
        self.check_output(values[2]+values[1], 'revision-info', '2', '1')
1185.5.4 by John Arbash Meinel
Updated bzr revision-info, created tests.
69
70
        # Check as above, only using the '--revision' syntax
71
        
1185.1.29 by Robert Collins
merge merge tweaks from aaron, which includes latest .dev
72
        self.check_output('   1 a@r-0-1\n', 'revision-info', '-r', '1')
73
        self.check_output('   2 a@r-0-2\n', 'revision-info', '--revision', '2')
74
        self.check_output('   3 a@r-0-3\n', 'revision-info', '-r', '3')
75
        self.check_output('   1 a@r-0-1\n   2 a@r-0-2\n', 'revision-info', '-r', '1..2')
76
        self.check_output('   1 a@r-0-1\n   2 a@r-0-2\n   3 a@r-0-3\n'
1185.5.4 by John Arbash Meinel
Updated bzr revision-info, created tests.
77
                , 'revision-info', '-r', '1..2..3')
1185.1.29 by Robert Collins
merge merge tweaks from aaron, which includes latest .dev
78
        self.check_output('   2 a@r-0-2\n   1 a@r-0-1\n', 'revision-info', '-r', '2..1')
1185.5.4 by John Arbash Meinel
Updated bzr revision-info, created tests.
79
80
        # Now try some more advanced revision specifications
81
        
1185.1.29 by Robert Collins
merge merge tweaks from aaron, which includes latest .dev
82
        self.check_output('   1 a@r-0-1\n', 'revision-info', '-r', 'revid:a@r-0-1')
83
        self.check_output('   2 a@r-0-2\n', 'revision-info', '--revision', 'revid:a@r-0-2')
1185.5.4 by John Arbash Meinel
Updated bzr revision-info, created tests.
84
85
    def test_cat_revision(self):
86
        """Test bzr cat-revision.
87
        """
1185.33.66 by Martin Pool
[patch] use unicode literals for all hardcoded paths (Alexander Belchenko)
88
        b = Branch.initialize(u'.')
1185.5.4 by John Arbash Meinel
Updated bzr revision-info, created tests.
89
1457.1.17 by Robert Collins
Branch.commit() has moved to WorkingTree.commit(). (Robert Collins)
90
        b.working_tree().commit('Commit one', rev_id='a@r-0-1')
91
        b.working_tree().commit('Commit two', rev_id='a@r-0-2')
92
        b.working_tree().commit('Commit three', rev_id='a@r-0-3')
1185.5.4 by John Arbash Meinel
Updated bzr revision-info, created tests.
93
94
        revs = {
1185.67.2 by Aaron Bentley
Renamed Branch.storage to Branch.repository
95
            1:b.repository.get_revision_xml('a@r-0-1'),
96
            2:b.repository.get_revision_xml('a@r-0-2'),
97
            3:b.repository.get_revision_xml('a@r-0-3'),
1185.5.4 by John Arbash Meinel
Updated bzr revision-info, created tests.
98
        }
99
1185.1.29 by Robert Collins
merge merge tweaks from aaron, which includes latest .dev
100
        self.check_output(revs[1], 'cat-revision', 'a@r-0-1')
101
        self.check_output(revs[2], 'cat-revision', 'a@r-0-2')
102
        self.check_output(revs[3], 'cat-revision', 'a@r-0-3')
103
104
        self.check_output(revs[1], 'cat-revision', '-r', '1')
105
        self.check_output(revs[2], 'cat-revision', '-r', '2')
106
        self.check_output(revs[3], 'cat-revision', '-r', '3')
107
108
        self.check_output(revs[1], 'cat-revision', '-r', 'revid:a@r-0-1')
109
        self.check_output(revs[2], 'cat-revision', '-r', 'revid:a@r-0-2')
110
        self.check_output(revs[3], 'cat-revision', '-r', 'revid:a@r-0-3')
1185.5.4 by John Arbash Meinel
Updated bzr revision-info, created tests.
111