31
32
class TestErrors(TestCaseWithTransport):
34
def test_bad_filename_encoding(self):
35
error = errors.BadFilenameEncoding('bad/filen\xe5me', 'UTF-8')
37
"Filename 'bad/filen\\xe5me' is not valid in your current"
38
" filesystem encoding UTF-8",
33
41
def test_corrupt_dirstate(self):
34
42
error = errors.CorruptDirstate('path/to/dirstate', 'the reason why')
35
43
self.assertEqualDiff(
37
45
"Error: the reason why",
48
def test_dirstate_corrupt(self):
49
error = errors.DirstateCorrupt('.bzr/checkout/dirstate',
50
'trailing garbage: "x"')
51
self.assertEqualDiff("The dirstate file (.bzr/checkout/dirstate)"
52
" appears to be corrupt: trailing garbage: \"x\"",
40
55
def test_disabled_method(self):
41
56
error = errors.DisabledMethod("class name")
42
57
self.assertEqualDiff(
52
67
self.assertEqualDiff('The prefix foo is in the help search path twice.',
70
def test_ghost_revisions_have_no_revno(self):
71
error = errors.GhostRevisionsHaveNoRevno('target', 'ghost_rev')
72
self.assertEqualDiff("Could not determine revno for {target} because"
73
" its ancestry shows a ghost at {ghost_rev}",
55
76
def test_incompatibleAPI(self):
56
77
error = errors.IncompatibleAPI("module", (1, 2, 3), (4, 5, 6), (7, 8, 9))
57
78
self.assertEqualDiff(
189
def test_read_only_lock_error(self):
190
error = self.applyDeprecated(symbol_versioning.zero_ninetytwo,
191
errors.ReadOnlyLockError, 'filename', 'error message')
192
self.assertEqualDiff("Cannot acquire write lock on filename."
193
" error message", str(error))
195
210
def test_lock_failed(self):
196
211
error = errors.LockFailed('http://canonical.com/', 'readonly transport')
197
212
self.assertEqualDiff("Cannot lock http://canonical.com/: readonly transport",
205
220
"the currently open request.",
223
def test_unavailable_representation(self):
224
error = errors.UnavailableRepresentation(('key',), "mpdiff", "fulltext")
225
self.assertEqualDiff("The encoding 'mpdiff' is not available for key "
226
"('key',) which is encoded as 'fulltext'.",
208
229
def test_unknown_hook(self):
209
230
error = errors.UnknownHook("branch", "foo")
210
231
self.assertEqualDiff("The branch hook 'foo' is unknown in this version"
370
391
host='ahost', port=444, msg='Unable to connect to ssh host',
371
392
orig_error='my_error')
394
def test_target_not_branch(self):
395
"""Test the formatting of TargetNotBranch."""
396
error = errors.TargetNotBranch('foo')
398
"Your branch does not have all of the revisions required in "
399
"order to merge this merge directive and the target "
400
"location specified in the merge directive is not a branch: "
373
403
def test_malformed_bug_identifier(self):
374
404
"""Test the formatting of MalformedBugIdentifier."""
375
405
error = errors.MalformedBugIdentifier('bogus', 'reason for bogosity')
493
523
err = errors.UnknownFormatError('bar', kind='foo')
494
524
self.assertEquals("Unknown foo format: 'bar'", str(err))
526
def test_unknown_rules(self):
527
err = errors.UnknownRules(['foo', 'bar'])
528
self.assertEquals("Unknown rules detected: foo, bar.", str(err))
530
def test_hook_failed(self):
531
# Create an exc_info tuple by raising and catching an exception.
534
except ZeroDivisionError:
535
exc_info = sys.exc_info()
536
err = errors.HookFailed('hook stage', 'hook name', exc_info)
537
self.assertStartsWith(
538
str(err), 'Hook \'hook name\' during hook stage failed:\n')
540
str(err), 'integer division or modulo by zero')
542
def test_tip_change_rejected(self):
543
err = errors.TipChangeRejected(u'Unicode message\N{INTERROBANG}')
545
u'Tip change rejected: Unicode message\N{INTERROBANG}',
548
'Tip change rejected: Unicode message\xe2\x80\xbd',
551
def test_error_from_smart_server(self):
552
error_tuple = ('error', 'tuple')
553
err = errors.ErrorFromSmartServer(error_tuple)
555
"Error received from smart server: ('error', 'tuple')", str(err))
557
def test_untranslateable_error_from_smart_server(self):
558
error_tuple = ('error', 'tuple')
559
orig_err = errors.ErrorFromSmartServer(error_tuple)
560
err = errors.UnknownErrorFromSmartServer(orig_err)
562
"Server sent an unexpected error: ('error', 'tuple')", str(err))
497
565
class PassThroughError(errors.BzrError):