1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
|
import py
class TestJitTraceInteraction(object):
def test_trace_while_blackholing(self):
import sys
l = []
printed = []
def trace(frame, event, arg):
l.append((frame.f_code.co_name, event))
return trace
def g(i, x):
if i > x - 10:
printed.append(i)
if i == x - 5:
sys.settrace(trace)
def f(x):
res = 0
for i in range(x):
res += i
g(i, x)
f(10)
sys.settrace(None)
print printed
assert l == [('g', 'call'), ('g', 'line'), ('g', 'line'), ('g', 'line'), ('g', 'return')] * 4
l1 = l
l = []
printed = []
f(10000)
sys.settrace(None)
print printed
assert l == l1
|