588
588
backing = self.get_transport()
589
589
request = smart.bzrdir.SmartServerRequestOpenBranchV2(backing)
590
590
repo = self.make_repository('.')
591
self.assertEqual(SmartServerResponse(('nobranch', 'location is a repository')),
591
self.assertEqual(SmartServerResponse(('nobranch',)),
595
class TestSmartServerRequestOpenBranchV3(TestCaseWithChrootedTransport):
597
def test_no_branch(self):
598
"""When there is no branch, ('nobranch', ) is returned."""
599
backing = self.get_transport()
600
self.make_bzrdir('.')
601
request = smart.bzrdir.SmartServerRequestOpenBranchV3(backing)
602
self.assertEqual(SmartServerResponse(('nobranch',)),
605
def test_branch(self):
606
"""When there is a branch, 'ok' is returned."""
607
backing = self.get_transport()
608
expected = self.make_branch('.')._format.network_name()
609
request = smart.bzrdir.SmartServerRequestOpenBranchV3(backing)
610
self.assertEqual(SuccessfulSmartServerResponse(('branch', expected)),
613
def test_branch_reference(self):
614
"""When there is a branch reference, the reference URL is returned."""
615
self.vfs_transport_factory = local.LocalURLServer
616
backing = self.get_transport()
617
request = smart.bzrdir.SmartServerRequestOpenBranchV3(backing)
618
branch = self.make_branch('branch')
619
checkout = branch.create_checkout('reference',lightweight=True)
620
reference_url = BranchReferenceFormat().get_reference(checkout.bzrdir)
621
self.assertFileEqual(reference_url, 'reference/.bzr/branch/location')
622
self.assertEqual(SuccessfulSmartServerResponse(('ref', reference_url)),
623
request.execute('reference'))
625
def test_stacked_branch(self):
626
"""Opening a stacked branch does not open the stacked-on branch."""
627
trunk = self.make_branch('trunk')
628
feature = self.make_branch('feature')
629
feature.set_stacked_on_url(trunk.base)
631
Branch.hooks.install_named_hook('open', opened_branches.append, None)
632
backing = self.get_transport()
633
request = smart.bzrdir.SmartServerRequestOpenBranchV3(backing)
636
response = request.execute('feature')
638
request.teardown_jail()
639
expected_format = feature._format.network_name()
641
SuccessfulSmartServerResponse(('branch', expected_format)),
643
self.assertLength(1, opened_branches)
645
def test_notification_on_branch_from_repository(self):
646
"""When there is a repository, the error should return details."""
647
backing = self.get_transport()
648
request = smart.bzrdir.SmartServerRequestOpenBranchV3(backing)
649
repo = self.make_repository('.')
651
SmartServerResponse(('nobranch', 'location is a repository')),
592
652
request.execute(''))
1787
1847
smart.bzrdir.SmartServerRequestOpenBranch)
1788
1848
self.assertHandlerEqual('BzrDir.open_branchV2',
1789
1849
smart.bzrdir.SmartServerRequestOpenBranchV2)
1850
self.assertHandlerEqual('BzrDir.open_branchV3',
1851
smart.bzrdir.SmartServerRequestOpenBranchV3)
1790
1852
self.assertHandlerEqual('PackRepository.autopack',
1791
1853
smart.packrepository.SmartServerPackRepositoryAutopack)
1792
1854
self.assertHandlerEqual('Repository.gather_stats',