mbed-os
Dependents: cobaLCDJoyMotor_Thread odometry_omni_3roda_v3 odometry_omni_3roda_v1 odometry_omni_3roda_v2 ... more
Diff: tools/test/examples/examples.py
- Revision:
- 0:b74591d5ab33
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tools/test/examples/examples.py Mon Dec 11 17:54:04 2017 +0000 @@ -0,0 +1,133 @@ +""" import and bulid a bunch of example programs """ + +from argparse import ArgumentParser +import os +from os.path import dirname, abspath, basename +import os.path +import sys +import subprocess +import json + +ROOT = abspath(dirname(dirname(dirname(dirname(__file__))))) +sys.path.insert(0, ROOT) + +from tools.utils import argparse_force_uppercase_type +from tools.utils import argparse_many +from tools.build_api import get_mbed_official_release +import examples_lib as lib +from examples_lib import SUPPORTED_TOOLCHAINS, SUPPORTED_IDES + +def main(): + """Entry point""" + + official_targets = get_mbed_official_release("5") + official_target_names = [x[0] for x in official_targets] + + + parser = ArgumentParser() + parser.add_argument("-c", dest="config", default="examples.json") + parser.add_argument("-e", "--example", + help=("filter the examples used in the script"), + type=argparse_many(lambda x: x), + default=[]) + subparsers = parser.add_subparsers() + import_cmd = subparsers.add_parser("import") + import_cmd.set_defaults(fn=do_import) + clone_cmd = subparsers.add_parser("clone") + clone_cmd.set_defaults(fn=do_clone) + deploy_cmd = subparsers.add_parser("deploy") + deploy_cmd.set_defaults(fn=do_deploy) + version_cmd = subparsers.add_parser("tag") + version_cmd.add_argument("tag") + version_cmd.set_defaults(fn=do_versionning) + compile_cmd = subparsers.add_parser("compile") + compile_cmd.set_defaults(fn=do_compile), + compile_cmd.add_argument( + "toolchains", nargs="*", default=SUPPORTED_TOOLCHAINS, + type=argparse_force_uppercase_type(SUPPORTED_TOOLCHAINS, + "toolchain")), + compile_cmd.add_argument("-m", "--mcu", + help=("build for the given MCU (%s)" % + ', '.join(official_target_names)), + metavar="MCU", + type=argparse_many( + argparse_force_uppercase_type( + official_target_names, "MCU")), + default=official_target_names) + + compile_cmd.add_argument("--profile", + help=("build profile file"), + metavar="profile") + + export_cmd = subparsers.add_parser("export") + export_cmd.set_defaults(fn=do_export), + export_cmd.add_argument( + "ide", nargs="*", default=SUPPORTED_IDES, + type=argparse_force_uppercase_type(SUPPORTED_IDES, + "ide")) + export_cmd.add_argument("-m", "--mcu", + help=("build for the given MCU (%s)" % + ', '.join(official_target_names)), + metavar="MCU", + type=argparse_many( + argparse_force_uppercase_type( + official_target_names, "MCU")), + default=official_target_names) + args = parser.parse_args() + config = json.load(open(os.path.join(os.path.dirname(__file__), + args.config))) + + all_examples = [] + for example in config['examples']: + all_examples = all_examples + [basename(x['repo']) for x in lib.get_repo_list(example)] + examples = [x for x in all_examples if x in args.example] if args.example else all_examples + return args.fn(args, config, examples) + + +def do_export(args, config, examples): + """Do export and build step""" + results = {} + results = lib.export_repos(config, args.ide, args.mcu, examples) + + lib.print_summary(results, export=True) + failures = lib.get_num_failures(results, export=True) + print("Number of failures = %d" % failures) + return failures + + +def do_import(_, config, examples): + """Do the import step of this process""" + lib.source_repos(config, examples) + return 0 + + +def do_clone(_, config, examples): + """Do the clone step of this process""" + lib.clone_repos(config, examples) + return 0 + + +def do_deploy(_, config, examples): + """Do the deploy step of this process""" + lib.deploy_repos(config, examples) + return 0 + + +def do_compile(args, config, examples): + """Do the compile step""" + results = {} + results = lib.compile_repos(config, args.toolchains, args.mcu, args.profile, examples) + + lib.print_summary(results) + failures = lib.get_num_failures(results) + print("Number of failures = %d" % failures) + return failures + +def do_versionning(args, config, examples): + """ Test update the mbed-os to the version specified by the tag """ + lib.update_mbedos_version(config, args.tag, examples) + return 0 + + +if __name__ == "__main__": + sys.exit(main())