5557.1.7
by John Arbash Meinel
Merge in the bzr.dev 5582 |
1 |
# Copyright (C) 2007, 2008, 2009, 2011 Canonical Ltd
|
2347.1.1
by John Arbash Meinel
(John Whitley) Print out the location of ~/.bazaar as part of 'bzr --version' |
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
|
|
4183.7.1
by Sabin Iacob
update FSF mailing address |
15 |
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
2347.1.1
by John Arbash Meinel
(John Whitley) Print out the location of ~/.bazaar as part of 'bzr --version' |
16 |
|
2324.3.2
by John Whitley
Added blackbox test for bzr version. |
17 |
"""Black-box tests for bzr version."""
|
18 |
||
3193.6.7
by Alexander Belchenko
If BZR_HOME environment variable is defined then default location for .bzr.log trace file is ``$BZR_HOME/.bzr.log`` (required for proper testing BZR_LOG environment variable). |
19 |
import os |
3193.6.4
by Alexander Belchenko
blackbox tests for `bzr version` command output to check $BZR_LOG effect |
20 |
import sys |
21 |
||
2324.3.2
by John Whitley
Added blackbox test for bzr version. |
22 |
import bzrlib |
2785.1.5
by Alexander Belchenko
support for non-ascii BZR_HOME in show_version() |
23 |
from bzrlib import osutils, trace |
24 |
from bzrlib.tests import ( |
|
25 |
probe_unicode_in_user_encoding, |
|
26 |
TestCase, |
|
27 |
TestCaseInTempDir, |
|
28 |
TestSkipped, |
|
29 |
)
|
|
2785.1.1
by bialix at ukr
test cases for #131100 |
30 |
|
31 |
||
32 |
class TestVersion(TestCase): |
|
2347.1.1
by John Arbash Meinel
(John Whitley) Print out the location of ~/.bazaar as part of 'bzr --version' |
33 |
|
4691.2.1
by Robert Collins
Add stronger test isolation by interception BzrDir.open and checking the thing being opened is known to the test suite. |
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 |
||
2324.3.2
by John Whitley
Added blackbox test for bzr version. |
48 |
def test_version(self): |
4691.2.1
by Robert Collins
Add stronger test isolation by interception BzrDir.open and checking the thing being opened is known to the test suite. |
49 |
self.permit_source_tree_branch_repo() |
2324.3.2
by John Whitley
Added blackbox test for bzr version. |
50 |
out = self.run_bzr("version")[0] |
51 |
self.assertTrue(len(out) > 0) |
|
3400.1.1
by Martin Pool
Fix up stray comment |
52 |
self.assertEqualDiff(out.splitlines()[0], |
3287.11.2
by Martin Pool
Better test for --version contents |
53 |
"Bazaar (bzr) %s" % bzrlib.__version__) |
2606.1.3
by Martin Pool
Update tests for new version display |
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:") |
|
3193.6.4
by Alexander Belchenko
blackbox tests for `bzr version` command output to check $BZR_LOG effect |
58 |
self.assertContainsRe(out, r'(?m)^ Bazaar log file:.*\.bzr\.log') |
2785.1.1
by bialix at ukr
test cases for #131100 |
59 |
|
3346.2.1
by Martin Pool
Add version --short option |
60 |
def test_version_short(self): |
4691.2.1
by Robert Collins
Add stronger test isolation by interception BzrDir.open and checking the thing being opened is known to the test suite. |
61 |
self.permit_source_tree_branch_repo() |
3346.2.1
by Martin Pool
Add version --short option |
62 |
out = self.run_bzr(["version", "--short"])[0] |
3346.2.9
by Martin Pool
Correct short version test |
63 |
self.assertEqualDiff(out, bzrlib.version_string + '\n') |
3346.2.1
by Martin Pool
Add version --short option |
64 |
|
2785.1.1
by bialix at ukr
test cases for #131100 |
65 |
|
2785.1.5
by Alexander Belchenko
support for non-ascii BZR_HOME in show_version() |
66 |
class TestVersionUnicodeOutput(TestCaseInTempDir): |
2785.1.1
by bialix at ukr
test cases for #131100 |
67 |
|
68 |
def _check(self, args): |
|
4691.2.1
by Robert Collins
Add stronger test isolation by interception BzrDir.open and checking the thing being opened is known to the test suite. |
69 |
self.permit_source_tree_branch_repo() |
2785.1.5
by Alexander Belchenko
support for non-ascii BZR_HOME in show_version() |
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
|
|
2785.1.1
by bialix at ukr
test cases for #131100 |
77 |
old_trace_file = trace._bzr_log_filename |
2785.1.5
by Alexander Belchenko
support for non-ascii BZR_HOME in show_version() |
78 |
trace._bzr_log_filename = u'\u1234/.bzr.log' |
2785.1.1
by bialix at ukr
test cases for #131100 |
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") |
|
2785.1.5
by Alexander Belchenko
support for non-ascii BZR_HOME in show_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' |
|
3224.5.4
by Andrew Bennetts
Fix test suite, mainly weeding out uses of bzrlib.user_encoding. |
96 |
' encoding %s' % (osutils.get_user_encoding(),)) |
2785.1.5
by Alexander Belchenko
support for non-ascii BZR_HOME in show_version() |
97 |
|
5570.3.8
by Vincent Ladeuil
More use cases for overrideEnv. |
98 |
self.overrideEnv('BZR_HOME', str_val) |
4691.2.1
by Robert Collins
Add stronger test isolation by interception BzrDir.open and checking the thing being opened is known to the test suite. |
99 |
self.permit_source_tree_branch_repo() |
2785.1.5
by Alexander Belchenko
support for non-ascii BZR_HOME in show_version() |
100 |
out = self.run_bzr("version")[0] |
101 |
self.assertTrue(len(out) > 0) |
|
102 |
self.assertContainsRe(out, r"(?m)^ Bazaar configuration: " + str_val) |
|
3193.6.4
by Alexander Belchenko
blackbox tests for `bzr version` command output to check $BZR_LOG effect |
103 |
|
104 |
||
105 |
class TestVersionBzrLogLocation(TestCaseInTempDir): |
|
106 |
||
107 |
def test_simple(self): |
|
108 |
bzr_log = 'my.bzr.log' |
|
5570.3.8
by Vincent Ladeuil
More use cases for overrideEnv. |
109 |
self.overrideEnv('BZR_LOG', bzr_log) |
3193.6.7
by Alexander Belchenko
If BZR_HOME environment variable is defined then default location for .bzr.log trace file is ``$BZR_HOME/.bzr.log`` (required for proper testing BZR_LOG environment variable). |
110 |
default_log = os.path.join(os.environ['BZR_HOME'], '.bzr.log') |
5784.1.3
by Martin Pool
Switch away from using failUnlessExists and failIfExists |
111 |
self.assertPathDoesNotExist([default_log, bzr_log]) |
3193.6.4
by Alexander Belchenko
blackbox tests for `bzr version` command output to check $BZR_LOG effect |
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) |
|
5784.1.3
by Martin Pool
Switch away from using failUnlessExists and failIfExists |
115 |
self.assertPathDoesNotExist(default_log) |
116 |
self.assertPathExists(bzr_log) |
|
3193.6.4
by Alexander Belchenko
blackbox tests for `bzr version` command output to check $BZR_LOG effect |
117 |
|
118 |
def test_dev_null(self): |
|
4691.2.1
by Robert Collins
Add stronger test isolation by interception BzrDir.open and checking the thing being opened is known to the test suite. |
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.
|
|
3193.6.4
by Alexander Belchenko
blackbox tests for `bzr version` command output to check $BZR_LOG effect |
121 |
if sys.platform == 'win32': |
122 |
bzr_log = 'NUL' |
|
123 |
else: |
|
124 |
bzr_log = '/dev/null' |
|
5570.3.8
by Vincent Ladeuil
More use cases for overrideEnv. |
125 |
self.overrideEnv('BZR_LOG', bzr_log) |
3193.6.7
by Alexander Belchenko
If BZR_HOME environment variable is defined then default location for .bzr.log trace file is ``$BZR_HOME/.bzr.log`` (required for proper testing BZR_LOG environment variable). |
126 |
default_log = os.path.join(os.environ['BZR_HOME'], '.bzr.log') |
5784.1.3
by Martin Pool
Switch away from using failUnlessExists and failIfExists |
127 |
self.assertPathDoesNotExist(default_log) |
3193.6.4
by Alexander Belchenko
blackbox tests for `bzr version` command output to check $BZR_LOG effect |
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) |
|
5784.1.3
by Martin Pool
Switch away from using failUnlessExists and failIfExists |
131 |
self.assertPathDoesNotExist(default_log) |
6437.26.3
by Martin Packman
Add blackbox test for displaying non-ascii log in bzr version |
132 |
|
133 |
def test_unicode_bzr_log(self): |
|
134 |
uni_val = u"\xa7" |
|
135 |
enc = osutils.get_user_encoding() |
|
136 |
try: |
|
137 |
str_val = uni_val.encode(enc) |
|
138 |
except UnicodeEncodeError: |
|
139 |
self.skip("Test string %r unrepresentable in user encoding %s" % ( |
|
140 |
uni_val, enc)) |
|
141 |
self.overrideEnv('BZR_HOME', self.test_base_dir) |
|
142 |
self.overrideEnv("BZR_LOG", |
|
143 |
os.path.join(self.test_base_dir, uni_val).encode(enc)) |
|
144 |
out, err = self.run_bzr_subprocess("version") |
|
145 |
uni_out = out.decode(enc) |
|
146 |
self.assertContainsRe(uni_out, u"(?m)^ Bazaar log file: .*/\xa7$") |
|
147 |
||
148 |