tests: Add a coverage test for printing the parse-tree.

This commit is contained in:
Damien George 2016-12-22 11:26:06 +11:00
parent ebb8413178
commit cdec7ba30e
5 changed files with 87 additions and 0 deletions

View File

@ -0,0 +1,11 @@
# cmdline: -v -v -v
# test printing of the parse-tree
for i in ():
pass
a = None
b = 'str'
c = 'a very long str that will not be interned'
d = b'bytes'
e = b'a very long bytes that will not be interned'
f = 123456789012345678901234567890

View File

@ -0,0 +1,67 @@
----------------
[ 4] rule(2) (n=8)
tok(5)
[ 4] rule(78) (n=4)
id(i)
[ 4] rule(131) (n=1)
NULL
[ 5] rule(42) (n=0)
NULL
[ 6] rule(32) (n=2)
id(a)
tok(15)
[ 7] rule(32) (n=2)
id(b)
str(str)
[ 8] rule(32) (n=2)
id(c)
[ 8] literal str(a very long str that will not be interned)
[ 9] rule(32) (n=2)
id(d)
bytes(bytes)
[ 10] rule(32) (n=2)
id(e)
[ 10] literal bytes(a very long bytes that will not be interned)
[ 11] rule(32) (n=2)
id(f)
[ 11] literal \.\+
----------------
File cmdline/cmd_parsetree.py, code block '<module>' (descriptor: \.\+, bytecode @\.\+ bytes)
Raw bytecode (code_info_size=\\d\+, bytecode_size=\\d\+):
########
\.\+5b
arg names:
(N_STATE 2)
(N_EXC_STACK 0)
bc=-1 line=1
bc=0 line=4
bc=9 line=5
bc=12 line=6
bc=16 line=7
bc=22 line=8
bc=27 line=9
bc=32 line=10
bc=37 line=11
00 BUILD_TUPLE 0
02 GET_ITER
03 FOR_ITER 12
06 STORE_NAME i
09 JUMP 3
12 LOAD_CONST_NONE
13 STORE_NAME a
16 LOAD_CONST_STRING 'str'
19 STORE_NAME b
22 LOAD_CONST_OBJ \.\+
24 STORE_NAME c
27 LOAD_CONST_OBJ \.\+
29 STORE_NAME d
32 LOAD_CONST_OBJ \.\+
34 STORE_NAME e
37 LOAD_CONST_OBJ \.\+
39 STORE_NAME f
42 LOAD_CONST_NONE
43 RETURN_VALUE
mem: total=\\d\+, current=\\d\+, peak=\\d\+
stack: \\d\+ out of \\d\+
GC: total: \\d\+, used: \\d\+, free: \\d\+
No. of 1-blocks: \\d\+, 2-blocks: \\d\+, max blk sz: \\d\+, max free sz: \\d\+

View File

@ -0,0 +1,5 @@
try:
extra_coverage
print('coverage')
except NameError:
print('no')

View File

View File

@ -208,6 +208,7 @@ def run_tests(pyb, tests, args):
upy_byteorder = run_micropython(pyb, args, 'feature_check/byteorder.py') upy_byteorder = run_micropython(pyb, args, 'feature_check/byteorder.py')
has_complex = run_micropython(pyb, args, 'feature_check/complex.py') == b'complex\n' has_complex = run_micropython(pyb, args, 'feature_check/complex.py') == b'complex\n'
has_coverage = run_micropython(pyb, args, 'feature_check/coverage.py') == b'coverage\n'
cpy_byteorder = subprocess.check_output([CPYTHON3, 'feature_check/byteorder.py']) cpy_byteorder = subprocess.check_output([CPYTHON3, 'feature_check/byteorder.py'])
skip_endian = (upy_byteorder != cpy_byteorder) skip_endian = (upy_byteorder != cpy_byteorder)
@ -225,6 +226,9 @@ def run_tests(pyb, tests, args):
skip_tests.add('float/true_value.py') skip_tests.add('float/true_value.py')
skip_tests.add('float/types.py') skip_tests.add('float/types.py')
if not has_coverage:
skip_tests.add('cmdline/cmd_parsetree.py')
# Some tests shouldn't be run on a PC # Some tests shouldn't be run on a PC
if pyb is None: if pyb is None:
# unix build does not have the GIL so can't run thread mutation tests # unix build does not have the GIL so can't run thread mutation tests