cython
1# tag: traceback
2
3def foo1():
4foo2()
5
6cdef foo2():
7foo3()
8
9cdef int foo3() except -1:
10raise RuntimeError('my_message')
11
12def test_traceback(cline_in_traceback=None):
13"""
14>>> test_traceback()
15>>> test_traceback(True)
16>>> test_traceback(False)
17"""
18if cline_in_traceback is not None:
19import cython_runtime
20cython_runtime.cline_in_traceback = cline_in_traceback
21try:
22foo1()
23except:
24import traceback
25tb_string = traceback.format_exc()
26expected = (
27'tracebacks.pyx',
28'foo1', 'foo2', 'foo3',
29'line 4', 'line 7', 'line 10',
30'my_message')
31for s in expected:
32assert s in tb_string, s
33if cline_in_traceback:
34assert 'tracebacks.c' in tb_string
35else:
36assert 'tracebacks.c' not in tb_string
37