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

  • Committer: John Arbash Meinel
  • Date: 2009-12-22 16:28:47 UTC
  • mto: This revision was merged to the branch mainline in revision 4922.
  • Revision ID: john@arbash-meinel.com-20091222162847-tvnsc69to4l4uf5r
Implement a permute_for_extension helper.

Use it for all of the 'simple' extension permutations.
It basically permutes all tests in the current module, by setting TestCase.module.
Which works well for most of our extension tests. Some had more advanced
handling of permutations (extra permutations, custom vars, etc.)

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
# Copyright (C) 2007, 2008 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
"""Black-box tests for bzr version."""
 
18
 
 
19
import os
 
20
import sys
 
21
 
 
22
import bzrlib
 
23
from bzrlib import osutils, trace
 
24
from bzrlib.tests import (
 
25
    probe_unicode_in_user_encoding,
 
26
    TestCase,
 
27
    TestCaseInTempDir,
 
28
    TestSkipped,
 
29
    )
 
30
 
 
31
 
 
32
class TestVersion(TestCase):
 
33
 
 
34
    def test_main_version(self):
 
35
        """Check output from version command and master option is reasonable"""
 
36
        # output is intentionally passed through to stdout so that we
 
37
        # can see the version being tested
 
38
        self.permit_source_tree_branch_repo()
 
39
        output = self.run_bzr('version')[0]
 
40
        self.log('bzr version output:')
 
41
        self.log(output)
 
42
        self.assert_(output.startswith('Bazaar (bzr) '))
 
43
        self.assertNotEqual(output.index('Canonical'), -1)
 
44
        # make sure --version is consistent
 
45
        tmp_output = self.run_bzr('--version')[0]
 
46
        self.assertEquals(output, tmp_output)
 
47
 
 
48
    def test_version(self):
 
49
        self.permit_source_tree_branch_repo()
 
50
        out = self.run_bzr("version")[0]
 
51
        self.assertTrue(len(out) > 0)
 
52
        self.assertEqualDiff(out.splitlines()[0],
 
53
            "Bazaar (bzr) %s" % bzrlib.__version__)
 
54
        self.assertContainsRe(out, r"(?m)^  Python interpreter:")
 
55
        self.assertContainsRe(out, r"(?m)^  Python standard library:")
 
56
        self.assertContainsRe(out, r"(?m)^  bzrlib:")
 
57
        self.assertContainsRe(out, r"(?m)^  Bazaar configuration:")
 
58
        self.assertContainsRe(out, r'(?m)^  Bazaar log file:.*\.bzr\.log')
 
59
 
 
60
    def test_version_short(self):
 
61
        self.permit_source_tree_branch_repo()
 
62
        out = self.run_bzr(["version", "--short"])[0]
 
63
        self.assertEqualDiff(out, bzrlib.version_string + '\n')
 
64
 
 
65
 
 
66
class TestVersionUnicodeOutput(TestCaseInTempDir):
 
67
 
 
68
    def _check(self, args):
 
69
        self.permit_source_tree_branch_repo()
 
70
        # Even though trace._bzr_log_filename variable
 
71
        # is used only to keep actual log filename
 
72
        # and changing this variable in selftest
 
73
        # don't change main .bzr.log location,
 
74
        # and therefore pretty safe,
 
75
        # but we run these tests in separate temp dir
 
76
        # with relative unicoded path
 
77
        old_trace_file = trace._bzr_log_filename
 
78
        trace._bzr_log_filename = u'\u1234/.bzr.log'
 
79
        try:
 
80
            out = self.run_bzr(args)[0]
 
81
        finally:
 
82
            trace._bzr_log_filename = old_trace_file
 
83
        self.assertTrue(len(out) > 0)
 
84
        self.assertContainsRe(out, r'(?m)^  Bazaar log file:.*bzr\.log')
 
85
 
 
86
    def test_command(self):
 
87
        self._check("version")
 
88
 
 
89
    def test_flag(self):
 
90
        self._check("--version")
 
91
 
 
92
    def test_unicode_bzr_home(self):
 
93
        uni_val, str_val = probe_unicode_in_user_encoding()
 
94
        if uni_val is None:
 
95
            raise TestSkipped('Cannot find a unicode character that works in'
 
96
                              ' encoding %s' % (osutils.get_user_encoding(),))
 
97
 
 
98
        osutils.set_or_unset_env('BZR_HOME', str_val)
 
99
        self.permit_source_tree_branch_repo()
 
100
        out = self.run_bzr("version")[0]
 
101
        self.assertTrue(len(out) > 0)
 
102
        self.assertContainsRe(out, r"(?m)^  Bazaar configuration: " + str_val)
 
103
 
 
104
 
 
105
class TestVersionBzrLogLocation(TestCaseInTempDir):
 
106
 
 
107
    def test_simple(self):
 
108
        bzr_log = 'my.bzr.log'
 
109
        osutils.set_or_unset_env('BZR_LOG', bzr_log)
 
110
        default_log = os.path.join(os.environ['BZR_HOME'], '.bzr.log')
 
111
        self.failIfExists([default_log, bzr_log])
 
112
        out = self.run_bzr_subprocess('version')[0]
 
113
        self.assertTrue(len(out) > 0)
 
114
        self.assertContainsRe(out, r"(?m)^  Bazaar log file: " + bzr_log)
 
115
        self.failIfExists(default_log)
 
116
        self.failUnlessExists(bzr_log)
 
117
 
 
118
    def test_dev_null(self):
 
119
        # This test uses a subprocess to cause the log opening logic to
 
120
        # execute. It would be better to just execute that logic directly.
 
121
        if sys.platform == 'win32':
 
122
            bzr_log = 'NUL'
 
123
        else:
 
124
            bzr_log = '/dev/null'
 
125
        osutils.set_or_unset_env('BZR_LOG', bzr_log)
 
126
        default_log = os.path.join(os.environ['BZR_HOME'], '.bzr.log')
 
127
        self.failIfExists(default_log)
 
128
        out = self.run_bzr_subprocess('version')[0]
 
129
        self.assertTrue(len(out) > 0)
 
130
        self.assertContainsRe(out, r"(?m)^  Bazaar log file: " + bzr_log)
 
131
        self.failIfExists(default_log)