Skip to content

Commit 48dfcb5

Browse files
committed
Add token test
1 parent c1fd52e commit 48dfcb5

File tree

1 file changed

+49
-1
lines changed

1 file changed

+49
-1
lines changed

Lib/test/test_monitoring.py

Lines changed: 49 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1425,12 +1425,13 @@ def line_from_offset(code, offset):
14251425
return line - code.co_firstlineno
14261426
return -1
14271427

1428+
14281429
class JumpRecorder:
14291430

14301431
event_type = E.JUMP
14311432
name = "jump"
14321433

1433-
def __init__(self, events):
1434+
def __init__(self, events, offsets=False):
14341435
self.events = events
14351436

14361437
def __call__(self, code, from_, to):
@@ -1444,11 +1445,44 @@ class BranchRecorder(JumpRecorder):
14441445
event_type = E.BRANCH
14451446
name = "branch"
14461447

1448+
class BranchTakenRecorder(JumpRecorder):
1449+
1450+
event_type = E.BRANCH_TAKEN
1451+
name = "branch taken"
1452+
1453+
class BranchNotTakenRecorder(JumpRecorder):
1454+
1455+
event_type = E.BRANCH_NOT_TAKEN
1456+
name = "branch not taken"
1457+
1458+
1459+
class JumpOffsetRecorder:
1460+
1461+
event_type = E.JUMP
1462+
name = "jump"
1463+
1464+
def __init__(self, events, offsets=False):
1465+
self.events = events
1466+
1467+
def __call__(self, code, from_, to):
1468+
self.events.append((self.name, code.co_name, from_, to))
1469+
1470+
class BranchTakenOffsetRecorder(JumpOffsetRecorder):
1471+
1472+
event_type = E.BRANCH_TAKEN
1473+
name = "branch taken"
1474+
1475+
class BranchNotTakenOffsetRecorder(JumpOffsetRecorder):
1476+
1477+
event_type = E.BRANCH_NOT_TAKEN
1478+
name = "branch not taken"
14471479

14481480

14491481
JUMP_AND_BRANCH_RECORDERS = JumpRecorder, BranchRecorder
14501482
JUMP_BRANCH_AND_LINE_RECORDERS = JumpRecorder, BranchRecorder, LineRecorder
14511483
FLOW_AND_LINE_RECORDERS = JumpRecorder, BranchRecorder, LineRecorder, ExceptionRecorder, ReturnRecorder
1484+
BRANCHES_RECORDERS = BranchTakenRecorder, BranchNotTakenRecorder
1485+
BRANCH_OFFSET_RECORDERS = BranchTakenOffsetRecorder, BranchNotTakenOffsetRecorder
14521486

14531487
class TestBranchAndJumpEvents(CheckEvents):
14541488
maxDiff = None
@@ -1493,6 +1527,20 @@ def func():
14931527
('line', 'func', 7),
14941528
('line', 'get_events', 11)])
14951529

1530+
self.check_events(func, recorders = BRANCHES_RECORDERS, expected = [
1531+
('branch not taken', 'func', 2, 2),
1532+
('branch taken', 'func', 3, 6),
1533+
('branch not taken', 'func', 2, 2),
1534+
('branch not taken', 'func', 3, 4),
1535+
('branch taken', 'func', 2, 7)])
1536+
1537+
self.check_events(func, recorders = BRANCH_OFFSET_RECORDERS, expected = [
1538+
('branch not taken', 'func', 28, 34),
1539+
('branch taken', 'func', 46, 60),
1540+
('branch not taken', 'func', 28, 34),
1541+
('branch not taken', 'func', 46, 52),
1542+
('branch taken', 'func', 28, 72)])
1543+
14961544
def test_except_star(self):
14971545

14981546
class Foo:

0 commit comments

Comments
 (0)