Skip to content

Commit 453c2e8

Browse files
committed
tests/cmdline: Improve coverage test for printing bytecode.
1 parent 799ccdc commit 453c2e8

File tree

2 files changed

+111
-9
lines changed

2 files changed

+111
-9
lines changed

tests/cmdline/cmd_showbc.py

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,12 +34,14 @@ def f():
3434
# subscript
3535
p = b[0]
3636
b[0] = p
37+
b[0] += p
3738

3839
# slice
3940
a = b[::]
4041

4142
# sequenc unpacking
4243
a, b = c
44+
a, *a = a
4345

4446
# tuple swapping
4547
a, b = b, a
@@ -79,6 +81,7 @@ def f():
7981
b
8082
while not a:
8183
b
84+
a = a or a
8285

8386
# for loop
8487
for a in b:
@@ -92,6 +95,11 @@ def f():
9295
b
9396
finally:
9497
c
98+
while a:
99+
try:
100+
break
101+
except:
102+
pass
95103

96104
# with
97105
with a:
@@ -117,6 +125,12 @@ def closure():
117125
return
118126
return 1
119127

128+
# function with lots of locals
129+
def f():
130+
l1 = l2 = l3 = l4 = l5 = l6 = l7 = l8 = l9 = l10 = 1
131+
m1 = m2 = m3 = m4 = m5 = m6 = m7 = m8 = m9 = m10 = 2
132+
l10 + m10
133+
120134
# functions with default args
121135
def f(a=1):
122136
pass
@@ -133,3 +147,6 @@ def f():
133147
# class
134148
class Class:
135149
pass
150+
151+
# delete name
152+
del Class

tests/cmdline/cmd_showbc.py.exp

Lines changed: 94 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,11 @@ arg names:
77
(N_EXC_STACK 0)
88
bc=-1 line=1
99
########
10-
bc=\\d\+ line=134
10+
bc=\\d\+ line=152
1111
00 MAKE_FUNCTION \.\+
1212
\\d\+ STORE_NAME f
13+
\\d\+ MAKE_FUNCTION \.\+
14+
\\d\+ STORE_NAME f
1315
\\d\+ LOAD_CONST_SMALL_INT 1
1416
\\d\+ BUILD_TUPLE 1
1517
\\d\+ LOAD_NULL
@@ -22,6 +24,7 @@ arg names:
2224
\\d\+ LOAD_CONST_STRING 'Class'
2325
\\d\+ CALL_FUNCTION n=2 nkw=0
2426
\\d\+ STORE_NAME Class
27+
\\d\+ DELETE_NAME Class
2528
\\d\+ LOAD_CONST_NONE
2629
\\d\+ RETURN_VALUE
2730
File cmdline/cmd_showbc.py, code block 'f' (descriptor: \.\+, bytecode @\.\+ bytes)
@@ -35,7 +38,7 @@ Raw bytecode (code_info_size=\\d\+, bytecode_size=\\d\+):
3538
(INIT_CELL 16)
3639
bc=-4 line=1
3740
########
38-
bc=\\d\+ line=118
41+
bc=\\d\+ line=126
3942
00 LOAD_CONST_NONE
4043
01 LOAD_CONST_FALSE
4144
02 BINARY_OP 5 __add__
@@ -123,6 +126,14 @@ Raw bytecode (code_info_size=\\d\+, bytecode_size=\\d\+):
123126
\\d\+ LOAD_CONST_SMALL_INT 0
124127
\\d\+ STORE_SUBSCR
125128
\\d\+ LOAD_DEREF 14
129+
\\d\+ LOAD_CONST_SMALL_INT 0
130+
\\d\+ DUP_TOP_TWO
131+
\\d\+ LOAD_SUBSCR
132+
\\d\+ LOAD_FAST 12
133+
\\d\+ BINARY_OP 18 __iadd__
134+
\\d\+ ROT_THREE
135+
\\d\+ STORE_SUBSCR
136+
\\d\+ LOAD_DEREF 14
126137
\\d\+ LOAD_CONST_NONE
127138
\\d\+ LOAD_CONST_NONE
128139
\\d\+ BUILD_SLICE 2
@@ -132,6 +143,10 @@ Raw bytecode (code_info_size=\\d\+, bytecode_size=\\d\+):
132143
\\d\+ UNPACK_SEQUENCE 2
133144
\\d\+ STORE_FAST 0
134145
\\d\+ STORE_DEREF 14
146+
\\d\+ LOAD_FAST 0
147+
\\d\+ UNPACK_EX 1
148+
\\d\+ STORE_FAST 0
149+
\\d\+ STORE_FAST 0
135150
\\d\+ LOAD_DEREF 14
136151
\\d\+ LOAD_FAST 0
137152
\\d\+ ROT_TWO
@@ -225,6 +240,10 @@ Raw bytecode (code_info_size=\\d\+, bytecode_size=\\d\+):
225240
\\d\+ POP_TOP
226241
\\d\+ LOAD_FAST 0
227242
\\d\+ POP_JUMP_IF_FALSE \\d\+
243+
\\d\+ LOAD_FAST 0
244+
\\d\+ JUMP_IF_TRUE_OR_POP \\d\+
245+
\\d\+ LOAD_FAST 0
246+
\\d\+ STORE_FAST 0
228247
\\d\+ LOAD_DEREF 14
229248
\\d\+ GET_ITER
230249
\\d\+ FOR_ITER \\d\+
@@ -251,6 +270,17 @@ Raw bytecode (code_info_size=\\d\+, bytecode_size=\\d\+):
251270
\\d\+ LOAD_FAST 1
252271
\\d\+ POP_TOP
253272
\\d\+ END_FINALLY
273+
\\d\+ JUMP \\d\+
274+
\\d\+ SETUP_EXCEPT \\d\+
275+
\\d\+ UNWIND_JUMP \\d\+ 1
276+
\\d\+ POP_BLOCK
277+
\\d\+ JUMP \\d\+
278+
\\d\+ POP_TOP
279+
\\d\+ POP_EXCEPT
280+
\\d\+ JUMP \\d\+
281+
\\d\+ END_FINALLY
282+
\\d\+ LOAD_FAST 0
283+
\\d\+ POP_JUMP_IF_TRUE \\d\+
254284
\\d\+ LOAD_FAST 0
255285
\\d\+ SETUP_WITH \\d\+
256286
\\d\+ POP_TOP
@@ -291,13 +321,68 @@ Raw bytecode (code_info_size=\\d\+, bytecode_size=\\d\+):
291321
File cmdline/cmd_showbc.py, code block 'f' (descriptor: \.\+, bytecode @\.\+ bytes)
292322
Raw bytecode (code_info_size=\\d\+, bytecode_size=\\d\+):
293323
########
324+
\.\+rg names:
325+
(N_STATE 22)
326+
(N_EXC_STACK 0)
327+
bc=-1 line=1
328+
########
329+
bc=\\d\+ line=132
330+
00 LOAD_CONST_SMALL_INT 1
331+
01 DUP_TOP
332+
02 STORE_FAST 0
333+
03 DUP_TOP
334+
04 STORE_FAST 1
335+
05 DUP_TOP
336+
06 STORE_FAST 2
337+
07 DUP_TOP
338+
08 STORE_FAST 3
339+
09 DUP_TOP
340+
10 STORE_FAST 4
341+
11 DUP_TOP
342+
12 STORE_FAST 5
343+
13 DUP_TOP
344+
14 STORE_FAST 6
345+
15 DUP_TOP
346+
16 STORE_FAST 7
347+
17 DUP_TOP
348+
18 STORE_FAST 8
349+
19 STORE_FAST 9
350+
20 LOAD_CONST_SMALL_INT 2
351+
21 DUP_TOP
352+
22 STORE_FAST 10
353+
23 DUP_TOP
354+
24 STORE_FAST 11
355+
25 DUP_TOP
356+
26 STORE_FAST 12
357+
27 DUP_TOP
358+
28 STORE_FAST 13
359+
29 DUP_TOP
360+
30 STORE_FAST 14
361+
31 DUP_TOP
362+
32 STORE_FAST 15
363+
33 DUP_TOP
364+
34 STORE_FAST_N 16
365+
36 DUP_TOP
366+
37 STORE_FAST_N 17
367+
39 DUP_TOP
368+
40 STORE_FAST_N 18
369+
42 STORE_FAST_N 19
370+
44 LOAD_FAST 9
371+
45 LOAD_FAST_N 19
372+
47 BINARY_OP 5 __add__
373+
48 POP_TOP
374+
49 LOAD_CONST_NONE
375+
50 RETURN_VALUE
376+
File cmdline/cmd_showbc.py, code block 'f' (descriptor: \.\+, bytecode @\.\+ bytes)
377+
Raw bytecode (code_info_size=\\d\+, bytecode_size=\\d\+):
378+
########
294379
\.\+5b
295380
arg names: a
296381
(N_STATE 5)
297382
(N_EXC_STACK 0)
298383
(INIT_CELL 0)
299384
########
300-
bc=\\d\+ line=124
385+
bc=\\d\+ line=138
301386
00 LOAD_CONST_SMALL_INT 2
302387
01 BUILD_TUPLE 1
303388
03 LOAD_NULL
@@ -314,9 +399,9 @@ arg names:
314399
(N_STATE 2)
315400
(N_EXC_STACK 0)
316401
bc=-1 line=1
317-
bc=0 line=129
318-
bc=3 line=130
319-
bc=6 line=131
402+
bc=0 line=143
403+
bc=3 line=144
404+
bc=6 line=145
320405
00 LOAD_CONST_NONE
321406
01 YIELD_VALUE
322407
02 POP_TOP
@@ -338,7 +423,7 @@ arg names:
338423
(N_STATE 1)
339424
(N_EXC_STACK 0)
340425
bc=-1 line=1
341-
bc=13 line=135
426+
bc=13 line=149
342427
00 LOAD_NAME __name__ (cache=0)
343428
04 STORE_NAME __module__
344429
07 LOAD_CONST_STRING 'Class'
@@ -411,7 +496,7 @@ arg names: *
411496
(N_EXC_STACK 0)
412497
bc=-\\d\+ line=1
413498
########
414-
bc=\\d\+ line=105
499+
bc=\\d\+ line=113
415500
00 LOAD_DEREF 0
416501
02 LOAD_CONST_SMALL_INT 1
417502
03 BINARY_OP 5 __add__
@@ -430,7 +515,7 @@ arg names: * b
430515
(N_EXC_STACK 0)
431516
bc=-\\d\+ line=1
432517
########
433-
bc=\\d\+ line=125
518+
bc=\\d\+ line=139
434519
00 LOAD_FAST 1
435520
01 LOAD_DEREF 0
436521
03 BINARY_OP 5 __add__

0 commit comments

Comments
 (0)