254
254
# is the right format object found for a branch?
255
255
# create a branch with a few known format objects.
256
256
# this is not quite the same as
257
t = _mod_transport.get_transport(self.get_url())
257
t = self.get_transport()
258
258
self.build_tree(["foo/", "bar/"], transport=t)
259
259
def check_format(format, url):
260
260
format.initialize(url)
270
270
_mod_transport.get_transport('.'))
272
272
def test_find_format_unknown_format(self):
273
t = _mod_transport.get_transport(self.get_url())
273
t = self.get_transport()
275
275
t.put_bytes('.bzr/branch-format', '')
276
276
self.assertRaises(UnknownFormatError,
742
742
# transport pointing at bzrdir should give a bzrdir with root transport
743
743
# set to the given transport
744
744
control = bzrdir.BzrDir.create(self.get_url())
745
transport = _mod_transport.get_transport(self.get_url())
746
opened_bzrdir = bzrdir.BzrDir.open_from_transport(transport)
747
self.assertEqual(transport.base, opened_bzrdir.root_transport.base)
745
t = self.get_transport()
746
opened_bzrdir = bzrdir.BzrDir.open_from_transport(t)
747
self.assertEqual(t.base, opened_bzrdir.root_transport.base)
748
748
self.assertIsInstance(opened_bzrdir, bzrdir.BzrDir)
750
750
def test_open_from_transport_no_bzrdir(self):
751
transport = _mod_transport.get_transport(self.get_url())
752
self.assertRaises(NotBranchError, bzrdir.BzrDir.open_from_transport,
751
t = self.get_transport()
752
self.assertRaises(NotBranchError, bzrdir.BzrDir.open_from_transport, t)
755
754
def test_open_from_transport_bzrdir_in_parent(self):
756
755
control = bzrdir.BzrDir.create(self.get_url())
757
transport = _mod_transport.get_transport(self.get_url())
758
transport.mkdir('subdir')
759
transport = transport.clone('subdir')
760
self.assertRaises(NotBranchError, bzrdir.BzrDir.open_from_transport,
756
t = self.get_transport()
758
t = t.clone('subdir')
759
self.assertRaises(NotBranchError, bzrdir.BzrDir.open_from_transport, t)
763
761
def test_sprout_recursive(self):
764
762
tree = self.make_branch_and_tree('tree1',
825
823
def test_find_bzrdirs(self):
826
824
foo, bar, baz = self.make_foo_bar_baz()
827
transport = _mod_transport.get_transport(self.get_url())
828
self.assertEqualBzrdirs([baz, foo, bar],
829
bzrdir.BzrDir.find_bzrdirs(transport))
825
t = self.get_transport()
826
self.assertEqualBzrdirs([baz, foo, bar], bzrdir.BzrDir.find_bzrdirs(t))
831
828
def make_fake_permission_denied_transport(self, transport, paths):
832
829
"""Create a transport that raises PermissionDenied for some paths."""
849
846
def test_find_bzrdirs_permission_denied(self):
850
847
foo, bar, baz = self.make_foo_bar_baz()
851
transport = _mod_transport.get_transport(self.get_url())
848
t = self.get_transport()
852
849
path_filter_server, path_filter_transport = \
853
self.make_fake_permission_denied_transport(transport, ['foo'])
850
self.make_fake_permission_denied_transport(t, ['foo'])
854
851
# local transport
855
852
self.assertBranchUrlsEndWith('/baz/',
856
853
bzrdir.BzrDir.find_bzrdirs(path_filter_transport))
865
862
return [s for s in transport.list_dir('') if s != 'baz']
867
864
foo, bar, baz = self.make_foo_bar_baz()
868
transport = _mod_transport.get_transport(self.get_url())
869
self.assertEqualBzrdirs([foo, bar],
870
bzrdir.BzrDir.find_bzrdirs(transport,
871
list_current=list_current))
865
t = self.get_transport()
866
self.assertEqualBzrdirs(
868
bzrdir.BzrDir.find_bzrdirs(t, list_current=list_current))
873
870
def test_find_bzrdirs_evaluate(self):
874
871
def evaluate(bzrdir):
880
877
return False, bzrdir.root_transport.base
882
879
foo, bar, baz = self.make_foo_bar_baz()
883
transport = _mod_transport.get_transport(self.get_url())
880
t = self.get_transport()
884
881
self.assertEqual([baz.root_transport.base, foo.root_transport.base],
885
list(bzrdir.BzrDir.find_bzrdirs(transport,
882
list(bzrdir.BzrDir.find_bzrdirs(t, evaluate=evaluate)))
888
884
def assertEqualBzrdirs(self, first, second):
889
885
first = list(first)
896
892
root = self.make_repository('', shared=True)
897
893
foo, bar, baz = self.make_foo_bar_baz()
898
894
qux = self.make_bzrdir('foo/qux')
899
transport = _mod_transport.get_transport(self.get_url())
900
branches = bzrdir.BzrDir.find_branches(transport)
895
t = self.get_transport()
896
branches = bzrdir.BzrDir.find_branches(t)
901
897
self.assertEqual(baz.root_transport.base, branches[0].base)
902
898
self.assertEqual(foo.root_transport.base, branches[1].base)
903
899
self.assertEqual(bar.root_transport.base, branches[2].base)
905
901
# ensure this works without a top-level repo
906
branches = bzrdir.BzrDir.find_branches(transport.clone('foo'))
902
branches = bzrdir.BzrDir.find_branches(t.clone('foo'))
907
903
self.assertEqual(foo.root_transport.base, branches[0].base)
908
904
self.assertEqual(bar.root_transport.base, branches[1].base)
911
907
class TestMissingRepoBranchesSkipped(TestCaseWithMemoryTransport):
913
909
def test_find_bzrdirs_missing_repo(self):
914
transport = _mod_transport.get_transport(self.get_url())
910
t = self.get_transport()
915
911
arepo = self.make_repository('arepo', shared=True)
916
912
abranch_url = arepo.user_url + '/abranch'
917
913
abranch = bzrdir.BzrDir.create(abranch_url).create_branch()
918
transport.delete_tree('arepo/.bzr')
914
t.delete_tree('arepo/.bzr')
919
915
self.assertRaises(errors.NoRepositoryPresent,
920
916
branch.Branch.open, abranch_url)
921
917
self.make_branch('baz')
922
for actual_bzrdir in bzrdir.BzrDir.find_branches(transport):
918
for actual_bzrdir in bzrdir.BzrDir.find_branches(t):
923
919
self.assertEndsWith(actual_bzrdir.user_url, '/baz/')
1101
1097
# now probe for it.
1102
1098
controldir.ControlDirFormat.register_prober(NotBzrDirProber)
1104
found = bzrlib.bzrdir.BzrDirFormat.find_format(
1105
_mod_transport.get_transport(self.get_url()))
1100
found = bzrlib.bzrdir.BzrDirFormat.find_format(self.get_transport())
1106
1101
self.assertIsInstance(found, NotBzrDirFormat)
1108
1103
controldir.ControlDirFormat.unregister_prober(NotBzrDirProber)
1448
1443
def setUp(self):
1449
1444
super(TestGenerateBackupName, self).setUp()
1450
self._transport = _mod_transport.get_transport(self.get_url())
1445
self._transport = self.get_transport()
1451
1446
bzrdir.BzrDir.create(self.get_url(),
1452
1447
possible_transports=[self._transport])
1453
1448
self._bzrdir = bzrdir.BzrDir.open_from_transport(self._transport)