summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
authorDamien George <damien.p.george@gmail.com>2015-03-20 17:25:25 +0000
committerDamien George <damien.p.george@gmail.com>2015-03-20 17:25:25 +0000
commit1004535237e8edc5ec671ab8bea6fd2150139c54 (patch)
tree3c0e69d093310d9b6e20553b17ec3501bc584cd0
parent8e9a71257dbbd60881f74f897b6447e457937063 (diff)
downloadmicropython-1004535237e8edc5ec671ab8bea6fd2150139c54.tar.gz
micropython-1004535237e8edc5ec671ab8bea6fd2150139c54.zip
tests: Make cmdline tests more stable by using regex for matching.
-rw-r--r--tests/cmdline/cmd_showbc.py.exp564
-rw-r--r--tests/cmdline/cmd_verbose.py.exp17
-rw-r--r--tests/cmdline/repl_basic.py.exp2
-rwxr-xr-xtests/run-tests55
4 files changed, 277 insertions, 361 deletions
diff --git a/tests/cmdline/cmd_showbc.py.exp b/tests/cmdline/cmd_showbc.py.exp
index c7fb518b61..edea49ae7a 100644
--- a/tests/cmdline/cmd_showbc.py.exp
+++ b/tests/cmdline/cmd_showbc.py.exp
@@ -1,75 +1,34 @@
-File cmdline/cmd_showbc.py, code block '<module>' (descriptor: ######
-Raw bytecode (code_info_size=16, bytecode_size=74):
- 10 82 23 83 45 63 8f 75 01 8f 07 01 70 60 00 00
- 03 00 00 60 00 00 00 00 ######
- 24 83 46 81 50 01 18 61 ######
- 24 83 46 60 00 00 00 00 ######
- 24 83 46 20 60 00 00 00 ######
- 16 83 57 64 02 24 83 57 11 5b
+File cmdline/cmd_showbc.py, code block '<module>' (descriptor: \.\+, bytecode @\.\+ bytes)
+Raw bytecode (code_info_size=\\d\+, bytecode_size=\\d\+):
+########
+\.\+5b
arg names:
(N_STATE 3)
(N_EXC_STACK 0)
(NUM_LOCAL 0)
bc=-3 line=1
- bc=0 line=4
- bc=15 line=121
- bc=16 line=121
- bc=31 line=128
- bc=32 line=128
- bc=48 line=131
- bc=48 line=134
-00 MAKE_FUNCTION ######
-13 STORE_NAME f
-16 LOAD_CONST_SMALL_INT 1
-17 BUILD_TUPLE 1
-19 LOAD_NULL
-20 MAKE_FUNCTION_DEFARGS ######
-29 STORE_NAME f
-32 MAKE_FUNCTION ######
-45 STORE_NAME f
-48 LOAD_BUILD_CLASS
-49 MAKE_FUNCTION ######
-61 LOAD_CONST_STRING 'Class'
-64 CALL_FUNCTION n=2 nkw=0
-66 STORE_NAME Class
-69 LOAD_CONST_NONE
-70 RETURN_VALUE
-File cmdline/cmd_showbc.py, code block 'f' (descriptor: ######
-Raw bytecode (code_info_size=80, bytecode_size=449):
- 50 83 46 83 45 66 40 28 22 24 64 22 26 25 25 24
- 26 24 64 22 22 25 23 24 31 6e 27 67 25 65 68 66
- 27 6a 62 20 24 63 33 38 78 24 25 29 67 27 28 2c
- 69 24 46 25 23 27 23 67 27 65 26 23 4e 4a 63 25
- 67 23 6d 60 26 2f 69 22 63 22 00 00 00 00 00 00
- 19 02 03 0e 0f 10 11 10 da 12 da 13 da c0 80 c0
- 14 87 68 c0 14 f8 18 c0 81 c0 81 82 50 02 23 0e
- 81 82 51 02 c1 81 82 56 02 c2 53 00 23 0f 53 01
- 82 81 54 c3 16 83 47 c4 15 83 47 c5 81 c6 82 c7
- b0 1b 0e da c8 b0 d3 c9 b0 d0 47 ca b0 1b 0e 30
- 34 ef 39 05 80 b1 ef 35 02 80 33 32 ca b0 1b 0e
- ef 39 04 80 1b 0e b1 ef d0 47 ca 1b 0e 1e 83 49
- 00 cb bb 1b 0e 26 83 49 00 1b 0e 80 21 cc bc 1b
- 0e 80 27 1b 0e 11 11 58 02 21 c0 b1 59 02 c0 23
- 0e 1b 0e b0 33 c0 23 0e b1 1b 0e b0 34 33 c0 23
- 0e c1 28 00 b0 25 83 54 2b 83 54 be bf 62 00 00
- ######
- 62 00 00 00 00 00 00 00 ######
- 02 b2 42 64 01 c0 be bf 62 00 00 00 00 00 00 00
- ######
- 00 32 b0 81 64 01 32 b0 16 83 48 81 64 82 00 32
- b0 1b 0e 18 65 00 32 b0 1f 83 48 66 00 32 b0 1f
- 83 48 81 66 01 32 b0 1f 83 48 16 83 49 81 66 82
- 00 32 b0 1f 83 48 b1 18 67 00 32 b0 37 06 80 1b
- 10 32 35 05 80 1d 83 56 00 32 35 03 80 1b 0e 32
- b0 36 f9 7f 35 03 80 1b 0e 32 b0 37 f9 7f 1b 0e
- 42 43 06 00 c0 b1 32 35 f7 7f 40 1e 00 3f 0e 00
- 35 03 80 35 04 80 b0 36 f9 7f 44 35 0b 80 32 32
- 32 1b 0e 32 45 35 01 80 41 44 11 b1 32 41 b0 3d
- 06 00 32 1b 0e 32 44 11 3e 41 81 23 10 1a 10 62
- ######
- 80 16 83 48 50 01 68 83 47 69 83 48 23 0e 32 80
- 16 02 50 01 68 83 47 6a 5c 00 81 5c 01 11 5b 81
- 5b
+########
+ bc=\\d\+ line=134
+00 MAKE_FUNCTION \.\+
+\\d\+ STORE_NAME f
+\\d\+ LOAD_CONST_SMALL_INT 1
+\\d\+ BUILD_TUPLE 1
+\\d\+ LOAD_NULL
+\\d\+ MAKE_FUNCTION_DEFARGS \.\+
+\\d\+ STORE_NAME f
+\\d\+ MAKE_FUNCTION \.\+
+\\d\+ STORE_NAME f
+\\d\+ LOAD_BUILD_CLASS
+\\d\+ MAKE_FUNCTION \.\+
+\\d\+ LOAD_CONST_STRING 'Class'
+\\d\+ CALL_FUNCTION n=2 nkw=0
+\\d\+ STORE_NAME Class
+\\d\+ LOAD_CONST_NONE
+\\d\+ RETURN_VALUE
+File cmdline/cmd_showbc.py, code block 'f' (descriptor: \.\+, bytecode @\.\+ bytes)
+Raw bytecode (code_info_size=\\d\+, bytecode_size=\\d\+):
+########
+\.\+5b
arg names:
(N_STATE 25)
(N_EXC_STACK 2)
@@ -78,75 +37,8 @@ arg names:
(INIT_CELL 15)
(INIT_CELL 16)
bc=-6 line=1
- bc=0 line=4
- bc=0 line=6
- bc=8 line=7
- bc=10 line=8
- bc=14 line=9
- bc=18 line=12
- bc=20 line=13
- bc=26 line=14
- bc=31 line=15
- bc=36 line=16
- bc=40 line=17
- bc=46 line=18
- bc=50 line=19
- bc=54 line=22
- bc=56 line=23
- bc=58 line=24
- bc=63 line=25
- bc=66 line=26
- bc=70 line=27
- bc=87 line=28
- bc=101 line=31
- bc=108 line=32
- bc=115 line=35
- bc=120 line=36
- bc=125 line=39
- bc=133 line=42
- bc=139 line=45
- bc=146 line=46
- bc=156 line=49
- bc=158 line=52
- bc=158 line=53
- bc=162 line=54
- bc=165 line=57
- bc=184 line=58
- bc=208 line=59
- bc=232 line=62
- bc=236 line=63
- bc=241 line=64
- bc=250 line=65
- bc=257 line=68
- bc=264 line=69
- bc=272 line=70
- bc=284 line=71
- bc=293 line=74
- bc=297 line=75
- bc=303 line=77
- bc=308 line=78
- bc=311 line=79
- bc=318 line=80
- bc=321 line=81
- bc=328 line=84
- bc=335 line=85
- bc=340 line=88
- bc=346 line=89
- bc=349 line=90
- bc=363 line=92
- bc=373 line=94
- bc=376 line=97
- bc=381 line=98
- bc=388 line=101
- bc=391 line=102
- bc=404 line=105
- bc=404 line=108
- bc=410 line=109
- bc=425 line=110
- bc=434 line=113
- bc=436 line=114
- bc=439 line=117
- bc=441 line=118
+########
+ bc=\\d\+ line=118
00 LOAD_CONST_NONE
01 LOAD_CONST_FALSE
02 BINARY_OP 5 __add__
@@ -263,176 +155,171 @@ arg names:
156 DELETE_FAST 0
158 LOAD_FAST 0
159 STORE_GLOBAL gl
-162 LOAD_CONST_SMALL_INT -85
-163 LOAD_CONST_SMALL_INT 3
-164 STORE_MAP
+162 DELETE_GLOBAL gl
165 LOAD_FAST 14
166 LOAD_FAST 15
-167 MAKE_CLOSURE ######
-179 LOAD_FAST 2
-180 GET_ITER
-181 CALL_FUNCTION n=1 nkw=0
-183 STORE_FAST 0
-184 LOAD_FAST 14
-185 LOAD_FAST 15
-186 MAKE_CLOSURE ######
-203 LOAD_FAST 2
-204 GET_ITER
-205 CALL_FUNCTION n=1 nkw=0
-207 STORE_FAST 0
-208 LOAD_FAST 14
-209 LOAD_FAST 15
-210 MAKE_CLOSURE ######
-227 LOAD_FAST 2
-228 GET_ITER
-229 CALL_FUNCTION n=1 nkw=0
-231 STORE_FAST 0
-232 LOAD_FAST 0
-233 CALL_FUNCTION n=0 nkw=0
-235 POP_TOP
-236 LOAD_FAST 0
-237 LOAD_CONST_SMALL_INT 1
-238 CALL_FUNCTION n=1 nkw=0
-240 POP_TOP
-241 LOAD_FAST 0
-242 LOAD_CONST_STRING 'b'
-245 LOAD_CONST_SMALL_INT 1
-246 CALL_FUNCTION n=0 nkw=1
-249 POP_TOP
-250 LOAD_FAST 0
-251 LOAD_DEREF 14
-253 LOAD_NULL
-254 CALL_FUNCTION_VAR_KW n=0 nkw=0
-256 POP_TOP
-257 LOAD_FAST 0
-258 LOAD_METHOD b
-261 CALL_METHOD n=0 nkw=0
-263 POP_TOP
-264 LOAD_FAST 0
-265 LOAD_METHOD b
-268 LOAD_CONST_SMALL_INT 1
-269 CALL_METHOD n=1 nkw=0
-271 POP_TOP
-272 LOAD_FAST 0
-273 LOAD_METHOD b
-276 LOAD_CONST_STRING 'c'
-279 LOAD_CONST_SMALL_INT 1
-280 CALL_METHOD n=0 nkw=1
-283 POP_TOP
-284 LOAD_FAST 0
-285 LOAD_METHOD b
-288 LOAD_FAST 1
-289 LOAD_NULL
-290 CALL_METHOD_VAR_KW n=0 nkw=0
-292 POP_TOP
-293 LOAD_FAST 0
-294 POP_JUMP_IF_FALSE 303
-297 LOAD_DEREF 16
-299 POP_TOP
-300 JUMP 308
-303 LOAD_GLOBAL y (cache=0)
-307 POP_TOP
-308 JUMP 314
-311 LOAD_DEREF 14
-313 POP_TOP
-314 LOAD_FAST 0
-315 POP_JUMP_IF_TRUE 311
-318 JUMP 324
-321 LOAD_DEREF 14
-323 POP_TOP
-324 LOAD_FAST 0
-325 POP_JUMP_IF_FALSE 321
-328 LOAD_DEREF 14
-330 GET_ITER
-331 FOR_ITER 340
-334 STORE_FAST 0
-335 LOAD_FAST 1
-336 POP_TOP
-337 JUMP 331
-340 SETUP_FINALLY 373
-343 SETUP_EXCEPT 360
-346 JUMP 352
-349 JUMP 356
-352 LOAD_FAST 0
-353 POP_JUMP_IF_TRUE 349
-356 POP_BLOCK
-357 JUMP 371
-360 POP_TOP
-361 POP_TOP
-362 POP_TOP
-363 LOAD_DEREF 14
-365 POP_TOP
-366 POP_EXCEPT
-367 JUMP 371
-370 END_FINALLY
-371 POP_BLOCK
-372 LOAD_CONST_NONE
-373 LOAD_FAST 1
-374 POP_TOP
-375 END_FINALLY
-376 LOAD_FAST 0
-377 SETUP_WITH 386
-380 POP_TOP
-381 LOAD_DEREF 14
-383 POP_TOP
-384 POP_BLOCK
-385 LOAD_CONST_NONE
-386 WITH_CLEANUP
-387 END_FINALLY
-388 LOAD_CONST_SMALL_INT 1
-389 STORE_DEREF 16
-391 LOAD_FAST_N 16
-393 MAKE_CLOSURE ######
-403 STORE_FAST 13
-404 LOAD_CONST_SMALL_INT 0
-405 LOAD_CONST_NONE
-406 IMPORT_NAME 'a'
-409 STORE_FAST 0
-410 LOAD_CONST_SMALL_INT 0
-411 LOAD_CONST_STRING 'b'
-414 BUILD_TUPLE 1
-416 IMPORT_NAME 'a'
-419 IMPORT_FROM 'b'
-422 STORE_DEREF 14
-424 POP_TOP
-425 LOAD_CONST_SMALL_INT 0
-426 LOAD_CONST_STRING '*'
-428 BUILD_TUPLE 1
-430 IMPORT_NAME 'a'
-433 IMPORT_STAR
-434 RAISE_VARARGS 0
-436 LOAD_CONST_SMALL_INT 1
-437 RAISE_VARARGS 1
-439 LOAD_CONST_NONE
-440 RETURN_VALUE
-441 LOAD_CONST_SMALL_INT 1
-442 RETURN_VALUE
-File cmdline/cmd_showbc.py, code block 'f' (descriptor: ######
-Raw bytecode (code_info_size=16, bytecode_size=36):
- 10 83 46 83 45 8c 79 40 00 00 00 00 00 00 00 00
- 1e 07 00 00 00 00 00 00 05 00 01 00 82 50 01 18
- b0 63 00 00 00 00 00 00 ######
- 01 c1 11 5b
+167 MAKE_CLOSURE \.\+ 2
+\\d\+ LOAD_FAST 2
+\\d\+ GET_ITER
+\\d\+ CALL_FUNCTION n=1 nkw=0
+\\d\+ STORE_FAST 0
+\\d\+ LOAD_FAST 14
+\\d\+ LOAD_FAST 15
+\\d\+ MAKE_CLOSURE \.\+ 2
+\\d\+ LOAD_FAST 2
+\\d\+ GET_ITER
+\\d\+ CALL_FUNCTION n=1 nkw=0
+\\d\+ STORE_FAST 0
+\\d\+ LOAD_FAST 14
+\\d\+ LOAD_FAST 15
+\\d\+ MAKE_CLOSURE \.\+ 2
+\\d\+ LOAD_FAST 2
+\\d\+ GET_ITER
+\\d\+ CALL_FUNCTION n=1 nkw=0
+\\d\+ STORE_FAST 0
+\\d\+ LOAD_FAST 0
+\\d\+ CALL_FUNCTION n=0 nkw=0
+\\d\+ POP_TOP
+\\d\+ LOAD_FAST 0
+\\d\+ LOAD_CONST_SMALL_INT 1
+\\d\+ CALL_FUNCTION n=1 nkw=0
+\\d\+ POP_TOP
+\\d\+ LOAD_FAST 0
+\\d\+ LOAD_CONST_STRING 'b'
+\\d\+ LOAD_CONST_SMALL_INT 1
+\\d\+ CALL_FUNCTION n=0 nkw=1
+\\d\+ POP_TOP
+\\d\+ LOAD_FAST 0
+\\d\+ LOAD_DEREF 14
+\\d\+ LOAD_NULL
+\\d\+ CALL_FUNCTION_VAR_KW n=0 nkw=0
+\\d\+ POP_TOP
+\\d\+ LOAD_FAST 0
+\\d\+ LOAD_METHOD b
+\\d\+ CALL_METHOD n=0 nkw=0
+\\d\+ POP_TOP
+\\d\+ LOAD_FAST 0
+\\d\+ LOAD_METHOD b
+\\d\+ LOAD_CONST_SMALL_INT 1
+\\d\+ CALL_METHOD n=1 nkw=0
+\\d\+ POP_TOP
+\\d\+ LOAD_FAST 0
+\\d\+ LOAD_METHOD b
+\\d\+ LOAD_CONST_STRING 'c'
+\\d\+ LOAD_CONST_SMALL_INT 1
+\\d\+ CALL_METHOD n=0 nkw=1
+\\d\+ POP_TOP
+\\d\+ LOAD_FAST 0
+\\d\+ LOAD_METHOD b
+\\d\+ LOAD_FAST 1
+\\d\+ LOAD_NULL
+\\d\+ CALL_METHOD_VAR_KW n=0 nkw=0
+\\d\+ POP_TOP
+\\d\+ LOAD_FAST 0
+\\d\+ POP_JUMP_IF_FALSE \\d\+
+\\d\+ LOAD_DEREF 16
+\\d\+ POP_TOP
+\\d\+ JUMP \\d\+
+\\d\+ LOAD_GLOBAL y (cache=0)
+\\d\+ POP_TOP
+\\d\+ JUMP \\d\+
+\\d\+ LOAD_DEREF 14
+\\d\+ POP_TOP
+\\d\+ LOAD_FAST 0
+\\d\+ POP_JUMP_IF_TRUE \\d\+
+\\d\+ JUMP \\d\+
+\\d\+ LOAD_DEREF 14
+\\d\+ POP_TOP
+\\d\+ LOAD_FAST 0
+\\d\+ POP_JUMP_IF_FALSE \\d\+
+\\d\+ LOAD_DEREF 14
+\\d\+ GET_ITER
+\\d\+ FOR_ITER \\d\+
+\\d\+ STORE_FAST 0
+\\d\+ LOAD_FAST 1
+\\d\+ POP_TOP
+\\d\+ JUMP \\d\+
+\\d\+ SETUP_FINALLY \\d\+
+\\d\+ SETUP_EXCEPT \\d\+
+\\d\+ JUMP \\d\+
+\\d\+ JUMP \\d\+
+\\d\+ LOAD_FAST 0
+\\d\+ POP_JUMP_IF_TRUE \\d\+
+\\d\+ POP_BLOCK
+\\d\+ JUMP \\d\+
+\\d\+ POP_TOP
+\\d\+ POP_TOP
+\\d\+ POP_TOP
+\\d\+ LOAD_DEREF 14
+\\d\+ POP_TOP
+\\d\+ POP_EXCEPT
+\\d\+ JUMP \\d\+
+\\d\+ END_FINALLY
+\\d\+ POP_BLOCK
+\\d\+ LOAD_CONST_NONE
+\\d\+ LOAD_FAST 1
+\\d\+ POP_TOP
+\\d\+ END_FINALLY
+\\d\+ LOAD_FAST 0
+\\d\+ SETUP_WITH \\d\+
+\\d\+ POP_TOP
+\\d\+ LOAD_DEREF 14
+\\d\+ POP_TOP
+\\d\+ POP_BLOCK
+\\d\+ LOAD_CONST_NONE
+\\d\+ WITH_CLEANUP
+\\d\+ END_FINALLY
+\\d\+ LOAD_CONST_SMALL_INT 1
+\\d\+ STORE_DEREF 16
+\\d\+ LOAD_FAST_N 16
+\\d\+ MAKE_CLOSURE \.\+ 1
+\\d\+ STORE_FAST 13
+\\d\+ LOAD_CONST_SMALL_INT 0
+\\d\+ LOAD_CONST_NONE
+\\d\+ IMPORT_NAME 'a'
+\\d\+ STORE_FAST 0
+\\d\+ LOAD_CONST_SMALL_INT 0
+\\d\+ LOAD_CONST_STRING 'b'
+\\d\+ BUILD_TUPLE 1
+\\d\+ IMPORT_NAME 'a'
+\\d\+ IMPORT_FROM 'b'
+\\d\+ STORE_DEREF 14
+\\d\+ POP_TOP
+\\d\+ LOAD_CONST_SMALL_INT 0
+\\d\+ LOAD_CONST_STRING '*'
+\\d\+ BUILD_TUPLE 1
+\\d\+ IMPORT_NAME 'a'
+\\d\+ IMPORT_STAR
+\\d\+ RAISE_VARARGS 0
+\\d\+ LOAD_CONST_SMALL_INT 1
+\\d\+ RAISE_VARARGS 1
+\\d\+ LOAD_CONST_NONE
+\\d\+ RETURN_VALUE
+\\d\+ LOAD_CONST_SMALL_INT 1
+\\d\+ RETURN_VALUE
+File cmdline/cmd_showbc.py, code block 'f' (descriptor: \.\+, bytecode @\.\+ bytes)
+Raw bytecode (code_info_size=\\d\+, bytecode_size=\\d\+):
+########
+\.\+5b
arg names: a
(N_STATE 5)
(N_EXC_STACK 0)
(NUM_LOCAL 1)
(INIT_CELL 0)
- bc=-12 line=1
- bc=0 line=122
- bc=0 line=124
+########
+ bc=\\d\+ line=124
00 LOAD_CONST_SMALL_INT 2
01 BUILD_TUPLE 1
03 LOAD_NULL
04 LOAD_FAST 0
-05 MAKE_CLOSURE_DEFARGS ######
-21 STORE_FAST 1
-22 LOAD_CONST_NONE
-23 RETURN_VALUE
-File cmdline/cmd_showbc.py, code block 'f' (descriptor: ######
-Raw bytecode (code_info_size=16, bytecode_size=16):
- 10 83 46 83 45 83 80 23 23 00 00 00 00 00 00 00
- 02 00 00 11 5d 32 81 5d 32 81 42 11 5e 32 11 5b
+05 MAKE_CLOSURE_DEFARGS \.\+ 1
+\\d\+ STORE_FAST 1
+\\d\+ LOAD_CONST_NONE
+\\d\+ RETURN_VALUE
+File cmdline/cmd_showbc.py, code block 'f' (descriptor: \.\+, bytecode @\.\+ bytes)
+Raw bytecode (code_info_size=\\d\+, bytecode_size=\\d\+):
+########
+\.\+5b
arg names:
(N_STATE 2)
(N_EXC_STACK 0)
@@ -454,10 +341,10 @@ arg names:
10 POP_TOP
11 LOAD_CONST_NONE
12 RETURN_VALUE
-File cmdline/cmd_showbc.py, code block 'Class' (descriptor: ######
-Raw bytecode (code_info_size=8, bytecode_size=15):
- 08 83 57 83 45 8d 86 00 01 00 00 1c 0c 00 24 0b
- 16 83 57 24 0f 11 5b
+File cmdline/cmd_showbc.py, code block 'Class' (descriptor: \.\+, bytecode @\.\+ bytes)
+Raw bytecode (code_info_size=\\d\+, bytecode_size=\\d\+):
+########
+\.\+5b
arg names:
(N_STATE 1)
(N_EXC_STACK 0)
@@ -470,17 +357,15 @@ arg names:
08 STORE_NAME __qualname__
10 LOAD_CONST_NONE
11 RETURN_VALUE
-File cmdline/cmd_showbc.py, code block '<genexpr>' (descriptor: ######
-Raw bytecode (code_info_size=8, bytecode_size=46):
- 08 82 28 83 45 00 00 00 06 00 00 00 00 00 00 00
- 26 07 00 00 00 00 00 00 ca 03 00 00 00 00 00 00
- 06 00 00 b2 43 0d 00 c3 1b 01 37 f7 7f 1b 00 5d
- 32 35 f0 7f 11 5b
+File cmdline/cmd_showbc.py, code block '<genexpr>' (descriptor: \.\+, bytecode @\.\+ bytes)
+Raw bytecode (code_info_size=\\d\+, bytecode_size=\\d\+):
+########
+\.\+5b
arg names: c e
(N_STATE 6)
(N_EXC_STACK 0)
(NUM_LOCAL 0)
- bc=-27 line=1
+ bc=-\\d\+ line=1
00 LOAD_FAST 2
01 FOR_ITER 17
04 STORE_FAST 3
@@ -492,17 +377,15 @@ arg names: c e
14 JUMP 1
17 LOAD_CONST_NONE
18 RETURN_VALUE
-File cmdline/cmd_showbc.py, code block '<listcomp>' (descriptor: ######
-Raw bytecode (code_info_size=8, bytecode_size=47):
- 08 82 25 83 45 00 00 00 06 00 00 00 00 00 00 00
- 26 07 00 00 00 00 00 00 ca 03 00 00 00 00 00 00
- 07 00 00 51 00 b2 43 0d 00 c3 1b 01 37 f7 7f 1b
- 00 52 02 35 f0 7f 5b
+File cmdline/cmd_showbc.py, code block '<listcomp>' (descriptor: \.\+, bytecode @\.\+ bytes)
+Raw bytecode (code_info_size=\\d\+, bytecode_size=\\d\+):
+########
+\.\+5b
arg names: c e
(N_STATE 7)
(N_EXC_STACK 0)
(NUM_LOCAL 0)
- bc=-27 line=1
+ bc=-\\d\+ line=1
00 BUILD_LIST 0
02 LOAD_FAST 2
03 FOR_ITER 19
@@ -513,20 +396,16 @@ arg names: c e
14 LIST_APPEND 2
16 JUMP 3
19 RETURN_VALUE
-File cmdline/cmd_showbc.py, code block '<dictcomp>' (descriptor: ######
-Raw bytecode (code_info_size=16, bytecode_size=49):
- 10 82 26 83 45 8f 3a 18 00 00 00 00 00 00 00 00
- 06 00 00 00 00 00 00 00 26 07 00 00 00 00 00 00
- ca 03 00 00 00 00 00 00 08 00 00 53 00 b2 43 0f
- 00 c3 1b 01 37 f7 7f 1b 00 1b 00 55 02 35 ee 7f
- 5b
+File cmdline/cmd_showbc.py, code block '<dictcomp>' (descriptor: \.\+, bytecode @\.\+ bytes)
+Raw bytecode (code_info_size=\\d\+, bytecode_size=\\d\+):
+########
+\.\+5b
arg names: c e
(N_STATE 8)
(N_EXC_STACK 0)
(NUM_LOCAL 0)
- bc=-27 line=1
- bc=-12 line=59
- bc=12 line=59
+ bc=-\\d\+ line=1
+########
00 BUILD_MAP 0
02 LOAD_FAST 2
03 FOR_ITER 21
@@ -538,19 +417,17 @@ arg names: c e
16 MAP_ADD 2
18 JUMP 3
21 RETURN_VALUE
-File cmdline/cmd_showbc.py, code block 'closure' (descriptor: ######
-Raw bytecode (code_info_size=16, bytecode_size=23):
- 10 81 5d 83 45 8b 66 25 23 00 00 00 00 00 00 00
- 56 07 00 00 00 00 00 00 04 00 00 1b 00 81 da c1
- 81 23 00 29 00 11 5b
+File cmdline/cmd_showbc.py, code block 'closure' (descriptor: \.\+, bytecode @\.\+ bytes)
+Raw bytecode (code_info_size=\\d\+, bytecode_size=\\d\+):
+########
+\.\+5b
arg names: x
(N_STATE 4)
(N_EXC_STACK 0)
(NUM_LOCAL 0)
- bc=-11 line=1
- bc=0 line=103
- bc=5 line=104
- bc=8 line=105
+ bc=-\\d\+ line=1
+########
+ bc=\\d\+ line=105
00 LOAD_DEREF 0
02 LOAD_CONST_SMALL_INT 1
03 BINARY_OP 5 __add__
@@ -560,23 +437,22 @@ arg names: x
08 DELETE_DEREF 0
10 LOAD_CONST_NONE
11 RETURN_VALUE
-File cmdline/cmd_showbc.py, code block 'f' (descriptor: ######
-Raw bytecode (code_info_size=16, bytecode_size=24):
- 10 83 46 83 45 8f 7c 04 00 00 00 00 00 00 00 00
- 22 07 00 00 00 00 00 00 1e 07 00 00 00 00 00 00
- 04 00 00 b1 1b 00 da 5b
+File cmdline/cmd_showbc.py, code block 'f' (descriptor: \.\+, bytecode @\.\+ bytes)
+Raw bytecode (code_info_size=\\d\+, bytecode_size=\\d\+):
+########
+\.\+5b
arg names: b a
(N_STATE 4)
(N_EXC_STACK 0)
(NUM_LOCAL 0)
- bc=-19 line=1
- bc=-4 line=125
- bc=0 line=125
+ bc=-\\d\+ line=1
+########
+ bc=\\d\+ line=125
00 LOAD_FAST 1
01 LOAD_DEREF 0
03 BINARY_OP 5 __add__
04 RETURN_VALUE
-mem: total=######
-stack: ######
-GC: total: ######
- No. of 1-blocks: ######
+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\+
diff --git a/tests/cmdline/cmd_verbose.py.exp b/tests/cmdline/cmd_verbose.py.exp
index d7a8611805..cf18fcfd16 100644
--- a/tests/cmdline/cmd_verbose.py.exp
+++ b/tests/cmdline/cmd_verbose.py.exp
@@ -1,8 +1,9 @@
1
-File cmdline/cmd_verbose.py, code block '<module>' (descriptor: ######
-Raw bytecode (code_info_size=8, bytecode_size=13):
- 08 82 23 83 45 43 00 00 02 00 00 1c 81 13 00 81
- 64 01 32 11 5b
+File cmdline/cmd_verbose.py, code block '<module>' (descriptor: \.\+, bytecode \.\+ bytes)
+Raw bytecode (code_info_size=\\d\+, bytecode_size=\\d\+):
+ 08 \.\+
+########
+\.\+5b
arg names:
(N_STATE 2)
(N_EXC_STACK 0)
@@ -15,7 +16,7 @@ arg names:
07 POP_TOP
08 LOAD_CONST_NONE
09 RETURN_VALUE
-mem: total=######
-stack: ######
-GC: total: ######
- No. of 1-blocks: ######
+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\+
diff --git a/tests/cmdline/repl_basic.py.exp b/tests/cmdline/repl_basic.py.exp
index 27732376a3..9783bff623 100644
--- a/tests/cmdline/repl_basic.py.exp
+++ b/tests/cmdline/repl_basic.py.exp
@@ -1,4 +1,4 @@
-Micro Python ######
+Micro Python v\.\+ version
>>> # basic REPL tests
>>> print(1)
1
diff --git a/tests/run-tests b/tests/run-tests
index a4044a65cc..606cd61e6e 100755
--- a/tests/run-tests
+++ b/tests/run-tests
@@ -5,6 +5,7 @@ import subprocess
import sys
import platform
import argparse
+import re
from glob import glob
# Tests require at least CPython 3.3. If your default python3 executable
@@ -49,18 +50,56 @@ def run_micropython(pyb, args, test_file):
except subprocess.CalledProcessError:
output_mupy = b'CRASH'
- # erase parts of the output that are not stable across runs
+ # unescape wanted regex chars and escape unwanted ones
+ def convert_regex_escapes(line):
+ cs = []
+ escape = False
+ for c in str(line, 'utf8'):
+ if escape:
+ escape = False
+ cs.append(c)
+ elif c == '\\':
+ escape = True
+ elif c in ('(', ')', '[', ']', '{', '}', '.', '*', '+', '^', '$'):
+ cs.append('\\' + c)
+ else:
+ cs.append(c)
+ return bytes(''.join(cs), 'utf8')
+
+ # convert parts of the output that are not stable across runs
with open(test_file + '.exp', 'rb') as f:
- lines_exp = f.readlines()
+ lines_exp = []
+ for line in f.readlines():
+ if line == b'########\n':
+ line = (line,)
+ else:
+ line = (line, re.compile(convert_regex_escapes(line)))
+ lines_exp.append(line)
lines_mupy = [line + b'\n' for line in output_mupy.split(b'\n')]
if output_mupy.endswith(b'\n'):
lines_mupy = lines_mupy[:-1] # remove erroneous last empty line
- if len(lines_mupy) == len(lines_exp):
- for i in range(len(lines_mupy)):
- pos = lines_exp[i].find(b'######')
- if pos != -1 and len(lines_mupy[i]) >= pos:
- lines_mupy[i] = lines_mupy[i][:pos] + b'######\n'
- output_mupy = b''.join(lines_mupy)
+ i_mupy = 0
+ for i in range(len(lines_exp)):
+ if lines_exp[i][0] == b'########\n':
+ # 8x #'s means match 0 or more whole lines
+ line_exp = lines_exp[i + 1]
+ skip = 0
+ while i_mupy + skip < len(lines_mupy) and not line_exp[1].match(lines_mupy[i_mupy + skip]):
+ skip += 1
+ if i_mupy + skip >= len(lines_mupy):
+ lines_mupy[i_mupy] = b'######## FAIL\n'
+ break
+ del lines_mupy[i_mupy:i_mupy + skip]
+ lines_mupy.insert(i_mupy, b'########\n')
+ i_mupy += 1
+ else:
+ # a regex
+ if lines_exp[i][1].match(lines_mupy[i_mupy]):
+ lines_mupy[i_mupy] = lines_exp[i][0]
+ i_mupy += 1
+ if i_mupy >= len(lines_mupy):
+ break
+ output_mupy = b''.join(lines_mupy)
else:
# a standard test