286
286
self.build_tree(["foo/", "bar/"], transport=t)
287
287
def check_format(format, url):
288
288
format.initialize(url)
289
t = _mod_transport.get_transport(url)
289
t = _mod_transport.get_transport_from_path(url)
290
290
found_format = bzrdir.BzrDirFormat.find_format(t)
291
291
self.assertIsInstance(found_format, format.__class__)
292
292
check_format(BzrDirFormatTest1(), "foo")
295
295
def test_find_format_nothing_there(self):
296
296
self.assertRaises(NotBranchError,
297
297
bzrdir.BzrDirFormat.find_format,
298
_mod_transport.get_transport('.'))
298
_mod_transport.get_transport_from_path('.'))
300
300
def test_find_format_unknown_format(self):
301
301
t = self.get_transport()
303
303
t.put_bytes('.bzr/branch-format', '')
304
304
self.assertRaises(UnknownFormatError,
305
305
bzrdir.BzrDirFormat.find_format,
306
_mod_transport.get_transport('.'))
306
_mod_transport.get_transport_from_path('.'))
308
308
def test_register_unregister_format(self):
309
309
format = SampleBzrDirFormat()
317
317
# which bzrdir.open_containing will refuse (not supported)
318
318
self.assertRaises(UnsupportedFormatError, bzrdir.BzrDir.open_containing, url)
319
319
# but open_downlevel will work
320
t = _mod_transport.get_transport(url)
320
t = _mod_transport.get_transport_from_url(url)
321
321
self.assertEqual(format.open(t), bzrdir.BzrDir.open_unsupported(url))
322
322
# unregister the format
323
323
bzrdir.BzrProber.formats.remove(format.get_format_string())
513
513
# Clone source into directory
514
514
target = source_bzrdir.clone(self.get_url('parent/target'))
516
def test_format_initialize_on_transport_ex_stacked_on(self):
517
# trunk is a stackable format. Note that its in the same server area
518
# which is what launchpad does, but not sufficient to exercise the
520
trunk = self.make_branch('trunk', format='1.9')
521
t = self.get_transport('stacked')
522
old_fmt = bzrdir.format_registry.make_bzrdir('pack-0.92')
523
repo_name = old_fmt.repository_format.network_name()
524
# Should end up with a 1.9 format (stackable)
525
repo, control, require_stacking, repo_policy = \
526
old_fmt.initialize_on_transport_ex(t,
527
repo_format_name=repo_name, stacked_on='../trunk',
530
# Repositories are open write-locked
531
self.assertTrue(repo.is_write_locked())
532
self.addCleanup(repo.unlock)
534
repo = control.open_repository()
535
self.assertIsInstance(control, bzrdir.BzrDir)
536
opened = bzrdir.BzrDir.open(t.base)
537
if not isinstance(old_fmt, remote.RemoteBzrDirFormat):
538
self.assertEqual(control._format.network_name(),
539
old_fmt.network_name())
540
self.assertEqual(control._format.network_name(),
541
opened._format.network_name())
542
self.assertEqual(control.__class__, opened.__class__)
543
self.assertLength(1, repo._fallback_repositories)
516
545
def test_sprout_obeys_stacking_policy(self):
517
546
child_branch, new_child_transport = self.prepare_default_stacking()
518
547
new_child = child_branch.bzrdir.sprout(new_child_transport.base)
711
740
def test_open_containing_from_transport(self):
712
741
self.assertRaises(NotBranchError,
713
742
bzrdir.BzrDir.open_containing_from_transport,
714
_mod_transport.get_transport(self.get_readonly_url('')))
743
_mod_transport.get_transport_from_url(self.get_readonly_url('')))
715
744
self.assertRaises(NotBranchError,
716
745
bzrdir.BzrDir.open_containing_from_transport,
717
_mod_transport.get_transport(self.get_readonly_url('g/p/q')))
746
_mod_transport.get_transport_from_url(
747
self.get_readonly_url('g/p/q')))
718
748
control = bzrdir.BzrDir.create(self.get_url())
719
749
branch, relpath = bzrdir.BzrDir.open_containing_from_transport(
720
_mod_transport.get_transport(self.get_readonly_url('')))
750
_mod_transport.get_transport_from_url(
751
self.get_readonly_url('')))
721
752
self.assertEqual('', relpath)
722
753
branch, relpath = bzrdir.BzrDir.open_containing_from_transport(
723
_mod_transport.get_transport(self.get_readonly_url('g/p/q')))
754
_mod_transport.get_transport_from_url(
755
self.get_readonly_url('g/p/q')))
724
756
self.assertEqual('g/p/q', relpath)
726
758
def test_open_containing_tree_or_branch(self):
899
931
def evaluate(bzrdir):
901
933
repo = bzrdir.open_repository()
902
except NoRepositoryPresent:
934
except errors.NoRepositoryPresent:
903
935
return True, bzrdir.root_transport.base
905
937
return False, bzrdir.root_transport.base
1320
1352
self.assertEqual('fail', err._preformatted_string)
1322
1354
def test_post_repo_init(self):
1323
from bzrlib.bzrdir import RepoInitHookParams
1355
from bzrlib.controldir import RepoInitHookParams
1325
1357
bzrdir.BzrDir.hooks.install_named_hook('post_repo_init',
1326
1358
calls.append, None)
1365
1397
self._transport.put_bytes("a.~1~", "some content")
1366
1398
self.assertEqual("a.~2~", self._bzrdir._available_backup_name("a"))
1401
class TestMeta1DirColoFormat(TestCaseWithTransport):
1402
"""Tests specific to the meta1 dir with colocated branches format."""
1404
def test_supports_colo(self):
1405
format = bzrdir.BzrDirMetaFormat1Colo()
1406
self.assertTrue(format.colocated_branches)
1408
def test_upgrade_from_2a(self):
1409
tree = self.make_branch_and_tree('.', format='2a')
1410
format = bzrdir.BzrDirMetaFormat1Colo()
1411
self.assertTrue(tree.bzrdir.needs_format_conversion(format))
1412
converter = tree.bzrdir._format.get_converter(format)
1413
result = converter.convert(tree.bzrdir, None)
1414
self.assertIsInstance(result._format, bzrdir.BzrDirMetaFormat1Colo)
1415
self.assertFalse(result.needs_format_conversion(format))
1417
def test_downgrade_to_2a(self):
1418
tree = self.make_branch_and_tree('.', format='development-colo')
1419
format = bzrdir.BzrDirMetaFormat1()
1420
self.assertTrue(tree.bzrdir.needs_format_conversion(format))
1421
converter = tree.bzrdir._format.get_converter(format)
1422
result = converter.convert(tree.bzrdir, None)
1423
self.assertIsInstance(result._format, bzrdir.BzrDirMetaFormat1)
1424
self.assertFalse(result.needs_format_conversion(format))
1426
def test_downgrade_to_2a_too_many_branches(self):
1427
tree = self.make_branch_and_tree('.', format='development-colo')
1428
tree.bzrdir.create_branch(name="another-colocated-branch")
1429
converter = tree.bzrdir._format.get_converter(
1430
bzrdir.BzrDirMetaFormat1())
1431
self.assertRaises(errors.BzrError, converter.convert, tree.bzrdir,