mirror of
https://github.com/python/cpython.git
synced 2025-08-04 08:59:19 +00:00
[3.11] GH-96636: Remove all uses of NOTRACE_DISPATCH (GH-96643) (#96688)
Co-authored-by: Brandt Bucher <brandtbucher@gmail.com>
(cherry picked from commit aa3b4cf779
)
This commit is contained in:
parent
7bfb11de68
commit
5586da65e2
3 changed files with 104 additions and 59 deletions
|
@ -1,6 +1,7 @@
|
|||
# Test the most dynamic corner cases of Python's runtime semantics.
|
||||
|
||||
import builtins
|
||||
import sys
|
||||
import unittest
|
||||
|
||||
from test.support import swap_item, swap_attr
|
||||
|
@ -146,5 +147,48 @@ class RebindBuiltinsTests(unittest.TestCase):
|
|||
for _ in range(30):
|
||||
self.assertEqual(sum_1000(), expected)
|
||||
|
||||
|
||||
class TestTracing(unittest.TestCase):
|
||||
|
||||
def setUp(self):
|
||||
self.addCleanup(sys.settrace, sys.gettrace())
|
||||
sys.settrace(None)
|
||||
|
||||
def test_after_specialization(self):
|
||||
|
||||
def trace(frame, event, arg):
|
||||
return trace
|
||||
|
||||
turn_on_trace = False
|
||||
|
||||
class C:
|
||||
def __init__(self, x):
|
||||
self.x = x
|
||||
def __del__(self):
|
||||
if turn_on_trace:
|
||||
sys.settrace(trace)
|
||||
|
||||
def f():
|
||||
# LOAD_GLOBAL[_BUILTIN] immediately follows the call to C.__del__
|
||||
C(0).x, len
|
||||
|
||||
def g():
|
||||
# BINARY_SUSCR[_LIST_INT] immediately follows the call to C.__del__
|
||||
[0][C(0).x]
|
||||
|
||||
def h():
|
||||
# BINARY_OP[_ADD_INT] immediately follows the call to C.__del__
|
||||
0 + C(0).x
|
||||
|
||||
for func in (f, g, h):
|
||||
with self.subTest(func.__name__):
|
||||
for _ in range(58):
|
||||
func()
|
||||
turn_on_trace = True
|
||||
func()
|
||||
sys.settrace(None)
|
||||
turn_on_trace = False
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
unittest.main()
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue