446
470
RemoteBzrDirFormat.probe_transport, OldServerTransport())
449
class TestBzrDirOpenRepository(tests.TestCase):
451
def test_backwards_compat_1_2(self):
452
transport = MemoryTransport()
453
transport.mkdir('quack')
454
transport = transport.clone('quack')
455
client = FakeClient(transport.base)
456
client.add_unknown_method_response('RemoteRepository.find_repositoryV2')
473
class TestBzrDirCreateBranch(TestRemote):
475
def test_backwards_compat(self):
476
self.setup_smart_server_with_call_log()
477
repo = self.make_repository('.')
478
self.reset_smart_call_log()
479
self.disable_verb('BzrDir.create_branch')
480
branch = repo.bzrdir.create_branch()
481
create_branch_call_count = len([call for call in self.hpss_calls if
482
call[0].method == 'BzrDir.create_branch'])
483
self.assertEqual(1, create_branch_call_count)
485
def test_current_server(self):
486
transport = self.get_transport('.')
487
transport = transport.clone('quack')
488
self.make_repository('quack')
489
client = FakeClient(transport.base)
490
reference_bzrdir_format = bzrdir.format_registry.get('default')()
491
reference_format = reference_bzrdir_format.get_branch_format()
492
network_name = reference_format.network_name()
493
reference_repo_fmt = reference_bzrdir_format.repository_format
494
reference_repo_name = reference_repo_fmt.network_name()
495
client.add_expected_call(
496
'BzrDir.create_branch', ('quack/', network_name),
497
'success', ('ok', network_name, '', 'no', 'no', 'yes',
498
reference_repo_name))
499
a_bzrdir = RemoteBzrDir(transport, remote.RemoteBzrDirFormat(),
501
branch = a_bzrdir.create_branch()
502
# We should have got a remote branch
503
self.assertIsInstance(branch, remote.RemoteBranch)
504
# its format should have the settings from the response
505
format = branch._format
506
self.assertEqual(network_name, format.network_name())
509
class TestBzrDirCreateRepository(TestRemote):
511
def test_backwards_compat(self):
512
self.setup_smart_server_with_call_log()
513
bzrdir = self.make_bzrdir('.')
514
self.reset_smart_call_log()
515
self.disable_verb('BzrDir.create_repository')
516
repo = bzrdir.create_repository()
517
create_repo_call_count = len([call for call in self.hpss_calls if
518
call[0].method == 'BzrDir.create_repository'])
519
self.assertEqual(1, create_repo_call_count)
521
def test_current_server(self):
522
transport = self.get_transport('.')
523
transport = transport.clone('quack')
524
self.make_bzrdir('quack')
525
client = FakeClient(transport.base)
526
reference_bzrdir_format = bzrdir.format_registry.get('default')()
527
reference_format = reference_bzrdir_format.repository_format
528
network_name = reference_format.network_name()
529
client.add_expected_call(
530
'BzrDir.create_repository', ('quack/',
531
'Bazaar pack repository format 1 (needs bzr 0.92)\n', 'False'),
532
'success', ('ok', 'no', 'no', 'no', network_name))
533
a_bzrdir = RemoteBzrDir(transport, remote.RemoteBzrDirFormat(),
535
repo = a_bzrdir.create_repository()
536
# We should have got a remote repository
537
self.assertIsInstance(repo, remote.RemoteRepository)
538
# its format should have the settings from the response
539
format = repo._format
540
self.assertFalse(format.rich_root_data)
541
self.assertFalse(format.supports_tree_reference)
542
self.assertFalse(format.supports_external_lookups)
543
self.assertEqual(network_name, format.network_name())
546
class TestBzrDirOpenRepository(TestRemote):
548
def test_backwards_compat_1_2_3(self):
549
# fallback all the way to the first version.
550
reference_format = self.get_repo_format()
551
network_name = reference_format.network_name()
552
client = FakeClient('bzr://example.com/')
553
client.add_unknown_method_response('BzrDir.find_repositoryV3')
554
client.add_unknown_method_response('BzrDir.find_repositoryV2')
457
555
client.add_success_response('ok', '', 'no', 'no')
556
# A real repository instance will be created to determine the network
558
client.add_success_response_with_body(
559
"Bazaar-NG meta directory, format 1\n", 'ok')
560
client.add_success_response_with_body(
561
reference_format.get_format_string(), 'ok')
562
# PackRepository wants to do a stat
563
client.add_success_response('stat', '0', '65535')
564
remote_transport = RemoteTransport('bzr://example.com/quack/', medium=False,
566
bzrdir = RemoteBzrDir(remote_transport, remote.RemoteBzrDirFormat(),
568
repo = bzrdir.open_repository()
570
[('call', 'BzrDir.find_repositoryV3', ('quack/',)),
571
('call', 'BzrDir.find_repositoryV2', ('quack/',)),
572
('call', 'BzrDir.find_repository', ('quack/',)),
573
('call_expecting_body', 'get', ('/quack/.bzr/branch-format',)),
574
('call_expecting_body', 'get', ('/quack/.bzr/repository/format',)),
575
('call', 'stat', ('/quack/.bzr/repository',)),
578
self.assertEqual(network_name, repo._format.network_name())
580
def test_backwards_compat_2(self):
581
# fallback to find_repositoryV2
582
reference_format = self.get_repo_format()
583
network_name = reference_format.network_name()
584
client = FakeClient('bzr://example.com/')
585
client.add_unknown_method_response('BzrDir.find_repositoryV3')
586
client.add_success_response('ok', '', 'no', 'no', 'no')
587
# A real repository instance will be created to determine the network
589
client.add_success_response_with_body(
590
"Bazaar-NG meta directory, format 1\n", 'ok')
591
client.add_success_response_with_body(
592
reference_format.get_format_string(), 'ok')
593
# PackRepository wants to do a stat
594
client.add_success_response('stat', '0', '65535')
595
remote_transport = RemoteTransport('bzr://example.com/quack/', medium=False,
597
bzrdir = RemoteBzrDir(remote_transport, remote.RemoteBzrDirFormat(),
599
repo = bzrdir.open_repository()
601
[('call', 'BzrDir.find_repositoryV3', ('quack/',)),
602
('call', 'BzrDir.find_repositoryV2', ('quack/',)),
603
('call_expecting_body', 'get', ('/quack/.bzr/branch-format',)),
604
('call_expecting_body', 'get', ('/quack/.bzr/repository/format',)),
605
('call', 'stat', ('/quack/.bzr/repository',)),
608
self.assertEqual(network_name, repo._format.network_name())
610
def test_current_server(self):
611
reference_format = self.get_repo_format()
612
network_name = reference_format.network_name()
613
transport = MemoryTransport()
614
transport.mkdir('quack')
615
transport = transport.clone('quack')
616
client = FakeClient(transport.base)
617
client.add_success_response('ok', '', 'no', 'no', 'no', network_name)
458
618
bzrdir = RemoteBzrDir(transport, remote.RemoteBzrDirFormat(),
460
620
repo = bzrdir.open_repository()
461
621
self.assertEqual(
462
[('call', 'BzrDir.find_repositoryV2', ('quack/',)),
463
('call', 'BzrDir.find_repository', ('quack/',))],
622
[('call', 'BzrDir.find_repositoryV3', ('quack/',))],
624
self.assertEqual(network_name, repo._format.network_name())
467
627
class OldSmartClient(object):