mirror of
https://github.com/python/cpython.git
synced 2025-08-04 17:08:35 +00:00
Got test_exceptions.py working.
This commit is contained in:
parent
74302dbd3c
commit
b8142c3e64
2 changed files with 21 additions and 18 deletions
|
@ -929,12 +929,12 @@ class Unpickler:
|
|||
break
|
||||
else:
|
||||
raise ValueError, "insecure string pickle"
|
||||
self.append(rep.decode("string-escape"))
|
||||
self.append(str8(rep.decode("string-escape")))
|
||||
dispatch[STRING[0]] = load_string
|
||||
|
||||
def load_binstring(self):
|
||||
len = mloads(b'i' + self.read(4))
|
||||
self.append(self.read(len))
|
||||
self.append(str8(self.read(len)))
|
||||
dispatch[BINSTRING[0]] = load_binstring
|
||||
|
||||
def load_unicode(self):
|
||||
|
@ -948,7 +948,7 @@ class Unpickler:
|
|||
|
||||
def load_short_binstring(self):
|
||||
len = ord(self.read(1))
|
||||
self.append(self.read(len))
|
||||
self.append(str8(self.read(len)))
|
||||
dispatch[SHORT_BINSTRING[0]] = load_short_binstring
|
||||
|
||||
def load_tuple(self):
|
||||
|
|
|
@ -251,17 +251,19 @@ class ExceptionTests(unittest.TestCase):
|
|||
'print_file_and_line' : None, 'msg' : 'msgStr',
|
||||
'filename' : None, 'lineno' : None, 'offset' : None}),
|
||||
(UnicodeError, (), {'message' : '', 'args' : (),}),
|
||||
(UnicodeEncodeError, (str8('ascii'), 'a', 0, 1, str8('ordinal not in range')),
|
||||
(UnicodeEncodeError, (str8('ascii'), 'a', 0, 1,
|
||||
str8('ordinal not in range')),
|
||||
{'message' : '', 'args' : ('ascii', 'a', 0, 1,
|
||||
'ordinal not in range'),
|
||||
'encoding' : 'ascii', 'object' : 'a',
|
||||
'start' : 0, 'reason' : 'ordinal not in range'}),
|
||||
(UnicodeDecodeError, (str8('ascii'), b'\xff', 0, 1, str8('ordinal not in range')),
|
||||
{'message' : '', 'args' : ('ascii', '\xff', 0, 1,
|
||||
(UnicodeDecodeError, (str8('ascii'), b'\xff', 0, 1,
|
||||
str8('ordinal not in range')),
|
||||
{'message' : '', 'args' : ('ascii', b'\xff', 0, 1,
|
||||
'ordinal not in range'),
|
||||
'encoding' : 'ascii', 'object' : '\xff',
|
||||
'encoding' : 'ascii', 'object' : b'\xff',
|
||||
'start' : 0, 'reason' : 'ordinal not in range'}),
|
||||
(UnicodeTranslateError, ("\u3042", 0, 1, "ouch"),
|
||||
(UnicodeTranslateError, ("\u3042", 0, 1, str8("ouch")),
|
||||
{'message' : '', 'args' : ('\u3042', 0, 1, 'ouch'),
|
||||
'object' : '\u3042', 'reason' : 'ouch',
|
||||
'start' : 0, 'end' : 1}),
|
||||
|
@ -278,27 +280,28 @@ class ExceptionTests(unittest.TestCase):
|
|||
|
||||
for exc, args, expected in exceptionList:
|
||||
try:
|
||||
print("exc=%r, args=%r" % (exc, args))
|
||||
raise exc(*args)
|
||||
except BaseException as e:
|
||||
if type(e) is not exc:
|
||||
raise
|
||||
e = exc(*args)
|
||||
except:
|
||||
print("\nexc=%r, args=%r" % (exc, args))
|
||||
raise
|
||||
else:
|
||||
# Verify module name
|
||||
self.assertEquals(type(e).__module__, '__builtin__')
|
||||
# Verify no ref leaks in Exc_str()
|
||||
s = str(e)
|
||||
for checkArgName in expected:
|
||||
self.assertEquals(repr(getattr(e, checkArgName)),
|
||||
value = getattr(e, checkArgName)
|
||||
self.assertEquals(repr(value),
|
||||
repr(expected[checkArgName]),
|
||||
'exception "%s", attribute "%s"' %
|
||||
(repr(e), checkArgName))
|
||||
'%r.%s == %r, expected %r' % (
|
||||
e, checkArgName,
|
||||
value, expected[checkArgName]))
|
||||
|
||||
# test for pickling support
|
||||
for p in pickle, cPickle:
|
||||
if p is None:
|
||||
continue # cPickle not found -- skip it
|
||||
for protocol in range(p.HIGHEST_PROTOCOL + 1):
|
||||
##print("p=%s, protocol=%s, e=%r" % (p.__name__, protocol, e))
|
||||
s = p.dumps(e, protocol)
|
||||
new = p.loads(s)
|
||||
for checkArgName in expected:
|
||||
|
@ -356,4 +359,4 @@ def test_main():
|
|||
run_unittest(ExceptionTests)
|
||||
|
||||
if __name__ == '__main__':
|
||||
test_main()
|
||||
unittest.main()
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue