474
474
self.assertFinished(client)
477
class TestBzrDirOpen(TestRemote):
479
def make_fake_client_and_transport(self, path='quack'):
480
transport = MemoryTransport()
481
transport.mkdir(path)
482
transport = transport.clone(path)
483
client = FakeClient(transport.base)
484
return client, transport
486
def test_absent(self):
487
client, transport = self.make_fake_client_and_transport()
488
client.add_expected_call(
489
'BzrDir.open_2.1', ('quack/',), 'success', ('no',))
490
self.assertRaises(errors.NotBranchError, RemoteBzrDir, transport,
491
remote.RemoteBzrDirFormat(), _client=client, _force_probe=True)
492
self.assertFinished(client)
494
def test_present_without_workingtree(self):
495
client, transport = self.make_fake_client_and_transport()
496
client.add_expected_call(
497
'BzrDir.open_2.1', ('quack/',), 'success', ('yes', 'no'))
498
bd = RemoteBzrDir(transport, remote.RemoteBzrDirFormat(),
499
_client=client, _force_probe=True)
500
self.assertIsInstance(bd, RemoteBzrDir)
501
self.assertFalse(bd.has_workingtree())
502
self.assertRaises(errors.NoWorkingTree, bd.open_workingtree)
503
self.assertFinished(client)
505
def test_present_with_workingtree(self):
506
client, transport = self.make_fake_client_and_transport()
507
client.add_expected_call(
508
'BzrDir.open_2.1', ('quack/',), 'success', ('yes', 'yes'))
509
bd = RemoteBzrDir(transport, remote.RemoteBzrDirFormat(),
510
_client=client, _force_probe=True)
511
self.assertIsInstance(bd, RemoteBzrDir)
512
self.assertTrue(bd.has_workingtree())
513
self.assertRaises(errors.NotLocalUrl, bd.open_workingtree)
514
self.assertFinished(client)
516
def test_backwards_compat(self):
517
client, transport = self.make_fake_client_and_transport()
518
client.add_expected_call(
519
'BzrDir.open_2.1', ('quack/',), 'unknown', ('BzrDir.open_2.1',))
520
client.add_expected_call(
521
'BzrDir.open', ('quack/',), 'success', ('yes',))
522
bd = RemoteBzrDir(transport, remote.RemoteBzrDirFormat(),
523
_client=client, _force_probe=True)
524
self.assertIsInstance(bd, RemoteBzrDir)
525
self.assertFinished(client)
477
528
class TestBzrDirOpenBranch(TestRemote):
479
530
def test_backwards_compat(self):
689
740
# fallback all the way to the first version.
690
741
reference_format = self.get_repo_format()
691
742
network_name = reference_format.network_name()
692
client = FakeClient('bzr://example.com/')
743
server_url = 'bzr://example.com/'
744
self.permit_url(server_url)
745
client = FakeClient(server_url)
693
746
client.add_unknown_method_response('BzrDir.find_repositoryV3')
694
747
client.add_unknown_method_response('BzrDir.find_repositoryV2')
695
748
client.add_success_response('ok', '', 'no', 'no')
701
754
reference_format.get_format_string(), 'ok')
702
755
# PackRepository wants to do a stat
703
756
client.add_success_response('stat', '0', '65535')
704
remote_transport = RemoteTransport('bzr://example.com/quack/', medium=False,
757
remote_transport = RemoteTransport(server_url + 'quack/', medium=False,
706
759
bzrdir = RemoteBzrDir(remote_transport, remote.RemoteBzrDirFormat(),
721
774
# fallback to find_repositoryV2
722
775
reference_format = self.get_repo_format()
723
776
network_name = reference_format.network_name()
724
client = FakeClient('bzr://example.com/')
777
server_url = 'bzr://example.com/'
778
self.permit_url(server_url)
779
client = FakeClient(server_url)
725
780
client.add_unknown_method_response('BzrDir.find_repositoryV3')
726
781
client.add_success_response('ok', '', 'no', 'no', 'no')
727
782
# A real repository instance will be created to determine the network
732
787
reference_format.get_format_string(), 'ok')
733
788
# PackRepository wants to do a stat
734
789
client.add_success_response('stat', '0', '65535')
735
remote_transport = RemoteTransport('bzr://example.com/quack/', medium=False,
790
remote_transport = RemoteTransport(server_url + 'quack/', medium=False,
737
792
bzrdir = RemoteBzrDir(remote_transport, remote.RemoteBzrDirFormat(),
2147
2201
repo.get_rev_id_for_revno, 5, (42, 'rev-foo'))
2148
2202
self.assertFinished(client)
2204
def test_branch_fallback_locking(self):
2205
"""RemoteBranch.get_rev_id takes a read lock, and tries to call the
2206
get_rev_id_for_revno verb. If the verb is unknown the VFS fallback
2207
will be invoked, which will fail if the repo is unlocked.
2209
self.setup_smart_server_with_call_log()
2210
tree = self.make_branch_and_memory_tree('.')
2212
rev1 = tree.commit('First')
2213
rev2 = tree.commit('Second')
2215
branch = tree.branch
2216
self.assertFalse(branch.is_locked())
2217
self.reset_smart_call_log()
2218
verb = 'Repository.get_rev_id_for_revno'
2219
self.disable_verb(verb)
2220
self.assertEqual(rev1, branch.get_rev_id(1))
2221
self.assertLength(1, [call for call in self.hpss_calls if
2222
call.call.method == verb])
2151
2225
class TestRepositoryIsShared(TestRemoteRepository):