/brz/remove-bazaar

To get this branch, use:
bzr branch http://gegoxaren.bato24.eu/bzr/brz/remove-bazaar
6404.6.1 by Vincent Ladeuil
Tests passing for a first rough version of a cached branch config store. The changes here are too invasive and several parallel proposals have been made.
1
# Copyright (C) 2007-2012 Canonical Ltd
2363.5.11 by Aaron Bentley
All info tests pass
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
2363.5.11 by Aaron Bentley
All info tests pass
16
2804.4.3 by Alexander Belchenko
fix for test_info-tests: using osutils.getcwd instead of os.getcwd (sigh)
17
import sys
2363.5.11 by Aaron Bentley
All info tests pass
18
6624 by Jelmer Vernooij
Merge Python3 porting work ('py3 pokes')
19
from .. import (
2363.5.5 by Aaron Bentley
add info.describe_format
20
    branch as _mod_branch,
6241.2.1 by Jelmer Vernooij
bzr info now shows the bound location too for local branches without tree.
21
    controldir,
6883.20.1 by Jelmer Vernooij
Skip checkout description tests against git.
22
    errors,
2363.5.2 by Aaron Bentley
Implement layout description
23
    info,
24
    tests,
2363.5.5 by Aaron Bentley
add info.describe_format
25
    workingtree,
26
    repository as _mod_repository,
2363.5.2 by Aaron Bentley
Implement layout description
27
    )
6670.4.1 by Jelmer Vernooij
Update imports.
28
from ..bzr import (
29
    branch as _mod_bzrbranch,
30
    )
2363.5.2 by Aaron Bentley
Implement layout description
31
32
33
class TestInfo(tests.TestCaseWithTransport):
34
35
    def test_describe_standalone_layout(self):
36
        tree = self.make_branch_and_tree('tree')
37
        self.assertEqual('Empty control directory', info.describe_layout())
6437.9.4 by Jelmer Vernooij
Fix remaining tests.
38
        self.assertEqual(
39
            'Unshared repository with trees and colocated branches',
6653.6.1 by Jelmer Vernooij
Rename a number of attributes from bzrdir to controldir.
40
            info.describe_layout(tree.branch.repository, control=tree.controldir))
2363.5.2 by Aaron Bentley
Implement layout description
41
        tree.branch.repository.set_make_working_trees(False)
6437.9.4 by Jelmer Vernooij
Fix remaining tests.
42
        self.assertEqual('Unshared repository with colocated branches',
7143.15.2 by Jelmer Vernooij
Run autopep8.
43
                         info.describe_layout(tree.branch.repository, control=tree.controldir))
2363.5.2 by Aaron Bentley
Implement layout description
44
        self.assertEqual('Standalone branch',
7143.15.2 by Jelmer Vernooij
Run autopep8.
45
                         info.describe_layout(tree.branch.repository, tree.branch,
46
                                              control=tree.controldir))
2363.5.2 by Aaron Bentley
Implement layout description
47
        self.assertEqual('Standalone branchless tree',
7143.15.2 by Jelmer Vernooij
Run autopep8.
48
                         info.describe_layout(tree.branch.repository, None, tree,
49
                                              control=tree.controldir))
2363.5.2 by Aaron Bentley
Implement layout description
50
        self.assertEqual('Standalone tree',
7143.15.2 by Jelmer Vernooij
Run autopep8.
51
                         info.describe_layout(tree.branch.repository, tree.branch, tree,
52
                                              control=tree.controldir))
2363.5.2 by Aaron Bentley
Implement layout description
53
        tree.branch.bind(tree.branch)
54
        self.assertEqual('Bound branch',
7143.15.2 by Jelmer Vernooij
Run autopep8.
55
                         info.describe_layout(tree.branch.repository, tree.branch,
56
                                              control=tree.controldir))
2363.5.2 by Aaron Bentley
Implement layout description
57
        self.assertEqual('Checkout',
7143.15.2 by Jelmer Vernooij
Run autopep8.
58
                         info.describe_layout(tree.branch.repository, tree.branch, tree,
59
                                              control=tree.controldir))
2363.5.2 by Aaron Bentley
Implement layout description
60
        checkout = tree.branch.create_checkout('checkout', lightweight=True)
61
        self.assertEqual('Lightweight checkout',
7143.15.2 by Jelmer Vernooij
Run autopep8.
62
                         info.describe_layout(checkout.branch.repository, checkout.branch,
63
                                              checkout, control=tree.controldir))
2363.5.2 by Aaron Bentley
Implement layout description
64
65
    def test_describe_repository_layout(self):
66
        repository = self.make_repository('.', shared=True)
6241.2.1 by Jelmer Vernooij
bzr info now shows the bound location too for local branches without tree.
67
        tree = controldir.ControlDir.create_branch_convenience('tree',
7143.15.2 by Jelmer Vernooij
Run autopep8.
68
                                                               force_new_tree=True).controldir.open_workingtree()
6437.9.4 by Jelmer Vernooij
Fix remaining tests.
69
        self.assertEqual('Shared repository with trees and colocated branches',
7143.15.2 by Jelmer Vernooij
Run autopep8.
70
                         info.describe_layout(tree.branch.repository, control=tree.controldir))
2363.5.2 by Aaron Bentley
Implement layout description
71
        repository.set_make_working_trees(False)
6437.9.4 by Jelmer Vernooij
Fix remaining tests.
72
        self.assertEqual('Shared repository with colocated branches',
7143.15.2 by Jelmer Vernooij
Run autopep8.
73
                         info.describe_layout(tree.branch.repository, control=tree.controldir))
2363.5.2 by Aaron Bentley
Implement layout description
74
        self.assertEqual('Repository branch',
7143.15.2 by Jelmer Vernooij
Run autopep8.
75
                         info.describe_layout(tree.branch.repository, tree.branch,
76
                                              control=tree.controldir))
2363.5.2 by Aaron Bentley
Implement layout description
77
        self.assertEqual('Repository branchless tree',
7143.15.2 by Jelmer Vernooij
Run autopep8.
78
                         info.describe_layout(tree.branch.repository, None, tree,
79
                                              control=tree.controldir))
2363.5.2 by Aaron Bentley
Implement layout description
80
        self.assertEqual('Repository tree',
7143.15.2 by Jelmer Vernooij
Run autopep8.
81
                         info.describe_layout(tree.branch.repository, tree.branch, tree,
82
                                              control=tree.controldir))
2363.5.2 by Aaron Bentley
Implement layout description
83
        tree.branch.bind(tree.branch)
84
        self.assertEqual('Repository checkout',
7143.15.2 by Jelmer Vernooij
Run autopep8.
85
                         info.describe_layout(tree.branch.repository, tree.branch, tree,
86
                                              control=tree.controldir))
2363.5.2 by Aaron Bentley
Implement layout description
87
        checkout = tree.branch.create_checkout('checkout', lightweight=True)
2363.5.4 by Aaron Bentley
Eliminate the concept of a 'repository lightweight checkout'
88
        self.assertEqual('Lightweight checkout',
7143.15.2 by Jelmer Vernooij
Run autopep8.
89
                         info.describe_layout(checkout.branch.repository, checkout.branch,
90
                                              checkout, control=tree.controldir))
2363.5.5 by Aaron Bentley
add info.describe_format
91
92
    def assertTreeDescription(self, format):
2363.5.22 by Aaron Bentley
Restructure tests
93
        """Assert a tree's format description matches expectations"""
2363.5.6 by Aaron Bentley
Add short format description
94
        self.make_branch_and_tree('%s_tree' % format, format=format)
2363.5.5 by Aaron Bentley
add info.describe_format
95
        tree = workingtree.WorkingTree.open('%s_tree' % format)
6653.6.1 by Jelmer Vernooij
Rename a number of attributes from bzrdir to controldir.
96
        self.assertEqual(format, info.describe_format(tree.controldir,
7143.15.2 by Jelmer Vernooij
Run autopep8.
97
                                                      tree.branch.repository, tree.branch, tree))
2363.5.5 by Aaron Bentley
add info.describe_format
98
2363.5.6 by Aaron Bentley
Add short format description
99
    def assertCheckoutDescription(self, format, expected=None):
2363.5.22 by Aaron Bentley
Restructure tests
100
        """Assert a checkout's format description matches expectations"""
2363.5.6 by Aaron Bentley
Add short format description
101
        if expected is None:
102
            expected = format
103
        branch = self.make_branch('%s_cobranch' % format, format=format)
104
        # this ought to be easier...
105
        branch.create_checkout('%s_co' % format,
7143.15.2 by Jelmer Vernooij
Run autopep8.
106
                               lightweight=True).controldir.destroy_workingtree()
6241.2.1 by Jelmer Vernooij
bzr info now shows the bound location too for local branches without tree.
107
        control = controldir.ControlDir.open('%s_co' % format)
2363.5.13 by Aaron Bentley
Fix environment pollution with assertCheckoutDescription
108
        old_format = control._format.workingtree_format
109
        try:
110
            control._format.workingtree_format = \
7143.15.2 by Jelmer Vernooij
Run autopep8.
111
                controldir.format_registry.make_controldir(
112
                    format).workingtree_format
2363.5.13 by Aaron Bentley
Fix environment pollution with assertCheckoutDescription
113
            control.create_workingtree()
114
            tree = workingtree.WorkingTree.open('%s_co' % format)
6653.6.1 by Jelmer Vernooij
Rename a number of attributes from bzrdir to controldir.
115
            format_description = info.describe_format(tree.controldir,
7143.15.2 by Jelmer Vernooij
Run autopep8.
116
                                                      tree.branch.repository, tree.branch, tree)
2592.4.2 by Martin Pool
exempt experimental-* formats from test_describe_checkout_format
117
            self.assertEqual(expected, format_description,
7143.15.2 by Jelmer Vernooij
Run autopep8.
118
                             "checkout of format called %r was described as %r" %
119
                             (expected, format_description))
2363.5.13 by Aaron Bentley
Fix environment pollution with assertCheckoutDescription
120
        finally:
121
            control._format.workingtree_format = old_format
2363.5.6 by Aaron Bentley
Add short format description
122
2363.5.5 by Aaron Bentley
add info.describe_format
123
    def assertBranchDescription(self, format, expected=None):
2363.5.22 by Aaron Bentley
Restructure tests
124
        """Assert branch's format description matches expectations"""
2363.5.5 by Aaron Bentley
add info.describe_format
125
        if expected is None:
126
            expected = format
2363.5.6 by Aaron Bentley
Add short format description
127
        self.make_branch('%s_branch' % format, format=format)
2363.5.5 by Aaron Bentley
add info.describe_format
128
        branch = _mod_branch.Branch.open('%s_branch' % format)
6653.6.1 by Jelmer Vernooij
Rename a number of attributes from bzrdir to controldir.
129
        self.assertEqual(expected, info.describe_format(branch.controldir,
7143.15.2 by Jelmer Vernooij
Run autopep8.
130
                                                        branch.repository, branch, None))
2363.5.5 by Aaron Bentley
add info.describe_format
131
132
    def assertRepoDescription(self, format, expected=None):
2363.5.22 by Aaron Bentley
Restructure tests
133
        """Assert repository's format description matches expectations"""
2363.5.5 by Aaron Bentley
add info.describe_format
134
        if expected is None:
135
            expected = format
2363.5.6 by Aaron Bentley
Add short format description
136
        self.make_repository('%s_repo' % format, format=format)
2363.5.5 by Aaron Bentley
add info.describe_format
137
        repo = _mod_repository.Repository.open('%s_repo' % format)
6653.6.1 by Jelmer Vernooij
Rename a number of attributes from bzrdir to controldir.
138
        self.assertEqual(expected, info.describe_format(repo.controldir,
7143.15.2 by Jelmer Vernooij
Run autopep8.
139
                                                        repo, None, None))
2363.5.5 by Aaron Bentley
add info.describe_format
140
2363.5.22 by Aaron Bentley
Restructure tests
141
    def test_describe_tree_format(self):
6862.3.1 by Jelmer Vernooij
Don't try to get a tree description for formats that don't support trees.
142
        for key, format in controldir.format_registry.iteritems():
6241.2.1 by Jelmer Vernooij
bzr info now shows the bound location too for local branches without tree.
143
            if key in controldir.format_registry.aliases():
2363.5.5 by Aaron Bentley
add info.describe_format
144
                continue
6862.3.1 by Jelmer Vernooij
Don't try to get a tree description for formats that don't support trees.
145
            if not format().supports_workingtrees:
146
                continue
2363.5.5 by Aaron Bentley
add info.describe_format
147
            self.assertTreeDescription(key)
148
2363.5.22 by Aaron Bentley
Restructure tests
149
    def test_describe_checkout_format(self):
6241.2.1 by Jelmer Vernooij
bzr info now shows the bound location too for local branches without tree.
150
        for key in controldir.format_registry.keys():
151
            if key in controldir.format_registry.aliases():
3152.2.2 by Robert Collins
The bzrdir format registry now accepts an ``alias`` keyword to
152
                # Aliases will not describe correctly in the UI because the
153
                # real format is found.
154
                continue
155
            # legacy: weave does not support checkouts
156
            if key == 'weave':
157
                continue
6883.20.1 by Jelmer Vernooij
Skip checkout description tests against git.
158
            # foreign: git checkouts can actually be bzr controldirs
159
            if key in ('git', 'git-bare'):
160
                continue
6241.2.1 by Jelmer Vernooij
bzr info now shows the bound location too for local branches without tree.
161
            if controldir.format_registry.get_info(key).experimental:
3152.2.2 by Robert Collins
The bzrdir format registry now accepts an ``alias`` keyword to
162
                # We don't require that experimental formats support checkouts
163
                # or describe correctly in the UI.
2363.5.6 by Aaron Bentley
Add short format description
164
                continue
6241.2.1 by Jelmer Vernooij
bzr info now shows the bound location too for local branches without tree.
165
            if controldir.format_registry.get_info(key).hidden:
4976.2.1 by Ian Clatworthy
Hide most storage formats
166
                continue
2363.5.6 by Aaron Bentley
Add short format description
167
            expected = None
4977.1.2 by Ian Clatworthy
(igc) Fix comparison bug in format name tests (trivial)
168
            if key in ('pack-0.92',):
4976.2.1 by Ian Clatworthy
Hide most storage formats
169
                expected = 'pack-0.92'
3586.2.6 by Ian Clatworthy
add 1.7 and 1.7-rich-root formats
170
            elif key in ('knit', 'metaweave'):
6241.2.1 by Jelmer Vernooij
bzr info now shows the bound location too for local branches without tree.
171
                if 'metaweave' in controldir.format_registry:
5582.10.96 by Jelmer Vernooij
Support running without plugins.
172
                    expected = 'knit or metaweave'
173
                else:
174
                    expected = 'knit'
4210.4.1 by Ian Clatworthy
replace experimental development-wt5 formats with 1.14 formats
175
            elif key in ('1.14', '1.14-rich-root'):
4265.1.1 by John Arbash Meinel
Merge the a couple rev older brisbane-core into bzr.dev, most things are resolve in favor of bzr.dev
176
                expected = '1.14 or 1.14-rich-root'
2363.5.6 by Aaron Bentley
Add short format description
177
            self.assertCheckoutDescription(key, expected)
178
2363.5.22 by Aaron Bentley
Restructure tests
179
    def test_describe_branch_format(self):
6241.2.1 by Jelmer Vernooij
bzr info now shows the bound location too for local branches without tree.
180
        for key in controldir.format_registry.keys():
181
            if key in controldir.format_registry.aliases():
2363.5.5 by Aaron Bentley
add info.describe_format
182
                continue
6241.2.1 by Jelmer Vernooij
bzr info now shows the bound location too for local branches without tree.
183
            if controldir.format_registry.get_info(key).hidden:
4210.4.2 by Ian Clatworthy
split filtered views support out into WorkingTreeFormat6
184
                continue
2363.5.5 by Aaron Bentley
add info.describe_format
185
            expected = None
186
            if key in ('dirstate', 'knit'):
2363.5.17 by Aaron Bentley
Change separator from '/' to 'or'
187
                expected = 'dirstate or knit'
4977.1.2 by Ian Clatworthy
(igc) Fix comparison bug in format name tests (trivial)
188
            elif key in ('1.14',):
4976.2.1 by Ian Clatworthy
Hide most storage formats
189
                expected = '1.14'
4977.1.2 by Ian Clatworthy
(igc) Fix comparison bug in format name tests (trivial)
190
            elif key in ('1.14-rich-root',):
4976.2.1 by Ian Clatworthy
Hide most storage formats
191
                expected = '1.14-rich-root'
2363.5.5 by Aaron Bentley
add info.describe_format
192
            self.assertBranchDescription(key, expected)
193
2363.5.22 by Aaron Bentley
Restructure tests
194
    def test_describe_repo_format(self):
6241.2.1 by Jelmer Vernooij
bzr info now shows the bound location too for local branches without tree.
195
        for key in controldir.format_registry.keys():
196
            if key in controldir.format_registry.aliases():
2363.5.5 by Aaron Bentley
add info.describe_format
197
                continue
6241.2.1 by Jelmer Vernooij
bzr info now shows the bound location too for local branches without tree.
198
            if controldir.format_registry.get_info(key).hidden:
4210.4.2 by Ian Clatworthy
split filtered views support out into WorkingTreeFormat6
199
                continue
2363.5.5 by Aaron Bentley
add info.describe_format
200
            expected = None
201
            if key in ('dirstate', 'knit', 'dirstate-tags'):
2363.5.17 by Aaron Bentley
Change separator from '/' to 'or'
202
                expected = 'dirstate or dirstate-tags or knit'
4977.1.2 by Ian Clatworthy
(igc) Fix comparison bug in format name tests (trivial)
203
            elif key in ('1.14',):
4976.2.1 by Ian Clatworthy
Hide most storage formats
204
                expected = '1.14'
4977.1.2 by Ian Clatworthy
(igc) Fix comparison bug in format name tests (trivial)
205
            elif key in ('1.14-rich-root',):
4976.2.1 by Ian Clatworthy
Hide most storage formats
206
                expected = '1.14-rich-root'
2363.5.5 by Aaron Bentley
add info.describe_format
207
            self.assertRepoDescription(key, expected)
208
6653.6.5 by Jelmer Vernooij
Rename make_bzrdir to make_controldir.
209
        format = controldir.format_registry.make_controldir('knit')
6653.1.10 by Jelmer Vernooij
Fix remaining two tests.
210
        format.set_branch_format(_mod_bzrbranch.BzrBranchFormat6())
2363.5.5 by Aaron Bentley
add info.describe_format
211
        tree = self.make_branch_and_tree('unknown', format=format)
6653.6.1 by Jelmer Vernooij
Rename a number of attributes from bzrdir to controldir.
212
        self.assertEqual('unnamed', info.describe_format(tree.controldir,
7143.15.2 by Jelmer Vernooij
Run autopep8.
213
                                                         tree.branch.repository, tree.branch, tree))
2363.5.18 by Aaron Bentley
Get all tests passing
214
6241.4.1 by Jelmer Vernooij
Make gather_location_info understand control directories.
215
    def test_gather_location_controldir_only(self):
6653.6.5 by Jelmer Vernooij
Rename make_bzrdir to make_controldir.
216
        bzrdir = self.make_controldir('.')
6241.4.1 by Jelmer Vernooij
Make gather_location_info understand control directories.
217
        self.assertEqual([('control directory', bzrdir.user_url)],
7143.15.2 by Jelmer Vernooij
Run autopep8.
218
                         info.gather_location_info(control=bzrdir))
6241.4.1 by Jelmer Vernooij
Make gather_location_info understand control directories.
219
2363.5.18 by Aaron Bentley
Get all tests passing
220
    def test_gather_location_standalone(self):
221
        tree = self.make_branch_and_tree('tree')
6653.6.1 by Jelmer Vernooij
Rename a number of attributes from bzrdir to controldir.
222
        self.assertEqual([('branch root', tree.controldir.root_transport.base)],
7143.15.2 by Jelmer Vernooij
Run autopep8.
223
                         info.gather_location_info(
224
            tree.branch.repository, tree.branch, tree, control=tree.controldir))
6653.6.1 by Jelmer Vernooij
Rename a number of attributes from bzrdir to controldir.
225
        self.assertEqual([('branch root', tree.controldir.root_transport.base)],
7143.15.2 by Jelmer Vernooij
Run autopep8.
226
                         info.gather_location_info(
227
            tree.branch.repository, tree.branch, control=tree.controldir))
2363.5.18 by Aaron Bentley
Get all tests passing
228
        return tree
229
230
    def test_gather_location_repo(self):
231
        srepo = self.make_repository('shared', shared=True)
6241.4.1 by Jelmer Vernooij
Make gather_location_info understand control directories.
232
        self.assertEqual(
6653.6.1 by Jelmer Vernooij
Rename a number of attributes from bzrdir to controldir.
233
            [('shared repository', srepo.controldir.root_transport.base)],
234
            info.gather_location_info(srepo, control=srepo.controldir))
2363.5.18 by Aaron Bentley
Get all tests passing
235
        urepo = self.make_repository('unshared')
6241.4.1 by Jelmer Vernooij
Make gather_location_info understand control directories.
236
        self.assertEqual(
6653.6.1 by Jelmer Vernooij
Rename a number of attributes from bzrdir to controldir.
237
            [('repository', urepo.controldir.root_transport.base)],
238
            info.gather_location_info(urepo, control=urepo.controldir))
2363.5.18 by Aaron Bentley
Get all tests passing
239
240
    def test_gather_location_repo_branch(self):
241
        srepo = self.make_repository('shared', shared=True)
6241.4.1 by Jelmer Vernooij
Make gather_location_info understand control directories.
242
        self.assertEqual(
6653.6.1 by Jelmer Vernooij
Rename a number of attributes from bzrdir to controldir.
243
            [('shared repository', srepo.controldir.root_transport.base)],
244
            info.gather_location_info(srepo, control=srepo.controldir))
2363.5.18 by Aaron Bentley
Get all tests passing
245
        tree = self.make_branch_and_tree('shared/tree')
6241.4.1 by Jelmer Vernooij
Make gather_location_info understand control directories.
246
        self.assertEqual(
6653.6.1 by Jelmer Vernooij
Rename a number of attributes from bzrdir to controldir.
247
            [('shared repository', srepo.controldir.root_transport.base),
6241.4.1 by Jelmer Vernooij
Make gather_location_info understand control directories.
248
             ('repository branch', tree.branch.base)],
6653.6.1 by Jelmer Vernooij
Rename a number of attributes from bzrdir to controldir.
249
            info.gather_location_info(srepo, tree.branch, tree, srepo.controldir))
2363.5.18 by Aaron Bentley
Get all tests passing
250
2363.5.22 by Aaron Bentley
Restructure tests
251
    def test_gather_location_light_checkout(self):
2363.5.18 by Aaron Bentley
Get all tests passing
252
        tree = self.make_branch_and_tree('tree')
253
        lcheckout = tree.branch.create_checkout('lcheckout', lightweight=True)
254
        self.assertEqual(
6653.6.1 by Jelmer Vernooij
Rename a number of attributes from bzrdir to controldir.
255
            [('light checkout root', lcheckout.controldir.root_transport.base),
256
             ('checkout of branch', tree.controldir.root_transport.base)],
2363.5.22 by Aaron Bentley
Restructure tests
257
            self.gather_tree_location_info(lcheckout))
258
259
    def test_gather_location_heavy_checkout(self):
260
        tree = self.make_branch_and_tree('tree')
261
        checkout = tree.branch.create_checkout('checkout')
262
        self.assertEqual(
6653.6.1 by Jelmer Vernooij
Rename a number of attributes from bzrdir to controldir.
263
            [('checkout root', checkout.controldir.root_transport.base),
264
             ('checkout of branch', tree.controldir.root_transport.base)],
2363.5.22 by Aaron Bentley
Restructure tests
265
            self.gather_tree_location_info(checkout))
266
        light_checkout = checkout.branch.create_checkout('light_checkout',
267
                                                         lightweight=True)
268
        self.assertEqual(
2363.5.23 by Aaron Bentley
Output 2-tuples from gather_locations
269
            [('light checkout root',
6653.6.1 by Jelmer Vernooij
Rename a number of attributes from bzrdir to controldir.
270
              light_checkout.controldir.root_transport.base),
271
             ('checkout root', checkout.controldir.root_transport.base),
272
             ('checkout of branch', tree.controldir.root_transport.base)],
7143.15.2 by Jelmer Vernooij
Run autopep8.
273
            self.gather_tree_location_info(light_checkout)
274
            )
2363.5.22 by Aaron Bentley
Restructure tests
275
276
    def test_gather_location_shared_repo_checkout(self):
277
        tree = self.make_branch_and_tree('tree')
2363.5.18 by Aaron Bentley
Get all tests passing
278
        srepo = self.make_repository('shared', shared=True)
2363.5.22 by Aaron Bentley
Restructure tests
279
        shared_checkout = tree.branch.create_checkout('shared/checkout')
2363.5.18 by Aaron Bentley
Get all tests passing
280
        self.assertEqual(
2363.5.23 by Aaron Bentley
Output 2-tuples from gather_locations
281
            [('repository checkout root',
6653.6.1 by Jelmer Vernooij
Rename a number of attributes from bzrdir to controldir.
282
              shared_checkout.controldir.root_transport.base),
283
             ('checkout of branch', tree.controldir.root_transport.base),
284
             ('shared repository', srepo.controldir.root_transport.base)],
7143.15.2 by Jelmer Vernooij
Run autopep8.
285
            self.gather_tree_location_info(shared_checkout))
2363.5.22 by Aaron Bentley
Restructure tests
286
287
    def gather_tree_location_info(self, tree):
6241.4.1 by Jelmer Vernooij
Make gather_location_info understand control directories.
288
        return info.gather_location_info(
6653.6.1 by Jelmer Vernooij
Rename a number of attributes from bzrdir to controldir.
289
            tree.branch.repository, tree.branch, tree, tree.controldir)
2363.5.19 by Aaron Bentley
Add support for bound branches
290
291
    def test_gather_location_bound(self):
292
        branch = self.make_branch('branch')
293
        bound_branch = self.make_branch('bound_branch')
294
        bound_branch.bind(branch)
295
        self.assertEqual(
6653.6.1 by Jelmer Vernooij
Rename a number of attributes from bzrdir to controldir.
296
            [('branch root', bound_branch.controldir.root_transport.base),
297
             ('bound to branch', branch.controldir.root_transport.base)],
6241.4.1 by Jelmer Vernooij
Make gather_location_info understand control directories.
298
            info.gather_location_info(
6653.6.1 by Jelmer Vernooij
Rename a number of attributes from bzrdir to controldir.
299
                bound_branch.repository, bound_branch, control=bound_branch.controldir)
2363.5.19 by Aaron Bentley
Add support for bound branches
300
        )
1551.15.41 by Aaron Bentley
Make info provide more related brances, and format all branches nicely
301
6241.2.1 by Jelmer Vernooij
bzr info now shows the bound location too for local branches without tree.
302
    def test_gather_location_bound_in_repository(self):
303
        repo = self.make_repository('repo', shared=True)
304
        repo.set_make_working_trees(False)
305
        branch = self.make_branch('branch')
306
        bound_branch = controldir.ControlDir.create_branch_convenience(
307
            'repo/bound_branch')
308
        bound_branch.bind(branch)
309
        self.assertEqual(
6653.6.1 by Jelmer Vernooij
Rename a number of attributes from bzrdir to controldir.
310
            [('shared repository', bound_branch.repository.controldir.user_url),
311
             ('repository branch', bound_branch.controldir.user_url),
312
             ('bound to branch', branch.controldir.user_url)],
6241.2.1 by Jelmer Vernooij
bzr info now shows the bound location too for local branches without tree.
313
            info.gather_location_info(bound_branch.repository, bound_branch)
314
        )
315
1551.15.41 by Aaron Bentley
Make info provide more related brances, and format all branches nicely
316
    def test_location_list(self):
2804.4.3 by Alexander Belchenko
fix for test_info-tests: using osutils.getcwd instead of os.getcwd (sigh)
317
        if sys.platform == 'win32':
318
            raise tests.TestSkipped('Windows-unfriendly test')
1551.15.41 by Aaron Bentley
Make info provide more related brances, and format all branches nicely
319
        locs = info.LocationList('/home/foo')
320
        locs.add_url('a', 'file:///home/foo/')
321
        locs.add_url('b', 'file:///home/foo/bar/')
322
        locs.add_url('c', 'file:///home/bar/bar')
323
        locs.add_url('d', 'http://example.com/example/')
324
        locs.add_url('e', None)
1551.15.43 by Aaron Bentley
Provide ways of getting at unicode-clean output
325
        self.assertEqual(locs.locs, [('a', '.'),
1551.15.41 by Aaron Bentley
Make info provide more related brances, and format all branches nicely
326
                                     ('b', 'bar'),
327
                                     ('c', '/home/bar/bar'),
328
                                     ('d', 'http://example.com/example/')])
1551.15.43 by Aaron Bentley
Provide ways of getting at unicode-clean output
329
        self.assertEqualDiff('  a: .\n  b: bar\n  c: /home/bar/bar\n'
330
                             '  d: http://example.com/example/\n',
331
                             ''.join(locs.get_lines()))
1551.15.41 by Aaron Bentley
Make info provide more related brances, and format all branches nicely
332
333
    def test_gather_related_braches(self):
334
        branch = self.make_branch('.')
6404.6.1 by Vincent Ladeuil
Tests passing for a first rough version of a cached branch config store. The changes here are too invasive and several parallel proposals have been made.
335
        branch.lock_write()
336
        try:
337
            branch.set_public_branch('baz')
338
            branch.set_push_location('bar')
339
            branch.set_parent('foo')
340
            branch.set_submit_branch('qux')
341
        finally:
342
            branch.unlock()
1551.15.41 by Aaron Bentley
Make info provide more related brances, and format all branches nicely
343
        self.assertEqual(
344
            [('public branch', 'baz'), ('push branch', 'bar'),
345
             ('parent branch', 'foo'), ('submit branch', 'qux')],
1551.15.43 by Aaron Bentley
Provide ways of getting at unicode-clean output
346
            info._gather_related_branches(branch).locs)