Commit 05808083 authored by Stefan Behnel's avatar Stefan Behnel

lots of runnable tests for try-except

--HG--
rename : tests/compile/tryexcept.pyx => tests/run/tryexcept.pyx
parent 93af9e10
def single_except(a, x):
"""
>>> single_except(ValueError, None)
2
>>> single_except(ValueError, ValueError('test'))
3
>>> single_except(ValueError, TypeError('test'))
Traceback (most recent call last):
TypeError: test
"""
cdef int i
try:
i = 1
if x:
raise x
i = 2
except a:
i = 3
return i
def single_except_builtin(a, x):
"""
>>> single_except_builtin(ValueError, None)
2
>>> single_except_builtin(ValueError, ValueError('test'))
3
>>> single_except_builtin(ValueError, TypeError('test'))
Traceback (most recent call last):
TypeError: test
"""
cdef int i
try:
i = 1
if x:
raise x
i = 2
except ValueError:
i = 3
return i
def single_except_expression(a, x):
"""
>>> single_except_expression([[ValueError]], None)
2
>>> single_except_expression([[ValueError]], ValueError('test'))
3
>>> single_except_expression([[ValueError]], TypeError('test'))
Traceback (most recent call last):
TypeError: test
"""
cdef int i
try:
i = 1
if x:
raise x
i = 2
except a[0][0]:
i = 3
return i
def double_except_no_raise(a,b):
"""
>>> double_except_no_raise(TypeError, ValueError)
1
"""
cdef int i
try:
i = 1
except a:
i = 2
except b:
i = 3
return i
def double_except_raise(x, a, b):
"""
>>> double_except_raise(None, TypeError, ValueError)
1
>>> double_except_raise(TypeError('test'), TypeError, ValueError)
2
>>> double_except_raise(ValueError('test'), TypeError, ValueError)
3
>>> double_except_raise(None, TypeError, ValueError)
1
"""
cdef int i
try:
i = 1
if x:
raise x
except a:
i = 2
except b:
i = 3
return i
def target_except_no_raise(a):
"""
>>> target_except_no_raise(TypeError)
1
"""
cdef int i
try:
i = 1
except a, b:
i = 2
return i
def target_except_raise(x, a):
"""
>>> target_except_raise(None, TypeError)
1
>>> target_except_raise(TypeError('test'), TypeError)
2
>>> target_except_raise(ValueError('test'), TypeError)
Traceback (most recent call last):
ValueError: test
>>> target_except_raise(None, TypeError)
1
"""
cdef int i
try:
i = 1
if x:
raise x
except a, b:
i = 2
assert isinstance(b, a)
return i
def tuple_except_builtin(x):
"""
>>> tuple_except_builtin(None)
1
>>> tuple_except_builtin(TypeError('test'))
2
>>> tuple_except_builtin(ValueError('test'))
2
>>> tuple_except_builtin(IndexError('5'))
Traceback (most recent call last):
IndexError: 5
>>> tuple_except_builtin(None)
1
"""
cdef int i
try:
i = 1
if x:
raise x
except (TypeError, ValueError):
i = 2
return i
def normal_and_bare_except_no_raise(a):
"""
>>> normal_and_bare_except_no_raise(TypeError)
1
"""
cdef int i
try:
i = 1
except a:
i = 2
except:
i = 3
return i
def normal_and_bare_except_raise(x, a):
"""
>>> normal_and_bare_except_raise(None, TypeError)
1
>>> normal_and_bare_except_raise(TypeError('test'), TypeError)
2
>>> normal_and_bare_except_raise(ValueError('test'), TypeError)
3
>>> normal_and_bare_except_raise(None, TypeError)
1
"""
cdef int i
try:
i = 1
if x:
raise x
except a:
i = 2
except:
i = 3
return i
def tuple_except_index_target_no_raise(a, b, c):
"""
>>> l = [None, None]
>>> tuple_except_index_target_no_raise(TypeError, ValueError, l)
1
>>> l
[None, None]
"""
cdef int i
try:
i = 1
except (a, b), c[1]:
i = 2
return i
def tuple_except_index_target_raise(x, a, b, c):
"""
>>> l = [None, None]
>>> tuple_except_index_target_raise(None, TypeError, ValueError, l)
1
>>> l
[None, None]
>>> tuple_except_index_target_raise(TypeError('test'), TypeError, ValueError, l)
2
>>> l[0] is None, isinstance(l[1], TypeError)
(True, True)
>>> tuple_except_index_target_raise(ValueError('test'), TypeError, ValueError, l)
2
>>> l[0] is None, isinstance(l[1], ValueError)
(True, True)
>>> tuple_except_index_target_raise(IndexError('5'), TypeError, ValueError, l)
Traceback (most recent call last):
IndexError: 5
>>> tuple_except_index_target_raise(None, TypeError, ValueError, l)
1
>>> l[0] is None, isinstance(l[1], ValueError)
(True, True)
"""
cdef int i
try:
i = 1
if x:
raise x
except (a, b), c[1]:
i = 2
assert isinstance(c[1], (a,b))
return i
def loop_bare_except_no_raise(a, b, int c):
"""
>>> loop_bare_except_no_raise(TypeError, range(2), 2)
(1, 3528)
"""
cdef int i = 1
for a in b:
try:
c = c * 42
except:
i = 17
return i,c
def loop_bare_except_raise(a, b, int c):
"""
>>> loop_bare_except_raise(TypeError, range(2), 2)
(1, 3528)
>>> loop_bare_except_raise(TypeError, range(3), 2)
(17, 148176)
>>> loop_bare_except_raise(TypeError, range(4), 2)
(17, 6223392)
"""
cdef int i = 1
for a in b:
try:
c = c * 42
if a == 2:
raise TypeError('test')
except:
i = 17
return i,c
def bare_except_reraise_no_raise(l):
"""
>>> l = [None]
>>> bare_except_reraise_no_raise(l)
1
>>> l
[None]
"""
cdef int i
try:
i = 1
except:
l[0] = 2
raise
return i
def bare_except_reraise_raise(x, l):
"""
>>> l = [None]
>>> bare_except_reraise_raise(None, l)
1
>>> l
[None]
>>> bare_except_reraise_raise(TypeError('test'), l)
Traceback (most recent call last):
TypeError: test
>>> l
[2]
>>> l = [None]
>>> bare_except_reraise_raise(None, l)
1
>>> l
[None]
"""
cdef int i
try:
i = 1
if x:
raise x
except:
l[0] = 2
raise
return i
def except_as_no_raise(a):
"""
>>> except_as_no_raise(TypeError)
1
"""
try:
i = 1
except a as b:
i = 2
return i
def except_as_raise(x, a):
"""
>>> except_as_raise(None, TypeError)
1
>>> except_as_raise(TypeError('test'), TypeError)
2
>>> except_as_raise(ValueError('test'), TypeError)
Traceback (most recent call last):
ValueError: test
>>> except_as_raise(None, TypeError)
1
"""
try:
i = 1
if x:
raise x
except a as b:
i = 2
assert isinstance(b, a)
return i
def complete_except_as_no_raise(a, b):
"""
>>> complete_except_as_no_raise(TypeError, ValueError)
5
"""
try:
i = 1
except (a, b) as c:
i = 2
except (b, a) as c:
i = 3
except:
i = 4
else:
i = 5
return i
def complete_except_as_raise(x, a, b):
"""
>>> complete_except_as_raise(None, TypeError, ValueError)
5
>>> complete_except_as_raise(TypeError('test'), TypeError, ValueError)
2
>>> complete_except_as_raise(ValueError('test'), TypeError, ValueError)
2
>>> complete_except_as_raise(IndexError('5'), TypeError, ValueError)
4
>>> complete_except_as_raise(None, TypeError, ValueError)
5
"""
try:
i = 1
if x:
raise x
except (a, b) as c:
i = 2
assert isinstance(c, (a, b))
except (b, a) as c:
i = 3
assert isinstance(c, (a, b))
except:
i = 4
else:
i = 5
return i
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment