/brz/remove-bazaar

To get this branch, use:
bzr branch http://gegoxaren.bato24.eu/bzr/brz/remove-bazaar
0.8.1 by John Arbash Meinel
Creating a plugin to ease generating version information from a tree.
1
# Copyright (C) 2005 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
"""\
18
Blackbox tests for version_info
19
"""
20
0.8.6 by John Arbash Meinel
Updated the blackbox tests.
21
import os
22
import sys
0.8.1 by John Arbash Meinel
Creating a plugin to ease generating version information from a tree.
23
from bzrlib.tests import TestCase, TestCaseInTempDir
24
0.8.2 by John Arbash Meinel
Have working rio output
25
0.8.1 by John Arbash Meinel
Creating a plugin to ease generating version information from a tree.
26
class TestVersionInfo(TestCaseInTempDir):
0.8.2 by John Arbash Meinel
Have working rio output
27
28
    def test_invalid_format(self):
29
        bzr = self.run_bzr
30
31
        bzr('version-info', '--format', 'quijibo', retcode=3)
0.8.1 by John Arbash Meinel
Creating a plugin to ease generating version information from a tree.
32
0.8.6 by John Arbash Meinel
Updated the blackbox tests.
33
    def create_branch(self):
34
        bzr = self.run_bzr
35
36
        os.mkdir('branch')
37
        os.chdir('branch')
38
        bzr('init')
39
        open('a', 'wb').write('a file\n')
40
        bzr('add')
41
        bzr('commit', '-m', 'adding a')
42
43
        open('b', 'wb').write('b file\n')
44
        bzr('add')
45
        bzr('commit', '-m', 'adding b')
46
        os.chdir('..')
47
48
    def get_revisions(self):
49
        os.chdir('branch')
50
        revisions = self.run_bzr('revision-history')[0].strip().split('\n')
51
        os.chdir('..')
52
        return revisions
53
54
    def test_rio(self):
55
        self.create_branch()
56
57
        def regen(*args):
58
            return self.run_bzr('version-info', '--format', 'rio', 
59
                                'branch', *args)[0]
60
61
        revisions = self.get_revisions()
62
        txt = regen()
63
        self.assertContainsRe(txt, 'date:')
64
        self.assertContainsRe(txt, 'revno: 2')
65
        self.assertContainsRe(txt, 'revision_id: ' + revisions[-1])
66
67
        txt = regen('--all')
68
        self.assertContainsRe(txt, 'date:')
69
        self.assertContainsRe(txt, 'revno: 2')
70
        self.assertContainsRe(txt, 'revision_id: ' + revisions[-1])
71
        self.assertContainsRe(txt, 'clean: True')
72
        self.assertContainsRe(txt, 'revisions:')
73
        for rev_id in revisions:
74
            self.assertContainsRe(txt, 'id: ' + rev_id)
75
        self.assertContainsRe(txt, 'message: adding a')
76
        self.assertContainsRe(txt, 'message: adding b')
77
78
        txt = regen('--check-clean')
79
        self.assertContainsRe(txt, 'clean: True')
80
81
        open('branch/c', 'wb').write('now unclean\n')
82
        txt = regen('--check-clean')
83
        self.assertContainsRe(txt, 'clean: False')
84
        os.remove('branch/c')
85
86
        # Make sure it works without a directory
87
        os.chdir('branch')
88
        txt = self.run_bzr('version-info', '--format', 'rio')
89
90
    def test_python(self):
91
        def bzr(*args, **kwargs):
92
            return self.run_bzr(*args, **kwargs)[0]
93
94
        def regen(*args):
95
            txt = self.run_bzr('version-info', '--format', 'python',
96
                               'branch', *args)[0]
97
            outf = open('test_version_information.py', 'wb')
98
            outf.write(txt)
99
            outf.close()
100
            try:
101
                sys.path.append(os.getcwdu())
102
                import test_version_information as tvi
103
                reload(tvi)
104
            finally:
105
                sys.path.pop()
106
            # Make sure the module isn't cached
107
            sys.modules.pop('tvi', None)
108
            sys.modules.pop('test_version_information', None)
109
            # Delete the compiled versions, because we are generating
110
            # a new file fast enough that python doen't detect it
111
            # needs to recompile, and using sleep() just makes the
112
            # test slow
113
            if os.path.exists('test_version_information.pyc'):
114
                os.remove('test_version_information.pyc')
115
            if os.path.exists('test_version_information.pyo'):
116
                os.remove('test_version_information.pyo')
117
            return tvi
118
119
        self.create_branch()
120
        revisions = self.get_revisions()
121
122
        tvi = regen()
123
        self.assertEqual(tvi.version_info['revno'], 2)
124
        self.failUnless(tvi.version_info.has_key('date'))
125
        self.assertEqual(revisions[-1], tvi.version_info['revision_id'])
126
127
        tvi = regen('--all')
128
        self.assertEqual([(revisions[0], 'adding a'),
129
                          (revisions[1], 'adding b')],
130
                         tvi.version_info['revisions'])
131
        self.assertEqual(True, tvi.version_info['clean'])
132