/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 bzrlib/tests/test_reconfigure.py

  • Committer: Robert Collins
  • Date: 2007-07-15 15:40:37 UTC
  • mto: (2592.3.33 repository)
  • mto: This revision was merged to the branch mainline in revision 2624.
  • Revision ID: robertc@robertcollins.net-20070715154037-3ar8g89decddc9su
Make GraphIndex accept nodes as key, value, references, so that the method
signature is closer to what a simple key->value index delivers. Also
change the behaviour when the reference list count is zero to accept
key, value as nodes, and emit key, value to make it identical in that case
to a simple key->value index. This may not be a good idea, but for now it
seems ok.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
# Copyright (C) 2007, 2008, 2009 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
 
from bzrlib import (
18
 
    branch as _mod_branch,
19
 
    bzrdir,
20
 
    errors,
21
 
    reconfigure,
22
 
    repository,
23
 
    tests,
24
 
    workingtree,
25
 
    )
26
 
 
27
 
 
28
 
class TestReconfigure(tests.TestCaseWithTransport):
29
 
 
30
 
    def test_tree_to_branch(self):
31
 
        tree = self.make_branch_and_tree('tree')
32
 
        reconfiguration = reconfigure.Reconfigure.to_branch(tree.bzrdir)
33
 
        reconfiguration.apply()
34
 
        self.assertRaises(errors.NoWorkingTree, workingtree.WorkingTree.open,
35
 
                          'tree')
36
 
 
37
 
    def test_modified_tree_to_branch(self):
38
 
        tree = self.make_branch_and_tree('tree')
39
 
        self.build_tree(['tree/file'])
40
 
        tree.add('file')
41
 
        reconfiguration = reconfigure.Reconfigure.to_branch(tree.bzrdir)
42
 
        self.assertRaises(errors.UncommittedChanges, reconfiguration.apply)
43
 
        reconfiguration.apply(force=True)
44
 
        self.assertRaises(errors.NoWorkingTree, workingtree.WorkingTree.open,
45
 
                          'tree')
46
 
 
47
 
    def test_tree_with_pending_merge_to_branch(self):
48
 
        tree = self.make_branch_and_tree('tree')
49
 
        other_tree = tree.bzrdir.sprout('other').open_workingtree()
50
 
        self.build_tree(['other/file'])
51
 
        other_tree.add('file')
52
 
        other_tree.commit('file added')
53
 
        tree.merge_from_branch(other_tree.branch)
54
 
        reconfiguration = reconfigure.Reconfigure.to_branch(tree.bzrdir)
55
 
        self.assertRaises(errors.UncommittedChanges, reconfiguration.apply)
56
 
        reconfiguration.apply(force=True)
57
 
        self.assertRaises(errors.NoWorkingTree, workingtree.WorkingTree.open,
58
 
                          'tree')
59
 
 
60
 
    def test_branch_to_branch(self):
61
 
        branch = self.make_branch('branch')
62
 
        self.assertRaises(errors.AlreadyBranch,
63
 
                          reconfigure.Reconfigure.to_branch, branch.bzrdir)
64
 
 
65
 
    def test_repo_to_branch(self):
66
 
        repo = self.make_repository('repo')
67
 
        reconfiguration = reconfigure.Reconfigure.to_branch(repo.bzrdir)
68
 
        reconfiguration.apply()
69
 
 
70
 
    def test_checkout_to_branch(self):
71
 
        branch = self.make_branch('branch')
72
 
        checkout = branch.create_checkout('checkout')
73
 
        reconfiguration = reconfigure.Reconfigure.to_branch(checkout.bzrdir)
74
 
        reconfiguration.apply()
75
 
        self.assertIs(None, checkout.branch.get_bound_location())
76
 
 
77
 
    def prepare_lightweight_checkout_to_branch(self):
78
 
        branch = self.make_branch('branch')
79
 
        checkout = branch.create_checkout('checkout', lightweight=True)
80
 
        checkout.commit('first commit', rev_id='rev1')
81
 
        reconfiguration = reconfigure.Reconfigure.to_branch(checkout.bzrdir)
82
 
        return reconfiguration, checkout
83
 
 
84
 
    def test_lightweight_checkout_to_branch(self):
85
 
        reconfiguration, checkout = \
86
 
            self.prepare_lightweight_checkout_to_branch()
87
 
        reconfiguration.apply()
88
 
        checkout_branch = checkout.bzrdir.open_branch()
89
 
        self.assertEqual(checkout_branch.bzrdir.root_transport.base,
90
 
                         checkout.bzrdir.root_transport.base)
91
 
        self.assertEqual('rev1', checkout_branch.last_revision())
92
 
        repo = checkout.bzrdir.open_repository()
93
 
        repo.get_revision('rev1')
94
 
 
95
 
    def test_lightweight_checkout_to_branch_tags(self):
96
 
        reconfiguration, checkout = \
97
 
            self.prepare_lightweight_checkout_to_branch()
98
 
        checkout.branch.tags.set_tag('foo', 'bar')
99
 
        reconfiguration.apply()
100
 
        checkout_branch = checkout.bzrdir.open_branch()
101
 
        self.assertEqual('bar', checkout_branch.tags.lookup_tag('foo'))
102
 
 
103
 
    def prepare_lightweight_checkout_to_checkout(self):
104
 
        branch = self.make_branch('branch')
105
 
        checkout = branch.create_checkout('checkout', lightweight=True)
106
 
        reconfiguration = reconfigure.Reconfigure.to_checkout(checkout.bzrdir)
107
 
        return reconfiguration, checkout
108
 
 
109
 
    def test_lightweight_checkout_to_checkout(self):
110
 
        reconfiguration, checkout = \
111
 
            self.prepare_lightweight_checkout_to_checkout()
112
 
        reconfiguration.apply()
113
 
        checkout_branch = checkout.bzrdir.open_branch()
114
 
        self.assertIsNot(checkout_branch.get_bound_location(), None)
115
 
 
116
 
    def test_lightweight_checkout_to_checkout_tags(self):
117
 
        reconfiguration, checkout = \
118
 
            self.prepare_lightweight_checkout_to_checkout()
119
 
        checkout.branch.tags.set_tag('foo', 'bar')
120
 
        reconfiguration.apply()
121
 
        checkout_branch = checkout.bzrdir.open_branch()
122
 
        self.assertEqual('bar', checkout_branch.tags.lookup_tag('foo'))
123
 
 
124
 
    def test_lightweight_conversion_uses_shared_repo(self):
125
 
        parent = self.make_branch('parent')
126
 
        shared_repo = self.make_repository('repo', shared=True)
127
 
        checkout = parent.create_checkout('repo/checkout', lightweight=True)
128
 
        reconfigure.Reconfigure.to_tree(checkout.bzrdir).apply()
129
 
        checkout_repo = checkout.bzrdir.open_branch().repository
130
 
        self.assertEqual(shared_repo.bzrdir.root_transport.base,
131
 
                         checkout_repo.bzrdir.root_transport.base)
132
 
 
133
 
    def test_branch_to_tree(self):
134
 
        branch = self.make_branch('branch')
135
 
        reconfiguration=reconfigure.Reconfigure.to_tree(branch.bzrdir)
136
 
        reconfiguration.apply()
137
 
        branch.bzrdir.open_workingtree()
138
 
 
139
 
    def test_tree_to_tree(self):
140
 
        tree = self.make_branch_and_tree('tree')
141
 
        self.assertRaises(errors.AlreadyTree, reconfigure.Reconfigure.to_tree,
142
 
                          tree.bzrdir)
143
 
 
144
 
    def test_select_bind_location(self):
145
 
        branch = self.make_branch('branch')
146
 
        reconfiguration = reconfigure.Reconfigure(branch.bzrdir)
147
 
        self.assertRaises(errors.NoBindLocation,
148
 
                          reconfiguration._select_bind_location)
149
 
        branch.set_parent('http://parent')
150
 
        self.assertEqual('http://parent',
151
 
                         reconfiguration._select_bind_location())
152
 
        branch.set_push_location('sftp://push')
153
 
        self.assertEqual('sftp://push',
154
 
                         reconfiguration._select_bind_location())
155
 
        branch.set_bound_location('bzr://foo/old-bound')
156
 
        branch.set_bound_location(None)
157
 
        self.assertEqual('bzr://foo/old-bound',
158
 
                         reconfiguration._select_bind_location())
159
 
        branch.set_bound_location('bzr://foo/cur-bound')
160
 
        self.assertEqual('bzr://foo/cur-bound',
161
 
                         reconfiguration._select_bind_location())
162
 
        reconfiguration.new_bound_location = 'ftp://user-specified'
163
 
        self.assertEqual('ftp://user-specified',
164
 
                         reconfiguration._select_bind_location())
165
 
 
166
 
    def test_select_reference_bind_location(self):
167
 
        branch = self.make_branch('branch')
168
 
        checkout = branch.create_checkout('checkout', lightweight=True)
169
 
        reconfiguration = reconfigure.Reconfigure(checkout.bzrdir)
170
 
        self.assertEqual(branch.base,
171
 
                         reconfiguration._select_bind_location())
172
 
 
173
 
    def test_tree_to_checkout(self):
174
 
        # A tree with no related branches and no supplied bind location cannot
175
 
        # become a checkout
176
 
        parent = self.make_branch('parent')
177
 
 
178
 
        tree = self.make_branch_and_tree('tree')
179
 
        reconfiguration = reconfigure.Reconfigure.to_checkout(tree.bzrdir)
180
 
        self.assertRaises(errors.NoBindLocation, reconfiguration.apply)
181
 
        # setting a parent allows it to become a checkout
182
 
        tree.branch.set_parent(parent.base)
183
 
        reconfiguration.apply()
184
 
        # supplying a location allows it to become a checkout
185
 
        tree2 = self.make_branch_and_tree('tree2')
186
 
        reconfiguration = reconfigure.Reconfigure.to_checkout(tree2.bzrdir,
187
 
                                                              parent.base)
188
 
        reconfiguration.apply()
189
 
 
190
 
    def test_tree_to_lightweight_checkout(self):
191
 
        # A tree with no related branches and no supplied bind location cannot
192
 
        # become a checkout
193
 
        parent = self.make_branch('parent')
194
 
 
195
 
        tree = self.make_branch_and_tree('tree')
196
 
        reconfiguration = reconfigure.Reconfigure.to_lightweight_checkout(
197
 
            tree.bzrdir)
198
 
        self.assertRaises(errors.NoBindLocation, reconfiguration.apply)
199
 
        # setting a parent allows it to become a checkout
200
 
        tree.branch.set_parent(parent.base)
201
 
        reconfiguration.apply()
202
 
        # supplying a location allows it to become a checkout
203
 
        tree2 = self.make_branch_and_tree('tree2')
204
 
        reconfiguration = reconfigure.Reconfigure.to_lightweight_checkout(
205
 
            tree2.bzrdir, parent.base)
206
 
        reconfiguration.apply()
207
 
 
208
 
    def test_checkout_to_checkout(self):
209
 
        parent = self.make_branch('parent')
210
 
        checkout = parent.create_checkout('checkout')
211
 
        self.assertRaises(errors.AlreadyCheckout,
212
 
                          reconfigure.Reconfigure.to_checkout, checkout.bzrdir)
213
 
 
214
 
    def make_unsynced_checkout(self):
215
 
        parent = self.make_branch('parent')
216
 
        checkout = parent.create_checkout('checkout')
217
 
        checkout.commit('test', rev_id='new-commit', local=True)
218
 
        reconfiguration = reconfigure.Reconfigure.to_lightweight_checkout(
219
 
            checkout.bzrdir)
220
 
        return checkout, parent, reconfiguration
221
 
 
222
 
    def test_unsynced_checkout_to_lightweight(self):
223
 
        checkout, parent, reconfiguration = self.make_unsynced_checkout()
224
 
        self.assertRaises(errors.UnsyncedBranches, reconfiguration.apply)
225
 
 
226
 
    def test_synced_checkout_to_lightweight(self):
227
 
        checkout, parent, reconfiguration = self.make_unsynced_checkout()
228
 
        parent.pull(checkout.branch)
229
 
        reconfiguration.apply()
230
 
        wt = checkout.bzrdir.open_workingtree()
231
 
        self.assertTrue(parent.repository.has_same_location(
232
 
            wt.branch.repository))
233
 
        parent.repository.get_revision('new-commit')
234
 
        self.assertRaises(errors.NoRepositoryPresent,
235
 
                          checkout.bzrdir.open_repository)
236
 
 
237
 
    def prepare_branch_to_lightweight_checkout(self):
238
 
        parent = self.make_branch('parent')
239
 
        child = parent.bzrdir.sprout('child').open_workingtree()
240
 
        child.commit('test', rev_id='new-commit')
241
 
        parent.pull(child.branch)
242
 
        child.bzrdir.destroy_workingtree()
243
 
        reconfiguration = reconfigure.Reconfigure.to_lightweight_checkout(
244
 
            child.bzrdir)
245
 
        return parent, child, reconfiguration
246
 
 
247
 
    def test_branch_to_lightweight_checkout(self):
248
 
        parent, child, reconfiguration = \
249
 
            self.prepare_branch_to_lightweight_checkout()
250
 
        reconfiguration.apply()
251
 
        self.assertTrue(reconfiguration._destroy_branch)
252
 
        wt = child.bzrdir.open_workingtree()
253
 
        self.assertTrue(parent.repository.has_same_location(
254
 
            wt.branch.repository))
255
 
        parent.repository.get_revision('new-commit')
256
 
        self.assertRaises(errors.NoRepositoryPresent,
257
 
                          child.bzrdir.open_repository)
258
 
 
259
 
    def test_branch_to_lightweight_checkout_failure(self):
260
 
        parent, child, reconfiguration = \
261
 
            self.prepare_branch_to_lightweight_checkout()
262
 
        old_Repository_fetch = repository.Repository.fetch
263
 
        repository.Repository.fetch = None
264
 
        try:
265
 
            self.assertRaises(TypeError, reconfiguration.apply)
266
 
        finally:
267
 
            repository.Repository.fetch = old_Repository_fetch
268
 
        child = _mod_branch.Branch.open('child')
269
 
        self.assertContainsRe(child.base, 'child/$')
270
 
 
271
 
    def test_branch_to_lightweight_checkout_fetch_tags(self):
272
 
        parent, child, reconfiguration = \
273
 
            self.prepare_branch_to_lightweight_checkout()
274
 
        child.branch.tags.set_tag('foo', 'bar')
275
 
        reconfiguration.apply()
276
 
        child = _mod_branch.Branch.open('child')
277
 
        self.assertEqual('bar', parent.tags.lookup_tag('foo'))
278
 
 
279
 
    def test_lightweight_checkout_to_lightweight_checkout(self):
280
 
        parent = self.make_branch('parent')
281
 
        checkout = parent.create_checkout('checkout', lightweight=True)
282
 
        self.assertRaises(errors.AlreadyLightweightCheckout,
283
 
                          reconfigure.Reconfigure.to_lightweight_checkout,
284
 
                          checkout.bzrdir)
285
 
 
286
 
    def test_repo_to_tree(self):
287
 
        repo = self.make_repository('repo')
288
 
        reconfiguration = reconfigure.Reconfigure.to_tree(repo.bzrdir)
289
 
        reconfiguration.apply()
290
 
        workingtree.WorkingTree.open('repo')
291
 
 
292
 
    def test_shared_repo_to_lightweight_checkout(self):
293
 
        repo = self.make_repository('repo', shared=True)
294
 
        reconfiguration = reconfigure.Reconfigure.to_lightweight_checkout(
295
 
            repo.bzrdir)
296
 
        self.assertRaises(errors.NoBindLocation, reconfiguration.apply)
297
 
        branch = self.make_branch('branch')
298
 
        reconfiguration = reconfigure.Reconfigure.to_lightweight_checkout(
299
 
            repo.bzrdir, 'branch')
300
 
        reconfiguration.apply()
301
 
        workingtree.WorkingTree.open('repo')
302
 
        repository.Repository.open('repo')
303
 
 
304
 
    def test_unshared_repo_to_lightweight_checkout(self):
305
 
        repo = self.make_repository('repo', shared=False)
306
 
        branch = self.make_branch('branch')
307
 
        reconfiguration = reconfigure.Reconfigure.to_lightweight_checkout(
308
 
            repo.bzrdir, 'branch')
309
 
        reconfiguration.apply()
310
 
        workingtree.WorkingTree.open('repo')
311
 
        self.assertRaises(errors.NoRepositoryPresent,
312
 
                          repository.Repository.open, 'repo')
313
 
 
314
 
    def test_standalone_to_use_shared(self):
315
 
        self.build_tree(['root/'])
316
 
        tree = self.make_branch_and_tree('root/tree')
317
 
        tree.commit('Hello', rev_id='hello-id')
318
 
        repo = self.make_repository('root', shared=True)
319
 
        reconfiguration = reconfigure.Reconfigure.to_use_shared(tree.bzrdir)
320
 
        reconfiguration.apply()
321
 
        tree = workingtree.WorkingTree.open('root/tree')
322
 
        self.assertTrue(repo.has_same_location(tree.branch.repository))
323
 
        self.assertEqual('Hello', repo.get_revision('hello-id').message)
324
 
 
325
 
    def add_dead_head(self, tree):
326
 
        revno, revision_id = tree.branch.last_revision_info()
327
 
        tree.commit('Dead head', rev_id='dead-head-id')
328
 
        tree.branch.set_last_revision_info(revno, revision_id)
329
 
        tree.set_last_revision(revision_id)
330
 
 
331
 
    def test_standalone_to_use_shared_preserves_dead_heads(self):
332
 
        self.build_tree(['root/'])
333
 
        tree = self.make_branch_and_tree('root/tree')
334
 
        self.add_dead_head(tree)
335
 
        tree.commit('Hello', rev_id='hello-id')
336
 
        repo = self.make_repository('root', shared=True)
337
 
        reconfiguration = reconfigure.Reconfigure.to_use_shared(tree.bzrdir)
338
 
        reconfiguration.apply()
339
 
        tree = workingtree.WorkingTree.open('root/tree')
340
 
        message = repo.get_revision('dead-head-id').message
341
 
        self.assertEqual('Dead head', message)
342
 
 
343
 
    def make_repository_tree(self):
344
 
        self.build_tree(['root/'])
345
 
        repo = self.make_repository('root', shared=True)
346
 
        tree = self.make_branch_and_tree('root/tree')
347
 
        reconfigure.Reconfigure.to_use_shared(tree.bzrdir).apply()
348
 
        return workingtree.WorkingTree.open('root/tree')
349
 
 
350
 
    def test_use_shared_to_use_shared(self):
351
 
        tree = self.make_repository_tree()
352
 
        self.assertRaises(errors.AlreadyUsingShared,
353
 
                          reconfigure.Reconfigure.to_use_shared, tree.bzrdir)
354
 
 
355
 
    def test_use_shared_to_standalone(self):
356
 
        tree = self.make_repository_tree()
357
 
        tree.commit('Hello', rev_id='hello-id')
358
 
        reconfigure.Reconfigure.to_standalone(tree.bzrdir).apply()
359
 
        tree = workingtree.WorkingTree.open('root/tree')
360
 
        repo = tree.branch.repository
361
 
        self.assertEqual(repo.bzrdir.root_transport.base,
362
 
                         tree.bzrdir.root_transport.base)
363
 
        self.assertEqual('Hello', repo.get_revision('hello-id').message)
364
 
 
365
 
    def test_use_shared_to_standalone_preserves_dead_heads(self):
366
 
        tree = self.make_repository_tree()
367
 
        self.add_dead_head(tree)
368
 
        tree.commit('Hello', rev_id='hello-id')
369
 
        reconfigure.Reconfigure.to_standalone(tree.bzrdir).apply()
370
 
        tree = workingtree.WorkingTree.open('root/tree')
371
 
        repo = tree.branch.repository
372
 
        self.assertRaises(errors.NoSuchRevision, repo.get_revision,
373
 
                          'dead-head-id')
374
 
 
375
 
    def test_standalone_to_standalone(self):
376
 
        tree = self.make_branch_and_tree('tree')
377
 
        self.assertRaises(errors.AlreadyStandalone,
378
 
                          reconfigure.Reconfigure.to_standalone, tree.bzrdir)
379
 
 
380
 
    def make_unsynced_branch_reconfiguration(self):
381
 
        parent = self.make_branch_and_tree('parent')
382
 
        parent.commit('commit 1')
383
 
        child = parent.bzrdir.sprout('child').open_workingtree()
384
 
        child.commit('commit 2')
385
 
        return reconfigure.Reconfigure.to_lightweight_checkout(child.bzrdir)
386
 
 
387
 
    def test_unsynced_branch_to_lightweight_checkout_unforced(self):
388
 
        reconfiguration = self.make_unsynced_branch_reconfiguration()
389
 
        self.assertRaises(errors.UnsyncedBranches, reconfiguration.apply)
390
 
 
391
 
    def test_unsynced_branch_to_lightweight_checkout_forced(self):
392
 
        reconfiguration = self.make_unsynced_branch_reconfiguration()
393
 
        reconfiguration.apply(force=True)
394
 
 
395
 
    def make_repository_with_without_trees(self, with_trees):
396
 
        repo = self.make_repository('repo', shared=True)
397
 
        repo.set_make_working_trees(with_trees)
398
 
        return repo
399
 
 
400
 
    def test_make_with_trees(self):
401
 
        repo = self.make_repository_with_without_trees(False)
402
 
        reconfiguration = reconfigure.Reconfigure.set_repository_trees(
403
 
            repo.bzrdir, True)
404
 
        reconfiguration.apply()
405
 
        self.assertIs(True, repo.make_working_trees())
406
 
 
407
 
    def test_make_without_trees(self):
408
 
        repo = self.make_repository_with_without_trees(True)
409
 
        reconfiguration = reconfigure.Reconfigure.set_repository_trees(
410
 
            repo.bzrdir, False)
411
 
        reconfiguration.apply()
412
 
        self.assertIs(False, repo.make_working_trees())
413
 
 
414
 
    def test_make_with_trees_already_with_trees(self):
415
 
        repo = self.make_repository_with_without_trees(True)
416
 
        e = self.assertRaises(errors.AlreadyWithTrees,
417
 
           reconfigure.Reconfigure.set_repository_trees, repo.bzrdir, True)
418
 
        self.assertContainsRe(str(e),
419
 
            r"Shared repository '.*' already creates working trees.")
420
 
 
421
 
    def test_make_without_trees_already_no_trees(self):
422
 
        repo = self.make_repository_with_without_trees(False)
423
 
        e = self.assertRaises(errors.AlreadyWithNoTrees,
424
 
            reconfigure.Reconfigure.set_repository_trees, repo.bzrdir, False)
425
 
        self.assertContainsRe(str(e),
426
 
            r"Shared repository '.*' already doesn't create working trees.")
427
 
 
428
 
    def test_repository_tree_reconfiguration_not_supported(self):
429
 
        tree = self.make_branch_and_tree('tree')
430
 
        e = self.assertRaises(errors.ReconfigurationNotSupported,
431
 
            reconfigure.Reconfigure.set_repository_trees, tree.bzrdir, None)
432
 
        self.assertContainsRe(str(e),
433
 
            r"Requested reconfiguration of '.*' is not supported.")
434
 
 
435
 
    def test_lightweight_checkout_to_tree_preserves_reference_locations(self):
436
 
        format = bzrdir.format_registry.make_bzrdir('1.9')
437
 
        format.set_branch_format(_mod_branch.BzrBranchFormat8())
438
 
        tree = self.make_branch_and_tree('tree', format=format)
439
 
        tree.branch.set_reference_info('file_id', 'path', '../location')
440
 
        checkout = tree.branch.create_checkout('checkout', lightweight=True)
441
 
        reconfiguration = reconfigure.Reconfigure.to_tree(checkout.bzrdir)
442
 
        reconfiguration.apply()
443
 
        checkout_branch = checkout.bzrdir.open_branch()
444
 
        self.assertEqual(('path', '../location'),
445
 
                         checkout_branch.get_reference_info('file_id'))