tests: Add some more tests to improve coverage of py/parse.c.

pull/3495/head
Damien George 2017-12-19 16:13:00 +11:00
rodzic ae1be76d40
commit 35a759dc1d
6 zmienionych plików z 25 dodań i 3 usunięć

Wyświetl plik

@ -15,3 +15,7 @@ print(msg[:7], msg[-5:])
# check that unknown errno is still rendered
print(str(OSError(9999)))
# this tests a failed constant lookup in errno
errno = uerrno
print(errno.__name__)

Wyświetl plik

@ -1,3 +1,4 @@
<class 'int'>
[Errno ] EIO
9999
uerrno

Wyświetl plik

@ -29,3 +29,9 @@ print(123 // 7, 123 % 7)
print(-123 // 7, -123 % 7)
print(123 // -7, 123 % -7)
print(-123 // -7, -123 % -7)
# won't fold so an exception can be raised at runtime
try:
1 << -1
except ValueError:
print('ValueError')

Wyświetl plik

@ -29,6 +29,10 @@ test_syntax(" a\n")
# malformed integer literal (parser error)
test_syntax("123z")
# input doesn't match the grammar (parser error)
test_syntax('1 or 2 or')
test_syntax('{1:')
# can't assign to literals
test_syntax("1 = 2")
test_syntax("'' = 1")

Wyświetl plik

@ -9,3 +9,4 @@ 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
g = 123

Wyświetl plik

@ -1,5 +1,5 @@
----------------
[ 4] rule(1) (n=8)
[ 4] rule(1) (n=9)
tok(4)
[ 4] rule(22) (n=4)
id(i)
@ -25,6 +25,9 @@
[ 11] rule(5) (n=2)
id(f)
[ 11] literal \.\+
[ 12] rule(5) (n=2)
id(g)
int(123)
----------------
File cmdline/cmd_parsetree.py, code block '<module>' (descriptor: \.\+, bytecode @\.\+ bytes)
Raw bytecode (code_info_size=\\d\+, bytecode_size=\\d\+):
@ -42,6 +45,7 @@ arg names:
bc=27 line=9
bc=32 line=10
bc=37 line=11
bc=42 line=12
00 BUILD_TUPLE 0
02 GET_ITER_STACK
03 FOR_ITER 12
@ -59,8 +63,10 @@ arg names:
34 STORE_NAME e
37 LOAD_CONST_OBJ \.\+
39 STORE_NAME f
42 LOAD_CONST_NONE
43 RETURN_VALUE
42 LOAD_CONST_SMALL_INT 123
45 STORE_NAME g
48 LOAD_CONST_NONE
49 RETURN_VALUE
mem: total=\\d\+, current=\\d\+, peak=\\d\+
stack: \\d\+ out of \\d\+
GC: total: \\d\+, used: \\d\+, free: \\d\+