/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 breezy/tests/blackbox/test_version.py

  • Committer: John Arbash Meinel
  • Date: 2006-04-25 15:05:42 UTC
  • mfrom: (1185.85.85 bzr-encoding)
  • mto: This revision was merged to the branch mainline in revision 1752.
  • Revision ID: john@arbash-meinel.com-20060425150542-c7b518dca9928691
[merge] the old bzr-encoding changes, reparenting them on bzr.dev

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
# Copyright (C) 2007-2012, 2016 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 brz version."""
18
 
 
19
 
import os
20
 
import sys
21
 
 
22
 
import breezy
23
 
from breezy import osutils, trace
24
 
from breezy.sixish import PY3
25
 
from breezy.tests import (
26
 
    probe_unicode_in_user_encoding,
27
 
    TestCase,
28
 
    TestCaseInTempDir,
29
 
    TestSkipped,
30
 
    )
31
 
 
32
 
 
33
 
class TestVersion(TestCase):
34
 
 
35
 
    def test_main_version(self):
36
 
        """Check output from version command and master option is reasonable"""
37
 
        # output is intentionally passed through to stdout so that we
38
 
        # can see the version being tested
39
 
        self.permit_source_tree_branch_repo()
40
 
        output = self.run_bzr('version')[0]
41
 
        self.log('brz version output:')
42
 
        self.log(output)
43
 
        self.assertTrue(output.startswith('Breezy (brz) '))
44
 
        self.assertNotEqual(output.index('Canonical'), -1)
45
 
        # make sure --version is consistent
46
 
        tmp_output = self.run_bzr('--version')[0]
47
 
        self.assertEqual(output, tmp_output)
48
 
 
49
 
    def test_version(self):
50
 
        self.permit_source_tree_branch_repo()
51
 
        out = self.run_bzr("version")[0]
52
 
        self.assertTrue(len(out) > 0)
53
 
        self.assertEqualDiff(out.splitlines()[0],
54
 
                             "Breezy (brz) %s" % breezy.__version__)
55
 
        self.assertContainsRe(out, r"(?m)^  Python interpreter:")
56
 
        self.assertContainsRe(out, r"(?m)^  Python standard library:")
57
 
        self.assertContainsRe(out, r"(?m)^  breezy:")
58
 
        self.assertContainsRe(out, r"(?m)^  Breezy configuration:")
59
 
        self.assertContainsRe(out, r'(?m)^  Breezy log file:.*[\\/]breezy[\\/]brz\.log')
60
 
 
61
 
    def test_version_short(self):
62
 
        self.permit_source_tree_branch_repo()
63
 
        out = self.run_bzr(["version", "--short"])[0]
64
 
        self.assertEqualDiff(out, breezy.version_string + '\n')
65
 
 
66
 
 
67
 
class TestVersionUnicodeOutput(TestCaseInTempDir):
68
 
 
69
 
    def _check(self, args):
70
 
        self.permit_source_tree_branch_repo()
71
 
        # Even though trace._brz_log_filename variable
72
 
        # is used only to keep actual log filename
73
 
        # and changing this variable in selftest
74
 
        # don't change main brz.log location,
75
 
        # and therefore pretty safe,
76
 
        # but we run these tests in separate temp dir
77
 
        # with relative unicoded path
78
 
        old_trace_file = trace._brz_log_filename
79
 
        trace._brz_log_filename = u'\u1234/.brz.log'
80
 
        try:
81
 
            out = self.run_bzr(args)[0]
82
 
        finally:
83
 
            trace._brz_log_filename = old_trace_file
84
 
        self.assertTrue(len(out) > 0)
85
 
        self.assertContainsRe(out, r'(?m)^  Breezy log file:.*brz\.log')
86
 
 
87
 
    def test_command(self):
88
 
        self._check("version")
89
 
 
90
 
    def test_flag(self):
91
 
        self._check("--version")
92
 
 
93
 
    def test_unicode_bzr_home(self):
94
 
        uni_val, str_val = probe_unicode_in_user_encoding()
95
 
        if uni_val is None:
96
 
            raise TestSkipped('Cannot find a unicode character that works in'
97
 
                              ' encoding %s' % (osutils.get_user_encoding(),))
98
 
 
99
 
        if PY3:
100
 
            self.overrideEnv('BRZ_HOME', uni_val)
101
 
        else:
102
 
            self.overrideEnv('BRZ_HOME', str_val)
103
 
        self.permit_source_tree_branch_repo()
104
 
        out = self.run_bzr_raw("version")[0]
105
 
        self.assertTrue(len(out) > 0)
106
 
        self.assertContainsRe(out, br"(?m)^  Breezy configuration: " + str_val)
107
 
 
108
 
 
109
 
class TestVersionBzrLogLocation(TestCaseInTempDir):
110
 
 
111
 
    def default_log(self):
112
 
        return os.path.join(os.environ['BRZ_HOME'], 'breezy', 'brz.log')
113
 
 
114
 
    def test_simple(self):
115
 
        brz_log = 'my.brz.log'
116
 
        self.overrideEnv('BRZ_LOG', brz_log)
117
 
        self.assertPathDoesNotExist([self.default_log(), brz_log])
118
 
        out = self.run_bzr_subprocess('version')[0]
119
 
        self.assertTrue(len(out) > 0)
120
 
        self.assertContainsRe(
121
 
            out, br"(?m)^  Breezy log file: " + brz_log.encode('ascii'))
122
 
        self.assertPathExists(brz_log)
123
 
        self.assertPathDoesNotExist(self.default_log())
124
 
 
125
 
    def test_dev_null(self):
126
 
        # This test uses a subprocess to cause the log opening logic to
127
 
        # execute. It would be better to just execute that logic directly.
128
 
        if sys.platform == 'win32':
129
 
            brz_log = 'NUL'
130
 
        else:
131
 
            brz_log = '/dev/null'
132
 
        self.overrideEnv('BRZ_LOG', brz_log)
133
 
        self.assertPathDoesNotExist(self.default_log())
134
 
        out = self.run_bzr_subprocess('version')[0]
135
 
        self.assertTrue(len(out) > 0)
136
 
        self.assertContainsRe(
137
 
            out, br"(?m)^  Breezy log file: " + brz_log.encode('ascii'))
138
 
        self.assertPathDoesNotExist(self.default_log())
139
 
 
140
 
    def test_unicode_brz_log(self):
141
 
        uni_val = u"\xa7"
142
 
        enc = osutils.get_user_encoding()
143
 
        try:
144
 
            str_val = uni_val.encode(enc)
145
 
        except UnicodeEncodeError:
146
 
            self.skipTest(
147
 
                "Test string %r unrepresentable in user encoding %s" % (
148
 
                    uni_val, enc))
149
 
        brz_log = os.path.join(self.test_base_dir, uni_val)
150
 
        if PY3:
151
 
            self.overrideEnv("BRZ_LOG", brz_log)
152
 
        else:
153
 
            self.overrideEnv("BRZ_LOG", brz_log.encode(enc))
154
 
        out, err = self.run_bzr_subprocess("version")
155
 
        uni_out = out.decode(enc)
156
 
        self.assertContainsRe(uni_out, u"(?m)^  Breezy log file: .*/\xa7$")