2775
2775
('pack collection autopack',)],
2778
def test_oom_error_reporting(self):
2779
"""An out-of-memory condition on the server is reported clearly"""
2780
transport_path = 'quack'
2781
repo, client = self.setup_fake_client_and_repository(transport_path)
2782
client.add_expected_call(
2783
'PackRepository.autopack', ('quack/',),
2784
'error', ('MemoryError',))
2785
err = self.assertRaises(errors.BzrError, repo.autopack)
2786
self.assertContainsRe(str(err), "^remote server out of mem")
2779
2789
class TestErrorTranslationBase(tests.TestCaseWithMemoryTransport):
2780
2790
"""Base class for unit tests for bzrlib.remote._translate_error."""
2853
2863
detail='extra detail')
2854
2864
self.assertEqual(expected_error, translated_error)
2866
def test_norepository(self):
2867
bzrdir = self.make_bzrdir('')
2868
translated_error = self.translateTuple(('norepository',),
2870
expected_error = errors.NoRepositoryPresent(bzrdir)
2871
self.assertEqual(expected_error, translated_error)
2856
2873
def test_LockContention(self):
2857
2874
translated_error = self.translateTuple(('LockContention',))
2858
2875
expected_error = errors.LockContention('(remote lock)')
2886
2903
expected_error = errors.DivergedBranches(branch, other_branch)
2887
2904
self.assertEqual(expected_error, translated_error)
2906
def test_NotStacked(self):
2907
branch = self.make_branch('')
2908
translated_error = self.translateTuple(('NotStacked',), branch=branch)
2909
expected_error = errors.NotStacked(branch)
2910
self.assertEqual(expected_error, translated_error)
2889
2912
def test_ReadError_no_args(self):
2890
2913
path = 'a path'
2891
2914
translated_error = self.translateTuple(('ReadError',), path=path)
2908
2931
def test_PermissionDenied_no_args(self):
2909
2932
path = 'a path'
2910
translated_error = self.translateTuple(('PermissionDenied',), path=path)
2933
translated_error = self.translateTuple(('PermissionDenied',),
2911
2935
expected_error = errors.PermissionDenied(path)
2912
2936
self.assertEqual(expected_error, translated_error)
2936
2960
expected_error = errors.PermissionDenied(path, extra)
2937
2961
self.assertEqual(expected_error, translated_error)
2963
# GZ 2011-03-02: TODO test for PermissionDenied with non-ascii 'extra'
2965
def test_NoSuchFile_context_path(self):
2966
local_path = "local path"
2967
translated_error = self.translateTuple(('ReadError', "remote path"),
2969
expected_error = errors.ReadError(local_path)
2970
self.assertEqual(expected_error, translated_error)
2972
def test_NoSuchFile_without_context(self):
2973
remote_path = "remote path"
2974
translated_error = self.translateTuple(('ReadError', remote_path))
2975
expected_error = errors.ReadError(remote_path)
2976
self.assertEqual(expected_error, translated_error)
2978
def test_ReadOnlyError(self):
2979
translated_error = self.translateTuple(('ReadOnlyError',))
2980
expected_error = errors.TransportNotPossible("readonly transport")
2981
self.assertEqual(expected_error, translated_error)
2983
def test_MemoryError(self):
2984
translated_error = self.translateTuple(('MemoryError',))
2985
self.assertStartsWith(str(translated_error),
2986
"remote server out of memory")
2988
def test_generic_IndexError_no_classname(self):
2989
err = errors.ErrorFromSmartServer(('error', "list index out of range"))
2990
translated_error = self.translateErrorFromSmartServer(err)
2991
expected_error = errors.UnknownErrorFromSmartServer(err)
2992
self.assertEqual(expected_error, translated_error)
2994
# GZ 2011-03-02: TODO test generic non-ascii error string
2996
def test_generic_KeyError(self):
2997
err = errors.ErrorFromSmartServer(('error', 'KeyError', "1"))
2998
translated_error = self.translateErrorFromSmartServer(err)
2999
expected_error = errors.UnknownErrorFromSmartServer(err)
3000
self.assertEqual(expected_error, translated_error)
2940
3003
class TestErrorTranslationRobustness(TestErrorTranslationBase):
2941
3004
"""Unit tests for bzrlib.remote._translate_error's robustness.