5557.1.7
by John Arbash Meinel
Merge in the bzr.dev 5582 |
1 |
# Copyright (C) 2006-2011 Canonical Ltd
|
1558.5.1
by Aaron Bentley
Added make-repository command |
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
|
1558.5.1
by Aaron Bentley
Added make-repository command |
16 |
|
17 |
"""Black-box tests for repositories with shared branches"""
|
|
18 |
||
19 |
import os |
|
20 |
||
4734.4.9
by Andrew Bennetts
More tests and comments. |
21 |
from bzrlib.bzrdir import BzrDir, BzrDirMetaFormat1 |
1558.5.9
by Aaron Bentley
Updated tests per Robert Collins' suggestions |
22 |
import bzrlib.errors as errors |
2257.2.2
by Wouter van Heyst
Actually test that `bzr init-repo --{no,}-trees` still works |
23 |
from bzrlib.tests import TestCaseInTempDir |
1558.5.1
by Aaron Bentley
Added make-repository command |
24 |
|
25 |
class TestSharedRepo(TestCaseInTempDir): |
|
1558.5.9
by Aaron Bentley
Updated tests per Robert Collins' suggestions |
26 |
|
1558.5.4
by Aaron Bentley
Added bzr init test |
27 |
def test_make_repository(self): |
2552.2.3
by Vincent Ladeuil
Deprecate the varargs syntax and fix the tests. |
28 |
out, err = self.run_bzr("init-repository a") |
3535.9.5
by Marius Kruger
remove a trailing space I added |
29 |
self.assertEqual(out, |
4599.4.8
by Robert Collins
Update blackbox.test_shared_repository for 2a as default. |
30 |
"""Shared repository with trees (format: 2a)
|
3535.9.2
by Marius Kruger
make init and init-repo tests pass again |
31 |
Location:
|
32 |
shared repository: a
|
|
33 |
""") |
|
1558.5.9
by Aaron Bentley
Updated tests per Robert Collins' suggestions |
34 |
self.assertEqual(err, "") |
2257.2.2
by Wouter van Heyst
Actually test that `bzr init-repo --{no,}-trees` still works |
35 |
dir = BzrDir.open('a') |
1558.5.9
by Aaron Bentley
Updated tests per Robert Collins' suggestions |
36 |
self.assertIs(dir.open_repository().is_shared(), True) |
37 |
self.assertRaises(errors.NotBranchError, dir.open_branch) |
|
3535.9.6
by Marius Kruger
add explicit blackbox tests for 'init -q' and 'init-repo -q' |
38 |
self.assertRaises(errors.NoWorkingTree, dir.open_workingtree) |
39 |
||
40 |
def test_make_repository_quiet(self): |
|
41 |
out, err = self.run_bzr("init-repository a -q") |
|
42 |
self.assertEqual(out, "") |
|
43 |
self.assertEqual(err, "") |
|
44 |
dir = BzrDir.open('a') |
|
45 |
self.assertIs(dir.open_repository().is_shared(), True) |
|
46 |
self.assertRaises(errors.NotBranchError, dir.open_branch) |
|
47 |
self.assertRaises(errors.NoWorkingTree, dir.open_workingtree) |
|
1558.5.4
by Aaron Bentley
Added bzr init test |
48 |
|
1658.1.6
by Martin Pool
init-repo shouldn't insist on creating a new directory (Malone #38331) |
49 |
def test_init_repo_existing_dir(self): |
50 |
"""Make repo in existing directory.
|
|
3943.8.1
by Marius Kruger
remove all trailing whitespace from bzr source |
51 |
|
1658.1.6
by Martin Pool
init-repo shouldn't insist on creating a new directory (Malone #38331) |
52 |
(Malone #38331)
|
53 |
"""
|
|
2552.2.3
by Vincent Ladeuil
Deprecate the varargs syntax and fix the tests. |
54 |
out, err = self.run_bzr("init-repository .") |
1658.1.6
by Martin Pool
init-repo shouldn't insist on creating a new directory (Malone #38331) |
55 |
dir = BzrDir.open('.') |
56 |
self.assertTrue(dir.open_repository()) |
|
57 |
||
1558.5.4
by Aaron Bentley
Added bzr init test |
58 |
def test_init(self): |
2552.2.3
by Vincent Ladeuil
Deprecate the varargs syntax and fix the tests. |
59 |
self.run_bzr("init-repo a") |
60 |
self.run_bzr("init --format=default a/b") |
|
2257.2.2
by Wouter van Heyst
Actually test that `bzr init-repo --{no,}-trees` still works |
61 |
dir = BzrDir.open('a') |
1558.5.9
by Aaron Bentley
Updated tests per Robert Collins' suggestions |
62 |
self.assertIs(dir.open_repository().is_shared(), True) |
63 |
self.assertRaises(errors.NotBranchError, dir.open_branch) |
|
64 |
self.assertRaises(errors.NoWorkingTree, dir.open_workingtree) |
|
2257.2.2
by Wouter van Heyst
Actually test that `bzr init-repo --{no,}-trees` still works |
65 |
bdir = BzrDir.open('a/b') |
1558.5.9
by Aaron Bentley
Updated tests per Robert Collins' suggestions |
66 |
bdir.open_branch() |
67 |
self.assertRaises(errors.NoRepositoryPresent, bdir.open_repository) |
|
2257.2.1
by Wouter van Heyst
Change the ui level default for init-repo to --trees. |
68 |
wt = bdir.open_workingtree() |
1558.5.5
by Aaron Bentley
Added tests for branch |
69 |
|
70 |
def test_branch(self): |
|
2552.2.3
by Vincent Ladeuil
Deprecate the varargs syntax and fix the tests. |
71 |
self.run_bzr("init-repo a") |
72 |
self.run_bzr("init --format=default a/b") |
|
73 |
self.run_bzr('branch a/b a/c') |
|
2257.2.2
by Wouter van Heyst
Actually test that `bzr init-repo --{no,}-trees` still works |
74 |
cdir = BzrDir.open('a/c') |
1558.5.9
by Aaron Bentley
Updated tests per Robert Collins' suggestions |
75 |
cdir.open_branch() |
76 |
self.assertRaises(errors.NoRepositoryPresent, cdir.open_repository) |
|
2257.2.1
by Wouter van Heyst
Change the ui level default for init-repo to --trees. |
77 |
cdir.open_workingtree() |
1624.2.2
by Erik Bågfors
tests for --tree |
78 |
|
79 |
def test_branch_tree(self): |
|
2552.2.3
by Vincent Ladeuil
Deprecate the varargs syntax and fix the tests. |
80 |
self.run_bzr("init-repo --trees a") |
81 |
self.run_bzr("init --format=default b") |
|
1624.2.2
by Erik Bågfors
tests for --tree |
82 |
file('b/hello', 'wt').write('bar') |
2552.2.3
by Vincent Ladeuil
Deprecate the varargs syntax and fix the tests. |
83 |
self.run_bzr("add b/hello") |
84 |
self.run_bzr("commit -m bar b/hello") |
|
1624.2.2
by Erik Bågfors
tests for --tree |
85 |
|
2552.2.3
by Vincent Ladeuil
Deprecate the varargs syntax and fix the tests. |
86 |
self.run_bzr('branch b a/c') |
2257.2.2
by Wouter van Heyst
Actually test that `bzr init-repo --{no,}-trees` still works |
87 |
cdir = BzrDir.open('a/c') |
1624.2.2
by Erik Bågfors
tests for --tree |
88 |
cdir.open_branch() |
89 |
self.assertRaises(errors.NoRepositoryPresent, cdir.open_repository) |
|
5784.1.3
by Martin Pool
Switch away from using failUnlessExists and failIfExists |
90 |
self.assertPathExists('a/c/hello') |
1624.2.3
by Erik Bågfors
better test for --tree option |
91 |
cdir.open_workingtree() |
1624.2.2
by Erik Bågfors
tests for --tree |
92 |
|
2257.2.2
by Wouter van Heyst
Actually test that `bzr init-repo --{no,}-trees` still works |
93 |
def test_trees_default(self): |
94 |
# 0.15 switched to trees by default
|
|
2552.2.3
by Vincent Ladeuil
Deprecate the varargs syntax and fix the tests. |
95 |
self.run_bzr("init-repo repo") |
2257.2.2
by Wouter van Heyst
Actually test that `bzr init-repo --{no,}-trees` still works |
96 |
repo = BzrDir.open("repo").open_repository() |
97 |
self.assertEqual(True, repo.make_working_trees()) |
|
98 |
||
99 |
def test_trees_argument(self): |
|
100 |
# Supplying the --trees argument should be harmless,
|
|
101 |
# as it was previously non-default we need to get it right.
|
|
2552.2.3
by Vincent Ladeuil
Deprecate the varargs syntax and fix the tests. |
102 |
self.run_bzr("init-repo --trees trees") |
2257.2.2
by Wouter van Heyst
Actually test that `bzr init-repo --{no,}-trees` still works |
103 |
repo = BzrDir.open("trees").open_repository() |
104 |
self.assertEqual(True, repo.make_working_trees()) |
|
105 |
||
106 |
def test_no_trees_argument(self): |
|
107 |
# --no-trees should make it so that there is no working tree
|
|
2552.2.3
by Vincent Ladeuil
Deprecate the varargs syntax and fix the tests. |
108 |
self.run_bzr("init-repo --no-trees notrees") |
2257.2.2
by Wouter van Heyst
Actually test that `bzr init-repo --{no,}-trees` still works |
109 |
repo = BzrDir.open("notrees").open_repository() |
110 |
self.assertEqual(False, repo.make_working_trees()) |
|
4017.3.1
by Robert Collins
Add effort test for init-repo on smart server urls. |
111 |
|
112 |
def test_init_repo_smart_acceptance(self): |
|
113 |
# The amount of hpss calls made on init-repo to a smart server should
|
|
114 |
# be fixed.
|
|
115 |
self.setup_smart_server_with_call_log() |
|
116 |
self.run_bzr(['init-repo', self.get_url('repo')]) |
|
117 |
# This figure represent the amount of work to perform this use case. It
|
|
118 |
# is entirely ok to reduce this number if a test fails due to rpc_count
|
|
119 |
# being too low. If rpc_count increases, more network roundtrips have
|
|
120 |
# become necessary for this use case. Please do not adjust this number
|
|
121 |
# upwards without agreement from bzr's network support maintainers.
|
|
6263.2.3
by Jelmer Vernooij
Initializing a shared repository is now 13 HPSS calls, not 17. |
122 |
self.assertLength(13, self.hpss_calls) |
4734.4.4
by Brian de Alwis
Added tests to ensure branching-from-repository error returns detail |
123 |
|
124 |
def test_notification_on_branch_from_repository(self): |
|
125 |
out, err = self.run_bzr("init-repository -q a") |
|
126 |
self.assertEqual(out, "") |
|
127 |
self.assertEqual(err, "") |
|
128 |
dir = BzrDir.open('a') |
|
4734.4.7
by Andrew Bennetts
Defer checking for a repository in NotBranchError case until we format the error as a string. (test_smart currently fails) |
129 |
dir.open_repository() # there is a repository there |
4734.4.4
by Brian de Alwis
Added tests to ensure branching-from-repository error returns detail |
130 |
e = self.assertRaises(errors.NotBranchError, dir.open_branch) |
4734.4.7
by Andrew Bennetts
Defer checking for a repository in NotBranchError case until we format the error as a string. (test_smart currently fails) |
131 |
self.assertContainsRe(str(e), "location is a repository") |
4734.4.9
by Andrew Bennetts
More tests and comments. |
132 |
|
133 |
def test_notification_on_branch_from_nonrepository(self): |
|
134 |
fmt = BzrDirMetaFormat1() |
|
135 |
t = self.get_transport() |
|
136 |
t.mkdir('a') |
|
137 |
dir = fmt.initialize_on_transport(t.clone('a')) |
|
138 |
self.assertRaises(errors.NoRepositoryPresent, dir.open_repository) |
|
139 |
e = self.assertRaises(errors.NotBranchError, dir.open_branch) |
|
140 |
self.assertNotContainsRe(str(e), "location is a repository") |
|
5107.3.6
by Marco Pantaleoni
Documented behaviour of 'post_branch_init' for lightweight checkouts. |
141 |
|
142 |
def test_init_repo_with_post_repo_init_hook(self): |
|
143 |
calls = [] |
|
144 |
BzrDir.hooks.install_named_hook('post_repo_init', calls.append, None) |
|
145 |
self.assertLength(0, calls) |
|
146 |
self.run_bzr("init-repository a") |
|
147 |
self.assertLength(1, calls) |
|
5187.2.4
by Parth Malwankar
added tests. |
148 |
|
5187.2.6
by Parth Malwankar
lockdir no long mandates whoami but uses unicode version of getuser |
149 |
def test_init_repo_without_username(self): |
150 |
"""Ensure init-repo works if username is not set.
|
|
5187.2.4
by Parth Malwankar
added tests. |
151 |
"""
|
5187.2.9
by Parth Malwankar
added comment to init/init-repo pass tests for lacking whoami. |
152 |
# bzr makes user specified whoami mandatory for operations
|
153 |
# like commit as whoami is recorded. init-repo however is not so final
|
|
154 |
# and uses whoami only in a lock file. Without whoami the login name
|
|
155 |
# is used. This test is to ensure that init-repo passes even when whoami
|
|
156 |
# is not available.
|
|
5570.3.12
by Vincent Ladeuil
Replace osutils.set_or_unset_env calls with self.overrideEnv. |
157 |
self.overrideEnv('EMAIL', None) |
158 |
self.overrideEnv('BZR_EMAIL', None) |
|
5187.2.6
by Parth Malwankar
lockdir no long mandates whoami but uses unicode version of getuser |
159 |
out, err = self.run_bzr(['init-repo', 'foo']) |
160 |
self.assertEqual(err, '') |
|
161 |
self.assertTrue(os.path.exists('foo')) |