/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/blackbox/test_version_info.py

  • Committer: Robert Collins
  • Date: 2008-08-20 02:07:36 UTC
  • mfrom: (3640 +trunk)
  • mto: This revision was merged to the branch mainline in revision 3682.
  • Revision ID: robertc@robertcollins.net-20080820020736-g2xe4921zzxtymle
Merge bzr.dev

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
# Copyright (C) 2005, 2006 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
"""Blackbox tests for version_info"""
 
18
 
 
19
import os
 
20
 
 
21
from bzrlib.tests import TestCaseWithTransport
 
22
 
 
23
 
 
24
class TestVersionInfo(TestCaseWithTransport):
 
25
 
 
26
    def test_invalid_format(self):
 
27
        self.run_bzr('version-info --format quijibo', retcode=3)
 
28
 
 
29
    def create_tree(self):
 
30
        wt = self.make_branch_and_tree('branch')
 
31
 
 
32
        self.build_tree(['branch/a'])
 
33
        wt.add('a')
 
34
        wt.commit('adding a', rev_id='r1')
 
35
 
 
36
        self.build_tree(['branch/b'])
 
37
        wt.add('b')
 
38
        wt.commit('adding b', rev_id='r2')
 
39
 
 
40
        self.revisions = wt.branch.revision_history()
 
41
        return wt
 
42
 
 
43
    def test_basic(self):
 
44
        self.create_tree()
 
45
 
 
46
        txt = self.run_bzr('version-info branch')[0]
 
47
        self.assertContainsRe(txt, 'date:')
 
48
        self.assertContainsRe(txt, 'build-date:')
 
49
        self.assertContainsRe(txt, 'revno: 2')
 
50
        self.assertContainsRe(txt, 'revision-id: ' + self.revisions[-1])
 
51
 
 
52
    def test_all(self):
 
53
        """'--all' includes clean, revision history, and file revisions"""
 
54
        self.create_tree()
 
55
        txt = self.run_bzr('version-info branch --all')[0]
 
56
        self.assertContainsRe(txt, 'date:')
 
57
        self.assertContainsRe(txt, 'revno: 2')
 
58
        self.assertContainsRe(txt, 'revision-id: ' + self.revisions[-1])
 
59
        self.assertContainsRe(txt, 'clean: True')
 
60
        self.assertContainsRe(txt, 'revisions:')
 
61
        for rev_id in self.revisions:
 
62
            self.assertContainsRe(txt, 'id: ' + rev_id)
 
63
        self.assertContainsRe(txt, 'message: adding a')
 
64
        self.assertContainsRe(txt, 'message: adding b')
 
65
        self.assertContainsRe(txt, 'file-revisions:')
 
66
        self.assertContainsRe(txt, 'path: a')
 
67
        self.assertContainsRe(txt, 'path: b')
 
68
 
 
69
    def test_clean(self):
 
70
        """Test that --check-clean includes the right info"""
 
71
        self.create_tree()
 
72
 
 
73
        txt = self.run_bzr('version-info branch --check-clean')[0]
 
74
        self.assertContainsRe(txt, 'clean: True')
 
75
 
 
76
        self.build_tree_contents([('branch/c', 'now unclean\n')])
 
77
        txt = self.run_bzr('version-info branch --check-clean')[0]
 
78
        self.assertContainsRe(txt, 'clean: False')
 
79
 
 
80
        txt = self.run_bzr('version-info branch --check-clean'
 
81
                           ' --include-file-revisions')[0]
 
82
        self.assertContainsRe(txt, 'revision: unversioned')
 
83
 
 
84
        os.remove('branch/c')
 
85
 
 
86
    def test_no_working_tree(self):
 
87
        tree = self.create_tree()
 
88
        branch = self.make_branch('just_branch')
 
89
        branch.pull(tree.branch)
 
90
 
 
91
        txt = self.run_bzr('version-info just_branch')[0]
 
92
        self.assertStartsWith(txt, 'revision-id: r2\n')
 
93
 
 
94
    def assertEqualNoBuildDate(self, text1, text2):
 
95
        """Compare 2 texts, but ignore the build-date field.
 
96
 
 
97
        build-date is the current timestamp, accurate to seconds. But the
 
98
        clock is always ticking, and it may have ticked between the time
 
99
        that text1 and text2 were generated.
 
100
        """
 
101
        lines1 = text1.splitlines(True)
 
102
        lines2 = text2.splitlines(True)
 
103
        for line1, line2 in zip(lines1, lines2):
 
104
            if line1.startswith('build-date: '):
 
105
                self.assertStartsWith(line2, 'build-date: ')
 
106
            else:
 
107
                self.assertEqual(line1, line2)
 
108
        self.assertEqual(len(lines1), len(lines2))
 
109
 
 
110
    def test_no_branch(self):
 
111
        """Test that bzr defaults to the local working directory"""
 
112
        self.create_tree()
 
113
 
 
114
        txt1 = self.run_bzr('version-info branch')[0]
 
115
 
 
116
        os.chdir('branch')
 
117
        txt2 = self.run_bzr('version-info')[0]
 
118
        self.assertEqualNoBuildDate(txt1, txt2)
 
119
 
 
120
    def test_rio(self):
 
121
        """Test that we can pass --format=rio"""
 
122
        self.create_tree()
 
123
 
 
124
        txt = self.run_bzr('version-info branch')[0]
 
125
        txt1 = self.run_bzr('version-info --format rio branch')[0]
 
126
        txt2 = self.run_bzr('version-info --format=rio branch')[0]
 
127
        self.assertEqualNoBuildDate(txt, txt1)
 
128
        self.assertEqualNoBuildDate(txt, txt2)
 
129
 
 
130
    def test_python(self):
 
131
        """Test that we can do --format=python"""
 
132
        self.create_tree()
 
133
 
 
134
        txt = self.run_bzr('version-info --format python branch')[0]
 
135
 
 
136
        self.assertContainsRe(txt, 'version_info = {')
 
137
 
 
138
    def test_custom_without_template(self):
 
139
        wt = self.make_branch_and_tree('branch')
 
140
        out, err = self.run_bzr('version-info --custom', retcode=3)
 
141
        self.assertContainsRe(err, r'ERROR: No template specified\.')
 
142
 
 
143
    def test_custom_implies_all(self):
 
144
        self.create_tree()
 
145
        out, err = self.run_bzr('version-info --custom --template='
 
146
            '"{revno} {branch_nick} {clean}\n" branch')
 
147
        self.assertEqual("2 branch 1\n", out)
 
148
        self.assertEqual("", err)
 
149
        self.build_tree_contents([('branch/c', 'now unclean\n')])
 
150
        out, err = self.run_bzr('version-info --custom --template='
 
151
            '"{revno} {branch_nick} {clean}\n" branch')
 
152
        self.assertEqual("2 branch 0\n", out)
 
153
        self.assertEqual("", err)