@ -32,6 +32,12 @@ def script_to_map(test_file):
return r
return r
def load_profile ( profile_file , test_dirs , exclude_tests ) :
profile_globals = { " test_dirs " : test_dirs , " exclude_tests " : exclude_tests }
exec ( profile_file . read ( ) , profile_globals )
return profile_globals [ " test_dirs " ] , profile_globals [ " exclude_tests " ]
test_function = (
test_function = (
" void {name} (void* data) {{ \n "
" void {name} (void* data) {{ \n "
" static const char pystr[] = {script} ; \n "
" static const char pystr[] = {script} ; \n "
@ -50,58 +56,55 @@ testgroup_struct = "struct testgroup_t groups[] = {{\n{body}\n END_OF_GROUPS\n}
testgroup_member = ' {{ " {name} " , {name} _tests }}, '
testgroup_member = ' {{ " {name} " , {name} _tests }}, '
## XXX: may be we could have `--without <groups>` argument...
## XXX: may be we could have `--without <groups>` argument...
# currently these tests are selected because they pass on qemu-arm
test_dirs = (
test_dirs = set (
" basics " ,
(
" micropython " ,
" basics " ,
" misc " ,
" extmod " ,
" extmod " ,
" float " ,
" float " ,
" micropython " ,
" inlineasm " ,
" misc " ,
" qemu-arm " ,
)
) # 'import', 'io',)
)
exclude_tests = (
# pattern matching in .exp
exclude_tests = set (
" basics/bytes_compare3.py " ,
(
" extmod/ticks_diff.py " ,
# pattern matching in .exp
" extmod/time_ms_us.py " ,
" basics/bytes_compare3.py " ,
# unicode char issue
" extmod/ticks_diff.py " ,
" extmod/json_loads.py " ,
" extmod/time_ms_us.py " ,
# doesn't output to python stdout
# unicode char issue
" extmod/re_debug.py " ,
" extmod/json_loads.py " ,
" extmod/vfs_basic.py " ,
# doesn't output to python stdout
" extmod/vfs_fat_ramdisk.py " ,
" extmod/re_debug.py " ,
" extmod/vfs_fat_fileio.py " ,
" extmod/vfs_basic.py " ,
" extmod/vfs_fat_fsusermount.py " ,
" extmod/vfs_fat_ramdisk.py " ,
" extmod/vfs_fat_oldproto.py " ,
" extmod/vfs_fat_fileio.py " ,
# rounding issues
" extmod/vfs_fat_fsusermount.py " ,
" float/float_divmod.py " ,
" extmod/vfs_fat_oldproto.py " ,
# requires double precision floating point to work
# rounding issues
" float/float2int_doubleprec_intbig.py " ,
" float/float_divmod.py " ,
" float/float_format_ints_doubleprec.py " ,
# requires double precision floating point to work
" float/float_parse_doubleprec.py " ,
" float/float2int_doubleprec_intbig.py " ,
# inline asm FP tests (require Cortex-M4)
" float/float_format_ints_doubleprec.py " ,
" inlineasm/asmfpaddsub.py " ,
" float/float_parse_doubleprec.py " ,
" inlineasm/asmfpcmp.py " ,
# different filename in output
" inlineasm/asmfpldrstr.py " ,
" micropython/emg_exc.py " ,
" inlineasm/asmfpmuldiv.py " ,
" micropython/heapalloc_traceback.py " ,
" inlineasm/asmfpsqrt.py " ,
# don't have emergency exception buffer
# different filename in output
" micropython/heapalloc_exc_compressed_emg_exc.py " ,
" micropython/emg_exc.py " ,
# pattern matching in .exp
" micropython/heapalloc_traceback.py " ,
" micropython/meminfo.py " ,
# don't have emergency exception buffer
# needs sys stdfiles
" micropython/heapalloc_exc_compressed_emg_exc.py " ,
" misc/print_exception.py " ,
# pattern matching in .exp
# settrace .exp files are too large
" micropython/meminfo.py " ,
" misc/sys_settrace_loop.py " ,
# needs sys stdfiles
" misc/sys_settrace_generator.py " ,
" misc/print_exception.py " ,
" misc/sys_settrace_features.py " ,
# settrace .exp files are too large
# don't have f-string
" misc/sys_settrace_loop.py " ,
" basics/string_fstring.py " ,
" misc/sys_settrace_generator.py " ,
" basics/string_fstring_debug.py " ,
" misc/sys_settrace_features.py " ,
)
# don't have f-string
" basics/string_fstring.py " ,
" basics/string_fstring_debug.py " ,
)
)
output = [ ]
output = [ ]
@ -112,11 +115,18 @@ argparser = argparse.ArgumentParser(
)
)
argparser . add_argument ( " --stdin " , action = " store_true " , help = " read list of tests from stdin " )
argparser . add_argument ( " --stdin " , action = " store_true " , help = " read list of tests from stdin " )
argparser . add_argument ( " --exclude " , action = " append " , help = " exclude test by name " )
argparser . add_argument ( " --exclude " , action = " append " , help = " exclude test by name " )
argparser . add_argument (
" --profile " ,
type = argparse . FileType ( " rt " , encoding = " utf-8 " ) ,
help = " optional profile file providing test directories and exclusion list " ,
)
args = argparser . parse_args ( )
args = argparser . parse_args ( )
if not args . stdin :
if not args . stdin :
if args . profile :
test_dirs , exclude_tests = load_profile ( args . profile , test_dirs , exclude_tests )
if args . exclude :
if args . exclude :
exclude_tests + = tuple ( args . exclude )
exclude_tests = exclude_tests . union ( args . exclude )
for group in test_dirs :
for group in test_dirs :
tests + = [ test for test in glob ( " {} /*.py " . format ( group ) ) if test not in exclude_tests ]
tests + = [ test for test in glob ( " {} /*.py " . format ( group ) ) if test not in exclude_tests ]
else :
else :