~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/tests/blackbox/test_version_info.py

  • Committer: Alexander Belchenko
  • Date: 2006-07-30 16:43:12 UTC
  • mto: (1711.2.111 jam-integration)
  • mto: This revision was merged to the branch mainline in revision 1906.
  • Revision ID: bialix@ukr.net-20060730164312-b025fd3ff0cee59e
rename  gpl.txt => COPYING.txt

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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 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)