def test_name_known(string): if string not in TEST_MAP.keys(): raise ArgumentTypeError( "Program with name '{0}' not found. Supported tests are: \n{1}". format(string, columnate([t['id'] for t in TESTS]))) return TEST_MAP[string].n
def check_valid_mbed_os(test): """Check if the specified name is in all_os_tests args: test: string name to index all_os_tests returns: tuple of test_name and source location of test, as given by find_tests""" all_os_tests = find_tests(ROOT, "K64F", "ARM") if test in all_os_tests.keys(): return (test, all_os_tests[test]) else: supported = columnate([t for t in all_os_tests.keys()]) raise ArgumentTypeError("Program with name '{0}' not found. " "Supported tests are: \n{1}".format(test,supported))
def test_known(string): i = int(string) if i >= 0 and i < len(TESTS): return i else: raise ArgumentTypeError( "{0} does not index a test. The accepted range is 0 to {1}\nThe test mapping is:\n{2}" .format( i, len(TEST_MAP) - 1, columnate([ str(i) + ":" + t['id'] for i, t in zip(range(len(TESTS)), TESTS) ])))
def check_valid_mbed_os(test): """Check if the specified name is in all_os_tests args: test: string name to index all_os_tests returns: tuple of test_name and source location of test, as given by find_tests""" all_os_tests = find_tests(ROOT, "K64F", "ARM") if test in all_os_tests.keys(): return (test, all_os_tests[test]) else: supported = columnate([t for t in all_os_tests.keys()]) raise ArgumentTypeError("Program with name '{0}' not found. " "Supported tests are: \n{1}".format( test, supported))
def main(): """Entry point""" ide_list = ["iar", "uvision"] default_v2 = [test_name_known("MBED_BLINKY")] default_v5 = [check_valid_mbed_os('tests-mbedmicro-rtos-mbed-basic')] parser = argparse.ArgumentParser( description="Test progen builders. Leave any flag off" " to run with all possible options.") parser.add_argument("-i", dest="ides", default=ide_list, type=argparse_many( argparse_force_lowercase_type( ide_list, "toolchain")), help="The target IDE: %s" % str(ide_list)) parser.add_argument("-p", type=argparse_many(test_known), dest="programs", help="The index of the desired test program: [0-%d]" % (len(TESTS) - 1)) parser.add_argument("-n", type=argparse_many(test_name_known), dest="programs", help="The name of the desired test program") parser.add_argument("-m", "--mcu", help=("Generate projects for the given MCUs"), metavar="MCU", type=argparse_many(str.upper)) parser.add_argument("-os-tests", type=argparse_many(check_valid_mbed_os), dest="os_tests", help="Mbed-os tests") parser.add_argument("-c", "--clean", dest="clean", action="store_true", help="clean up the exported project files", default=False) parser.add_argument("--release", dest="release", type=check_version, help="Which version of mbed to test", default=RELEASE_VERSIONS[-1]) parser.add_argument("--profile", dest="profile", action="append", type=argparse_filestring_type, default=[]) options = parser.parse_args() # targets in chosen release targetnames = [ target[0] for target in get_mbed_official_release(options.release) ] # all targets in release are default test_targets = options.mcu or targetnames if not all([t in targetnames for t in test_targets]): args_error( parser, "Only specify targets in release %s:\n%s" % (options.release, columnate(sorted(targetnames)))) v2_tests, v5_tests = [], [] if options.release == '5': v5_tests = options.os_tests or default_v5 elif options.release == '2': v2_tests = options.programs or default_v2 tests = [] default_test = { key: None for key in ['ide', 'mcu', 'name', 'id', 'src', 'log'] } for mcu in test_targets: for ide in options.ides: log = "build_log.txt" if ide == 'iar' \ else join('build', 'build_log.txt') # add each test case to the tests array default_test.update({'mcu': mcu, 'ide': ide, 'log': log}) for test in v2_tests: default_test.update({'name': TESTS[test]["id"], 'id': test}) tests.append(copy(default_test)) for test in v5_tests: default_test.update({'name': test[0], 'src': [test[1], ROOT]}) tests.append(copy(default_test)) test = ExportBuildTest(tests, parser, options) test.batch_tests(clean=options.clean) print_results(test.successes, test.failures, test.skips) sys.exit(len(test.failures))
def main(): """Entry point""" ide_list = ["iar", "uvision"] default_v2 = [test_name_known("MBED_BLINKY")] default_v5 = [check_valid_mbed_os('tests-mbedmicro-rtos-mbed-basic')] parser = argparse.ArgumentParser(description= "Test progen builders. Leave any flag off" " to run with all possible options.") parser.add_argument("-i", dest="ides", default=ide_list, type=argparse_many(argparse_force_lowercase_type( ide_list, "toolchain")), help="The target IDE: %s"% str(ide_list)) parser.add_argument( "-p", type=argparse_many(test_known), dest="programs", help="The index of the desired test program: [0-%d]" % (len(TESTS) - 1)) parser.add_argument("-n", type=argparse_many(test_name_known), dest="programs", help="The name of the desired test program") parser.add_argument("-m", "--mcu", help=("Generate projects for the given MCUs"), metavar="MCU", type=argparse_many(str.upper)) parser.add_argument("-os-tests", type=argparse_many(check_valid_mbed_os), dest="os_tests", help="Mbed-os tests") parser.add_argument("-c", "--clean", dest="clean", action="store_true", help="clean up the exported project files", default=False) parser.add_argument("--release", dest="release", type=check_version, help="Which version of mbed to test", default=RELEASE_VERSIONS[-1]) parser.add_argument("--profile", dest="profile", action="append", type=argparse_filestring_type, default=[]) options = parser.parse_args() # targets in chosen release targetnames = [target[0] for target in get_mbed_official_release(options.release)] # all targets in release are default test_targets = options.mcu or targetnames if not all([t in targetnames for t in test_targets]): args_error(parser, "Only specify targets in release %s:\n%s" %(options.release, columnate(sorted(targetnames)))) v2_tests, v5_tests = [],[] if options.release == '5': v5_tests = options.os_tests or default_v5 elif options.release == '2': v2_tests = options.programs or default_v2 tests = [] default_test = {key:None for key in ['ide', 'mcu', 'name', 'id', 'src', 'log']} for mcu in test_targets: for ide in options.ides: log = "build_log.txt" if ide == 'iar' \ else join('build', 'build_log.txt') # add each test case to the tests array default_test.update({'mcu': mcu, 'ide': ide, 'log':log}) for test in v2_tests: default_test.update({'name':TESTS[test]["id"], 'id':test}) tests.append(copy(default_test)) for test in v5_tests: default_test.update({'name':test[0],'src':[test[1],ROOT]}) tests.append(copy(default_test)) test = ExportBuildTest(tests, parser, options) test.batch_tests(clean=options.clean) print_results(test.successes, test.failures, test.skips) sys.exit(len(test.failures))