/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: Jelmer Vernooij
  • Date: 2020-01-31 17:43:44 UTC
  • mto: This revision was merged to the branch mainline in revision 7478.
  • Revision ID: jelmer@jelmer.uk-20200131174344-qjhgqm7bdkuqj9sj
Default to running Python 3.

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$")