532
532
self.assertEqual(network_name, format.network_name())
535
class TestBzrDirOpenRepository(tests.TestCase):
537
def test_backwards_compat_1_2(self):
538
transport = MemoryTransport()
539
transport.mkdir('quack')
540
transport = transport.clone('quack')
541
client = FakeClient(transport.base)
535
class TestBzrDirOpenRepository(TestRemote):
537
def get_repo_format(self):
538
reference_bzrdir_format = bzrdir.format_registry.get('default')()
539
return reference_bzrdir_format.repository_format
541
def test_backwards_compat_1_2_3(self):
542
# fallback all the way to the first version.
543
reference_format = self.get_repo_format()
544
network_name = reference_format.network_name()
545
client = FakeClient('bzr://example.com/')
546
client.add_unknown_method_response('BzrDir.find_repositoryV3')
542
547
client.add_unknown_method_response('BzrDir.find_repositoryV2')
543
548
client.add_success_response('ok', '', 'no', 'no')
549
# A real repository instance will be created to determine the network
551
client.add_success_response_with_body(
552
"Bazaar-NG meta directory, format 1\n", 'ok')
553
client.add_success_response_with_body(
554
reference_format.get_format_string(), 'ok')
555
# PackRepository wants to do a stat
556
client.add_success_response('stat', '0', '65535')
557
remote_transport = RemoteTransport('bzr://example.com/quack/', medium=False,
559
bzrdir = RemoteBzrDir(remote_transport, remote.RemoteBzrDirFormat(),
561
repo = bzrdir.open_repository()
563
[('call', 'BzrDir.find_repositoryV3', ('quack/',)),
564
('call', 'BzrDir.find_repositoryV2', ('quack/',)),
565
('call', 'BzrDir.find_repository', ('quack/',)),
566
('call_expecting_body', 'get', ('/quack/.bzr/branch-format',)),
567
('call_expecting_body', 'get', ('/quack/.bzr/repository/format',)),
568
('call', 'stat', ('/quack/.bzr/repository',)),
571
self.assertEqual(network_name, repo._format.network_name())
573
def test_backwards_compat_2(self):
574
# fallback to find_repositoryV2
575
reference_format = self.get_repo_format()
576
network_name = reference_format.network_name()
577
client = FakeClient('bzr://example.com/')
578
client.add_unknown_method_response('BzrDir.find_repositoryV3')
579
client.add_success_response('ok', '', 'no', 'no', 'no')
580
# A real repository instance will be created to determine the network
582
client.add_success_response_with_body(
583
"Bazaar-NG meta directory, format 1\n", 'ok')
584
client.add_success_response_with_body(
585
reference_format.get_format_string(), 'ok')
586
# PackRepository wants to do a stat
587
client.add_success_response('stat', '0', '65535')
588
remote_transport = RemoteTransport('bzr://example.com/quack/', medium=False,
590
bzrdir = RemoteBzrDir(remote_transport, remote.RemoteBzrDirFormat(),
592
repo = bzrdir.open_repository()
594
[('call', 'BzrDir.find_repositoryV3', ('quack/',)),
595
('call', 'BzrDir.find_repositoryV2', ('quack/',)),
596
('call_expecting_body', 'get', ('/quack/.bzr/branch-format',)),
597
('call_expecting_body', 'get', ('/quack/.bzr/repository/format',)),
598
('call', 'stat', ('/quack/.bzr/repository',)),
601
self.assertEqual(network_name, repo._format.network_name())
603
def test_current_server(self):
604
reference_format = self.get_repo_format()
605
network_name = reference_format.network_name()
606
transport = MemoryTransport()
607
transport.mkdir('quack')
608
transport = transport.clone('quack')
609
client = FakeClient(transport.base)
610
client.add_success_response('ok', '', 'no', 'no', 'no', network_name)
544
611
bzrdir = RemoteBzrDir(transport, remote.RemoteBzrDirFormat(),
546
613
repo = bzrdir.open_repository()
547
614
self.assertEqual(
548
[('call', 'BzrDir.find_repositoryV2', ('quack/',)),
549
('call', 'BzrDir.find_repository', ('quack/',))],
615
[('call', 'BzrDir.find_repositoryV3', ('quack/',))],
617
self.assertEqual(network_name, repo._format.network_name())
553
620
class OldSmartClient(object):