2214
2214
branch.revision_id_to_dotted_revno, b'unknown')
2215
2215
self.assertFinished(client)
2217
def test_ghost_revid(self):
2218
transport = MemoryTransport()
2219
client = FakeClient(transport.base)
2220
client.add_expected_call(
2221
b'Branch.get_stacked_on_url', (b'quack/',),
2222
b'error', (b'NotStacked',),)
2223
# Some older versions of bzr/brz didn't explicitly return
2224
# GhostRevisionsHaveNoRevno
2225
client.add_expected_call(
2226
b'Branch.revision_id_to_revno', (b'quack/', b'revid'),
2227
b'error', (b'error', b'GhostRevisionsHaveNoRevno',
2228
b'The reivison {revid} was not found because there was '
2229
b'a ghost at {ghost-revid}'))
2230
client.add_expected_call(
2231
b'Branch.revision_id_to_revno', (b'quack/', b'revid'),
2232
b'error', (b'GhostRevisionsHaveNoRevno', b'revid', b'ghost-revid',))
2233
transport.mkdir('quack')
2234
transport = transport.clone('quack')
2235
branch = self.make_remote_branch(transport, client)
2236
self.assertRaises(errors.GhostRevisionsHaveNoRevno,
2237
branch.revision_id_to_dotted_revno, b'revid')
2238
self.assertRaises(errors.GhostRevisionsHaveNoRevno,
2239
branch.revision_id_to_dotted_revno, b'revid')
2240
self.assertFinished(client)
2217
2242
def test_dotted_no_smart_verb(self):
2218
2243
self.setup_smart_server_with_call_log()
2219
2244
branch = self.make_branch('.')
2991
3016
repo.get_rev_id_for_revno, 5, (42, b'rev-foo'))
2992
3017
self.assertFinished(client)
3019
def test_outofbounds(self):
3020
repo, client = self.setup_fake_client_and_repository('quack')
3021
client.add_expected_call(
3022
b'Repository.get_rev_id_for_revno', (b'quack/',
3023
43, (42, b'rev-foo')),
3024
b'error', (b'revno-outofbounds', 43, 0, 42))
3026
errors.RevnoOutOfBounds,
3027
repo.get_rev_id_for_revno, 43, (42, b'rev-foo'))
3028
self.assertFinished(client)
3030
def test_outofbounds_old(self):
3031
# Older versions of bzr didn't support RevnoOutOfBounds
3032
repo, client = self.setup_fake_client_and_repository('quack')
3033
client.add_expected_call(
3034
b'Repository.get_rev_id_for_revno', (b'quack/',
3035
43, (42, b'rev-foo')),
3037
b'error', b'ValueError',
3038
b'requested revno (43) is later than given known revno (42)'))
3040
errors.RevnoOutOfBounds,
3041
repo.get_rev_id_for_revno, 43, (42, b'rev-foo'))
3042
self.assertFinished(client)
2994
3044
def test_branch_fallback_locking(self):
2995
3045
"""RemoteBranch.get_rev_id takes a read lock, and tries to call the
2996
3046
get_rev_id_for_revno verb. If the verb is unknown the VFS fallback
3918
3968
expected_error = errors.UnknownErrorFromSmartServer(err)
3919
3969
self.assertEqual(expected_error, translated_error)
3971
def test_RevnoOutOfBounds(self):
3972
translated_error = self.translateTuple(
3973
((b'revno-outofbounds', 5, 0, 3)), path=b'path')
3974
expected_error = errors.RevnoOutOfBounds(5, (0, 3))
3975
self.assertEqual(expected_error, translated_error)
3922
3978
class TestErrorTranslationRobustness(TestErrorTranslationBase):
3923
3979
"""Unit tests for breezy.bzr.remote._translate_error's robustness.