Skip to content

Commit 4db57bc

Browse files
committed
Add tests for exception restoring.
1 parent e1bf4a3 commit 4db57bc

File tree

1 file changed

+56
-1
lines changed

1 file changed

+56
-1
lines changed

graalpython/com.oracle.graal.python.test/src/tests/test_raise-try.py

Lines changed: 56 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727
got_kbd_int = False
2828
got_finally = False
2929

30+
3031
def divide(x, y):
3132
global got_kbd_int, got_finally
3233
try:
@@ -43,6 +44,60 @@ def divide(x, y):
4344

4445

4546
def test_raise():
46-
divide(1,1)
47+
divide(1, 1)
4748
assert got_kbd_int
4849
assert got_finally
50+
51+
52+
def test_exception_restoring():
53+
import sys
54+
trace = []
55+
try:
56+
try:
57+
assert sys.exc_info() == (None, None, None)
58+
trace.append(1)
59+
raise ValueError("1")
60+
except ValueError:
61+
assert sys.exc_info()[0] == ValueError
62+
try:
63+
trace.append(2)
64+
raise KeyError("2")
65+
except KeyError:
66+
assert sys.exc_info()[0] == KeyError
67+
trace.append(3)
68+
trace.append(4)
69+
raise
70+
except ValueError:
71+
assert sys.exc_info()[0] == ValueError, "IS: %s" % sys.exc_info()[0]
72+
trace.append(5)
73+
assert trace == [1, 2, 3, 4, 5]
74+
75+
76+
def test_exception_restoring_with_return():
77+
import sys
78+
trace = []
79+
def handler():
80+
try:
81+
trace.append(2)
82+
raise KeyError("2")
83+
except KeyError:
84+
assert sys.exc_info()[0] == KeyError
85+
trace.append(3)
86+
return
87+
trace.append(-1)
88+
trace.append(-1)
89+
90+
try:
91+
try:
92+
assert sys.exc_info() == (None, None, None)
93+
trace.append(1)
94+
raise ValueError("1")
95+
except ValueError:
96+
assert sys.exc_info()[0] == ValueError
97+
handler()
98+
trace.append(4)
99+
raise
100+
except ValueError:
101+
assert sys.exc_info()[0] == ValueError, "IS: %s" % sys.exc_info()[0]
102+
trace.append(5)
103+
assert trace == [1, 2, 3, 4, 5]

0 commit comments

Comments
 (0)