GH-96864: Check for error between line and opcode events (GH-96880)

This commit is contained in:
Brandt Bucher 2022-09-19 14:02:24 -07:00 committed by GitHub
parent 5b3a2569f4
commit c10e33ac11
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 17 additions and 1 deletions

View file

@ -1721,6 +1721,20 @@ class RaisingTraceFuncTestCase(unittest.TestCase):
finally:
sys.settrace(existing)
def test_line_event_raises_before_opcode_event(self):
exception = ValueError("BOOM!")
def trace(frame, event, arg):
if event == "line":
raise exception
frame.f_trace_opcodes = True
return trace
def f():
pass
with self.assertRaises(ValueError) as caught:
sys.settrace(trace)
f()
self.assertIs(caught.exception, exception)
# 'Jump' tests: assigning to frame.f_lineno within a trace function
# moves the execution position - it's how debuggers implement a Jump