def main(folder, options): badFileCount, files = check_copyright.main(False, folder, options) fixedCount = 0 if files and check_copyright.MISSING_HEADER in files: toFix = files[check_copyright.MISSING_HEADER] fixedCount = len(toFix) for f in toFix: fix(f) if not (files is None): print("Fixed %d files." % fixedCount)
def main(folder, options): badFileCount, files = check_copyright.main(False, folder, options) fixedCount = 0 if files and check_copyright.MISSING_HEADER in files: toFix = files[check_copyright.MISSING_HEADER] fixedCount = len(toFix) for f in toFix: fix(f) if not (files is None): print('Fixed %d files.' % fixedCount)
def main(): results = [] banner('Code validation') result = check_copyright.main() results.append(('Check copyright', result)) result = check_spacing.main() results.append(('Check spacing', result)) result = check_tabs.main() results.append(('Check tabs', result)) result = check_doc.main() results.append(('Check doc', result)) result = subprocess.call('pep8 tools/', shell=True) results.append(('PEP8', result)) banner('Build and run framework tests') result = subprocess.call('make clean test', shell=True) results.append(('Framework tests', result)) banner('Test building the framework library') cmd = 'CROSS_COMPILE= BS_FIRMWARE_CPU=host make lib-framework' result = subprocess.call(cmd, shell=True) results.append(('Framework build (host)', result)) cmd = 'CROSS_COMPILE=arm-none-eabi- BS_FIRMWARE_CPU=cortex-m3 make '\ 'lib-framework' result = subprocess.call(cmd, shell=True) results.append(('Framework build (Cortex-M3)', result)) banner('Test building arch library') cmd = 'CROSS_COMPILE=arm-none-eabi- BS_FIRMWARE_CPU=cortex-m3 make '\ 'lib-arch' result = subprocess.call(cmd, shell=True) results.append(('Arch build (Cortex-M3)', result)) banner('Test building host product') cmd = 'CROSS_COMPILE= PRODUCT=host make ' result = subprocess.call(cmd, shell=True) results.append(('Product host build', result)) banner('Test building sgm775 product') cmd = 'CROSS_COMPILE=arm-none-eabi- PRODUCT=sgm775 make' result = subprocess.call(cmd, shell=True) results.append(('Product sgm775 build', result)) banner('Test building msys3 product') cmd = 'CROSS_COMPILE=arm-none-eabi- PRODUCT=msys3 make' result = subprocess.call(cmd, shell=True) results.append(('Product msys3 build', result)) banner('Test building infrasys4 product') cmd = 'CROSS_COMPILE=arm-none-eabi- PRODUCT=infrasys4 make' result = subprocess.call(cmd, shell=True) results.append(('Product infrasys4 build', result)) banner('Tests summary') total_success = 0 for result in results: if result[1] == 0: total_success += 1 verbose_result = 'Success' else: verbose_result = 'Failed' print('{}: {}'.format(result[0], verbose_result)) assert total_success <= len(results) print('{} / {} passed ({}% pass rate)'.format( total_success, len(results), int(total_success * 100 / len(results)))) if total_success < len(results): return 1 else: return 0
def main(): results = [] banner('Code validation') result = check_copyright.main() results.append(('Check copyright', result)) result = check_spacing.main() results.append(('Check spacing', result)) result = check_tabs.main() results.append(('Check tabs', result)) result = check_doc.main() results.append(('Check doc', result)) result = subprocess.call('python -m pycodestyle tools/', shell=True) results.append(('PyCodeStyle', result)) banner('Build and run framework tests') result = subprocess.call('CC=gcc make clean test', shell=True) results.append(('Framework tests', result)) banner('Test building the framework library') cmd = \ 'CC=gcc ' \ 'BS_FIRMWARE_CPU=host ' \ 'make clean lib-framework' result = subprocess.call(cmd, shell=True) results.append(('Framework build (Host, GCC)', result)) cmd = \ 'CC=arm-none-eabi-gcc ' \ 'BS_FIRMWARE_CPU=cortex-m3 ' \ 'make clean lib-framework' result = subprocess.call(cmd, shell=True) results.append(('Framework build (Cortex-M3, GCC)', result)) cmd = \ 'CC=armclang ' \ 'BS_FIRMWARE_CPU=cortex-m3 ' \ 'make clean lib-framework' result = subprocess.call(cmd, shell=True) results.append(('Framework build (Cortex-M3, ARM)', result)) banner('Test building arch library') cmd = \ 'CC=arm-none-eabi-gcc ' \ 'BS_FIRMWARE_CPU=cortex-m3 ' \ 'make clean lib-arch' result = subprocess.call(cmd, shell=True) results.append(('Arch build (Cortex-M3, GCC)', result)) cmd = \ 'CC=armclang ' \ 'BS_FIRMWARE_CPU=cortex-m3 ' \ 'make clean lib-arch' result = subprocess.call(cmd, shell=True) results.append(('Arch build (Cortex-M3, ARM)', result)) banner('Test building host product') cmd = \ 'CC=gcc ' \ 'PRODUCT=host ' \ 'make clean all' result = subprocess.call(cmd, shell=True) results.append(('Product host build (GCC)', result)) banner('Test building sgm775 product') cmd = \ 'CC=arm-none-eabi-gcc ' \ 'PRODUCT=sgm775 ' \ 'MODE=release ' \ 'make clean all' result = subprocess.call(cmd, shell=True) results.append(('Product sgm775 release build (GCC)', result)) cmd = \ 'CC=armclang ' \ 'PRODUCT=sgm775 ' \ 'MODE=release ' \ 'make clean all' result = subprocess.call(cmd, shell=True) results.append(('Product sgm775 release build (ARM)', result)) cmd = \ 'CC=arm-none-eabi-gcc ' \ 'PRODUCT=sgm775 ' \ 'MODE=debug ' \ 'make clean all' result = subprocess.call(cmd, shell=True) results.append(('Product sgm775 debug build (GCC)', result)) cmd = \ 'CC=armclang ' \ 'PRODUCT=sgm775 ' \ 'MODE=debug ' \ 'make clean all' result = subprocess.call(cmd, shell=True) results.append(('Product sgm775 debug build (ARM)', result)) banner('Test building sgi575 product') cmd = \ 'CC=arm-none-eabi-gcc ' \ 'PRODUCT=sgi575 ' \ 'MODE=release ' \ 'make clean all' result = subprocess.call(cmd, shell=True) results.append(('Product sgi575 release build (GCC)', result)) cmd = \ 'CC=armclang ' \ 'PRODUCT=sgi575 ' \ 'MODE=release ' \ 'make clean all' result = subprocess.call(cmd, shell=True) results.append(('Product sgi575 release build (ARM)', result)) cmd = \ 'CC=arm-none-eabi-gcc ' \ 'PRODUCT=sgi575 ' \ 'MODE=debug ' \ 'make clean all' result = subprocess.call(cmd, shell=True) results.append(('Product sgi575 debug build (GCC)', result)) cmd = \ 'CC=armclang ' \ 'PRODUCT=sgi575 ' \ 'MODE=debug ' \ 'make clean all' result = subprocess.call(cmd, shell=True) results.append(('Product sgi575 debug build (ARM)', result)) banner('Test building n1sdp product') cmd = \ 'CC=arm-none-eabi-gcc ' \ 'PRODUCT=n1sdp ' \ 'MODE=debug ' \ 'make clean all' result = subprocess.call(cmd, shell=True) results.append(('Product n1sdp debug build (GCC)', result)) cmd = \ 'CC=armclang ' \ 'PRODUCT=n1sdp ' \ 'MODE=debug ' \ 'make clean all' result = subprocess.call(cmd, shell=True) results.append(('Product n1sdp debug build (ARM)', result)) cmd = \ 'CC=arm-none-eabi-gcc ' \ 'PRODUCT=n1sdp ' \ 'MODE=release ' \ 'make clean all' result = subprocess.call(cmd, shell=True) results.append(('Product n1sdp release build (GCC)', result)) cmd = \ 'CC=armclang ' \ 'PRODUCT=n1sdp ' \ 'MODE=release ' \ 'make clean all' result = subprocess.call(cmd, shell=True) results.append(('Product n1sdp release build (ARM)', result)) banner('Test building rdn1e1 product') cmd = \ 'CC=arm-none-eabi-gcc ' \ 'PRODUCT=rdn1e1 ' \ 'MODE=release ' \ 'make clean all' result = subprocess.call(cmd, shell=True) results.append(('Product rdn1e1 release build (GCC)', result)) cmd = \ 'CC=armclang ' \ 'PRODUCT=rdn1e1 ' \ 'MODE=release ' \ 'make clean all' result = subprocess.call(cmd, shell=True) results.append(('Product rdn1e1 release build (ARM)', result)) cmd = \ 'CC=arm-none-eabi-gcc ' \ 'PRODUCT=rdn1e1 ' \ 'MODE=debug ' \ 'make clean all' result = subprocess.call(cmd, shell=True) results.append(('Product rdn1e1 debug build (GCC)', result)) cmd = \ 'CC=armclang ' \ 'PRODUCT=rdn1e1 ' \ 'MODE=debug ' \ 'make clean all' result = subprocess.call(cmd, shell=True) results.append(('Product rdn1e1 debug build (ARM)', result)) banner('Test building juno product') cmd = \ 'CC=arm-none-eabi-gcc ' \ 'PRODUCT=juno ' \ 'MODE=debug ' \ 'make clean all' result = subprocess.call(cmd, shell=True) results.append(('Product Juno debug build (GCC)', result)) cmd = \ 'CC=armclang ' \ 'PRODUCT=juno ' \ 'MODE=debug ' \ 'make clean all' result = subprocess.call(cmd, shell=True) results.append(('Product Juno debug build (ARM)', result)) cmd = \ 'CC=arm-none-eabi-gcc ' \ 'PRODUCT=juno ' \ 'MODE=release ' \ 'make clean all' result = subprocess.call(cmd, shell=True) results.append(('Product Juno release build (GCC)', result)) cmd = \ 'CC=armclang ' \ 'PRODUCT=juno ' \ 'MODE=release ' \ 'make clean all' result = subprocess.call(cmd, shell=True) results.append(('Product Juno release build (ARM)', result)) banner('Test building synquacer product') cmd = \ 'CC=arm-none-eabi-gcc ' \ 'PRODUCT=synquacer ' \ 'MODE=release ' \ 'make clean all' result = subprocess.call(cmd, shell=True) results.append(('Product synquacer release build (GCC)', result)) cmd = \ 'CC=armclang ' \ 'PRODUCT=synquacer ' \ 'MODE=release ' \ 'make clean all' result = subprocess.call(cmd, shell=True) results.append(('Product synquacer release build (ARM)', result)) cmd = \ 'CC=arm-none-eabi-gcc ' \ 'PRODUCT=synquacer ' \ 'MODE=debug ' \ 'make clean all' result = subprocess.call(cmd, shell=True) results.append(('Product synquacer debug build (GCC)', result)) cmd = \ 'CC=armclang ' \ 'PRODUCT=synquacer ' \ 'MODE=debug ' \ 'make clean all' result = subprocess.call(cmd, shell=True) results.append(('Product synquacer debug build (ARM)', result)) banner('Tests summary') total_success = 0 for result in results: if result[1] == 0: total_success += 1 verbose_result = 'Success' else: verbose_result = 'Failed' print('{}: {}'.format(result[0], verbose_result)) assert total_success <= len(results) print('{} / {} passed ({}% pass rate)'.format( total_success, len(results), int(total_success * 100 / len(results)))) if total_success < len(results): return 1 else: return 0
def main(): results = [] banner('Code validation') result = check_copyright.main() results.append(('Check copyright', result)) result = check_spacing.main() results.append(('Check spacing', result)) result = check_tabs.main() results.append(('Check tabs', result)) result = check_doc.main() results.append(('Check doc', result)) result = subprocess.call('python -m pycodestyle tools/', shell=True) results.append(('PyCodeStyle', result)) banner('Build and run framework tests') result = subprocess.call('CC=gcc make clean test', shell=True) results.append(('Framework tests', result)) banner('Test building host product') cmd = \ 'CC=gcc ' \ 'PRODUCT=host ' \ 'make clean all -j' result = subprocess.call(cmd, shell=True) results.append(('Product host build (GCC)', result)) banner('Test building sgm775 product') cmd = \ 'CC=arm-none-eabi-gcc ' \ 'PRODUCT=sgm775 ' \ 'MODE=release ' \ 'make clean all -j' result = subprocess.call(cmd, shell=True) results.append(('Product sgm775 release build (GCC)', result)) cmd = \ 'CC=armclang ' \ 'PRODUCT=sgm775 ' \ 'MODE=release ' \ 'make clean all -j' result = subprocess.call(cmd, shell=True) results.append(('Product sgm775 release build (ARM)', result)) cmd = \ 'CC=arm-none-eabi-gcc ' \ 'PRODUCT=sgm775 ' \ 'MODE=debug ' \ 'make clean all -j' result = subprocess.call(cmd, shell=True) results.append(('Product sgm775 debug build (GCC)', result)) cmd = \ 'CC=armclang ' \ 'PRODUCT=sgm775 ' \ 'MODE=debug ' \ 'make clean all -j' result = subprocess.call(cmd, shell=True) results.append(('Product sgm775 debug build (ARM)', result)) banner('Test building sgi575 product') cmd = \ 'CC=arm-none-eabi-gcc ' \ 'PRODUCT=sgi575 ' \ 'MODE=release ' \ 'make clean all -j' result = subprocess.call(cmd, shell=True) results.append(('Product sgi575 release build (GCC)', result)) cmd = \ 'CC=armclang ' \ 'PRODUCT=sgi575 ' \ 'MODE=release ' \ 'make clean all -j' result = subprocess.call(cmd, shell=True) results.append(('Product sgi575 release build (ARM)', result)) cmd = \ 'CC=arm-none-eabi-gcc ' \ 'PRODUCT=sgi575 ' \ 'MODE=debug ' \ 'make clean all -j' result = subprocess.call(cmd, shell=True) results.append(('Product sgi575 debug build (GCC)', result)) cmd = \ 'CC=armclang ' \ 'PRODUCT=sgi575 ' \ 'MODE=debug ' \ 'make clean all -j' result = subprocess.call(cmd, shell=True) results.append(('Product sgi575 debug build (ARM)', result)) banner('Test building n1sdp product') cmd = \ 'CC=arm-none-eabi-gcc ' \ 'PRODUCT=n1sdp ' \ 'MODE=debug ' \ 'make clean all -j' result = subprocess.call(cmd, shell=True) results.append(('Product n1sdp debug build (GCC)', result)) cmd = \ 'CC=armclang ' \ 'PRODUCT=n1sdp ' \ 'MODE=debug ' \ 'make clean all -j' result = subprocess.call(cmd, shell=True) results.append(('Product n1sdp debug build (ARM)', result)) cmd = \ 'CC=arm-none-eabi-gcc ' \ 'PRODUCT=n1sdp ' \ 'MODE=release ' \ 'make clean all -j' result = subprocess.call(cmd, shell=True) results.append(('Product n1sdp release build (GCC)', result)) cmd = \ 'CC=armclang ' \ 'PRODUCT=n1sdp ' \ 'MODE=release ' \ 'make clean all -j' result = subprocess.call(cmd, shell=True) results.append(('Product n1sdp release build (ARM)', result)) banner('Test building rdn1e1 product') cmd = \ 'CC=arm-none-eabi-gcc ' \ 'PRODUCT=rdn1e1 ' \ 'MODE=release ' \ 'make clean all -j' result = subprocess.call(cmd, shell=True) results.append(('Product rdn1e1 release build (GCC)', result)) cmd = \ 'CC=armclang ' \ 'PRODUCT=rdn1e1 ' \ 'MODE=release ' \ 'make clean all -j' result = subprocess.call(cmd, shell=True) results.append(('Product rdn1e1 release build (ARM)', result)) cmd = \ 'CC=arm-none-eabi-gcc ' \ 'PRODUCT=rdn1e1 ' \ 'MODE=debug ' \ 'make clean all -j' result = subprocess.call(cmd, shell=True) results.append(('Product rdn1e1 debug build (GCC)', result)) cmd = \ 'CC=armclang ' \ 'PRODUCT=rdn1e1 ' \ 'MODE=debug ' \ 'make clean all -j' result = subprocess.call(cmd, shell=True) results.append(('Product rdn1e1 debug build (ARM)', result)) banner('Test building juno product') cmd = \ 'CC=arm-none-eabi-gcc ' \ 'PRODUCT=juno ' \ 'MODE=debug ' \ 'make clean all -j' result = subprocess.call(cmd, shell=True) results.append(('Product Juno debug build (GCC)', result)) cmd = \ 'CC=armclang ' \ 'PRODUCT=juno ' \ 'MODE=debug ' \ 'make clean all -j' result = subprocess.call(cmd, shell=True) results.append(('Product Juno debug build (ARM)', result)) cmd = \ 'CC=arm-none-eabi-gcc ' \ 'PRODUCT=juno ' \ 'MODE=release ' \ 'make clean all -j' result = subprocess.call(cmd, shell=True) results.append(('Product Juno release build (GCC)', result)) cmd = \ 'CC=armclang ' \ 'PRODUCT=juno ' \ 'MODE=release ' \ 'make clean all -j' result = subprocess.call(cmd, shell=True) results.append(('Product Juno release build (ARM)', result)) banner('Test building synquacer product') cmd = \ 'CC=arm-none-eabi-gcc ' \ 'PRODUCT=synquacer ' \ 'MODE=release ' \ 'make clean all -j' result = subprocess.call(cmd, shell=True) results.append(('Product synquacer release build (GCC)', result)) cmd = \ 'CC=armclang ' \ 'PRODUCT=synquacer ' \ 'MODE=release ' \ 'make clean all -j' result = subprocess.call(cmd, shell=True) results.append(('Product synquacer release build (ARM)', result)) cmd = \ 'CC=arm-none-eabi-gcc ' \ 'PRODUCT=synquacer ' \ 'MODE=debug ' \ 'make clean all -j' result = subprocess.call(cmd, shell=True) results.append(('Product synquacer debug build (GCC)', result)) cmd = \ 'CC=armclang ' \ 'PRODUCT=synquacer ' \ 'MODE=debug ' \ 'make clean all -j' result = subprocess.call(cmd, shell=True) results.append(('Product synquacer debug build (ARM)', result)) banner('Test building sgm776 product') cmd = \ 'CC=arm-none-eabi-gcc ' \ 'PRODUCT=sgm776 ' \ 'MODE=release ' \ 'make clean all -j' result = subprocess.call(cmd, shell=True) results.append(('Product sgm776 release build (GCC)', result)) cmd = \ 'CC=armclang ' \ 'PRODUCT=sgm776 ' \ 'MODE=release ' \ 'make clean all -j' result = subprocess.call(cmd, shell=True) results.append(('Product sgm776 release build (ARM)', result)) cmd = \ 'CC=arm-none-eabi-gcc ' \ 'PRODUCT=sgm776 ' \ 'MODE=debug ' \ 'make clean all -j' result = subprocess.call(cmd, shell=True) results.append(('Product sgm776 debug build (GCC)', result)) cmd = \ 'CC=armclang ' \ 'PRODUCT=sgm776 ' \ 'MODE=debug ' \ 'make clean all -j' result = subprocess.call(cmd, shell=True) results.append(('Product sgm776 debug build (ARM)', result)) banner('Test building rddaniel product') cmd = \ 'CC=arm-none-eabi-gcc ' \ 'PRODUCT=rddaniel ' \ 'MODE=release ' \ 'make clean all -j' result = subprocess.call(cmd, shell=True) results.append(('Product rddaniel release build (GCC)', result)) cmd = \ 'CC=armclang ' \ 'PRODUCT=rddaniel ' \ 'MODE=release ' \ 'make clean all -j' result = subprocess.call(cmd, shell=True) results.append(('Product rddaniel release build (ARM)', result)) cmd = \ 'CC=arm-none-eabi-gcc ' \ 'PRODUCT=rddaniel ' \ 'MODE=debug ' \ 'make clean all -j' result = subprocess.call(cmd, shell=True) results.append(('Product rddaniel debug build (GCC)', result)) cmd = \ 'CC=armclang ' \ 'PRODUCT=rddaniel ' \ 'MODE=debug ' \ 'make clean all -j' result = subprocess.call(cmd, shell=True) results.append(('Product rddaniel debug build (ARM)', result)) banner('Test building rddanielxlr product') cmd = \ 'CC=arm-none-eabi-gcc ' \ 'PRODUCT=rddanielxlr ' \ 'MODE=release ' \ 'make clean all -j' result = subprocess.call(cmd, shell=True) results.append(('Product rddanielxlr release build (GCC)', result)) cmd = \ 'CC=armclang ' \ 'PRODUCT=rddanielxlr ' \ 'MODE=release ' \ 'make clean all -j' result = subprocess.call(cmd, shell=True) results.append(('Product rddanielxlr release build (ARM)', result)) cmd = \ 'CC=arm-none-eabi-gcc ' \ 'PRODUCT=rddanielxlr ' \ 'MODE=debug ' \ 'make clean all -j' result = subprocess.call(cmd, shell=True) results.append(('Product rddanielxlr debug build (GCC)', result)) cmd = \ 'CC=armclang ' \ 'PRODUCT=rddanielxlr ' \ 'MODE=debug ' \ 'make clean all -j' result = subprocess.call(cmd, shell=True) results.append(('Product rddanielxlr debug build (ARM)', result)) banner('Test building tc0 product') cmd = \ 'CC=arm-none-eabi-gcc ' \ 'PRODUCT=tc0 ' \ 'MODE=release ' \ 'make clean all -j' result = subprocess.call(cmd, shell=True) results.append(('Product tc0 release build (GCC)', result)) cmd = \ 'CC=armclang ' \ 'PRODUCT=tc0 ' \ 'MODE=release ' \ 'make clean all -j' result = subprocess.call(cmd, shell=True) results.append(('Product tc0 release build (ARM)', result)) cmd = \ 'CC=arm-none-eabi-gcc ' \ 'PRODUCT=tc0 ' \ 'MODE=debug ' \ 'make clean all -j' result = subprocess.call(cmd, shell=True) results.append(('Product tc0 debug build (GCC)', result)) cmd = \ 'CC=armclang ' \ 'PRODUCT=tc0 ' \ 'MODE=debug ' \ 'make clean all -j' result = subprocess.call(cmd, shell=True) results.append(('Product tc0 debug build (ARM)', result)) banner('Test building morello product') cmd = \ 'CC=arm-none-eabi-gcc ' \ 'PRODUCT=morello ' \ 'MODE=debug ' \ 'make clean all -j' result = subprocess.call(cmd, shell=True) results.append(('Product morello debug build (GCC)', result)) cmd = \ 'CC=armclang ' \ 'PRODUCT=morello ' \ 'MODE=debug ' \ 'make clean all -j' result = subprocess.call(cmd, shell=True) results.append(('Product morello debug build (ARM)', result)) cmd = \ 'CC=arm-none-eabi-gcc ' \ 'PRODUCT=morello ' \ 'MODE=release ' \ 'make clean all -j' result = subprocess.call(cmd, shell=True) results.append(('Product morello release build (GCC)', result)) cmd = \ 'CC=armclang ' \ 'PRODUCT=morello ' \ 'MODE=release ' \ 'make clean all -j' result = subprocess.call(cmd, shell=True) results.append(('Product morello release build (ARM)', result)) banner('Test building rcar product') cmd = \ 'CC=aarch64-none-elf-gcc ' \ 'PRODUCT=rcar ' \ 'MODE=debug ' \ 'make clean all -j' result = subprocess.call(cmd, shell=True) results.append(('Product rcar debug build (ARM)', result)) cmd = \ 'CC=aarch64-none-elf-gcc ' \ 'PRODUCT=rcar ' \ 'MODE=release ' \ 'make clean all -j' result = subprocess.call(cmd, shell=True) results.append(('Product rcar release build (ARM)', result)) banner('Tests summary') total_success = 0 for result in results: if result[1] == 0: total_success += 1 verbose_result = 'Success' else: verbose_result = 'Failed' print('{}: {}'.format(result[0], verbose_result)) assert total_success <= len(results) print('{} / {} passed ({}% pass rate)'.format( total_success, len(results), int(total_success * 100 / len(results)))) if total_success < len(results): return 1 else: return 0
def main(): machine = platform.machine() results = [] threads = len(os.sched_getaffinity(0)) parser = argparse.ArgumentParser() target = parser.add_argument_group( 'Unit tests', 'Note: At least one unit test target or --skip-tests must be selected') target.add_argument('--test-ssh', help='Run unit tests on a target system via SSH. This \ argument requires the following parameters:\n\ <ip|hostname>[:port].\n\ The password and username for the target system \ are hardcoded in the script.', required=False, metavar="<ip|hostname>[:port]") target.add_argument('--test-fvp', help='Run unit tests on a fast-model. This argument \ requires the following parameters:\n\ <path/to/system/binaries>', required=False, metavar="<path>", nargs=1) target.add_argument('--skip-tests', help='Only do the style validation and building of \ the tests. Tests are not excecuted.', action='store_true') target.add_argument('--prebuild-path', '-p', help='Location of an existing build folder to use for \ the remote unit tests instead of building \ inside the remote machine. This argument \ requires the following parameters:\n\ <path/to/build/folder>', required=False, metavar="<path>", default=None, nargs=1) args = parser.parse_args(sys.argv[1:]) if args.prebuild_path: args.prebuild_path =\ os.path.abspath(os.path.expanduser(args.prebuild_path[0])) if not args.test_ssh and not args.test_fvp and not args.skip_tests: print("No unit test target or --skip-tests supplied\n", file=sys.stderr) parser.print_help() return 1 banner('Style validation') result = check_copyright.main() results.append(('Check copyright', result)) result = check_tabs.main() results.append(('Check tabs', result)) result = check_EOF.main() results.append(('Check EOF', result)) result = subprocess.call( 'pycodestyle --show-source tools/ ' '--exclude=arm_platform_build', shell=True) results.append(('Pycodestyle', result)) with build_directory(): subprocess.call('cmake -DBUILD_DOC=ON ..', shell=True) result = subprocess.call('make doc', shell=True) results.append(('Check doc', result)) banner('Builds') cmake_params = '-DBUILD_DOC=ON -DBUILD_TEST=ON ' build_info = '' if machine == 'x86_64': print('Using cross-compilation') cmake_params += '-DCMAKE_TOOLCHAIN_FILE=../tools/toolchain.cmake' build_info += ' (cross-compiled)' with build_directory(): subprocess.call('cmake {} ..'.format(cmake_params), shell=True) result = subprocess.call('make -j{}'.format(threads), shell=True) results.append(('Build libddssec{}'.format(build_info), result)) library_build_result = result with build_directory(): subprocess.call('cmake ..', shell=True) result = subprocess.call('make ta', shell=True) results.append(('Build trusted application', result)) ta_build_result = result # Skip the unit tests if either build fails or if args.skip_tests is set if library_build_result != 0 or ta_build_result != 0 or args.skip_tests: print('Skipping unit tests') results.append(('Unit tests on remote machine', None)) results.append(('Unit tests on FVP', None)) else: result = run_unit_tests(args) for r in result: results.append(r) return process_results(results)
def main(): machine = platform.machine() results = [] threads = len(os.sched_getaffinity(0)) prebuild_path = None parser = argparse.ArgumentParser() target = parser.add_argument_group( 'Unit tests', 'Note: At least one unit test target or --skip-tests must be selected') target.add_argument('--test-ssh', help='Run unit tests on a target system via SSH. This \ argument requires the following parameters:\n\ <ip|hostname>[:port].\n\ The password and username for the target system \ are hardcoded in the script.', required=False, metavar="<ip|hostname>[:port]") target.add_argument('--test-fvp', help='Run unit tests on a fast-model. This argument \ requires the following parameters:\n\ <path/to/system/binaries>', required=False, metavar="<path>", nargs=1) target.add_argument('--skip-tests', help='Only do the style validation and building of \ the tests. Tests are not excecuted.', action='store_true') target.add_argument('--build-on-target', '-p', help='Build tests natively on the target (e.g. \ FastModels). This option is much slower than \ using cross-compilation but has the benefit of \ testing a native build.', required=False, default=False, action='store_true') args = parser.parse_args(sys.argv[1:]) if not args.test_ssh and not args.test_fvp and not args.skip_tests: print("No unit test target or --skip-tests supplied\n", file=sys.stderr) parser.print_help() return 1 banner('Style validation') result = check_copyright.main() results.append(('Check copyright', result)) result = check_tabs.main() results.append(('Check tabs', result)) result = check_EOF.main() results.append(('Check EOF', result)) result = subprocess.call( 'pycodestyle --show-source tools/ ' '--exclude=arm_platform_build', shell=True) results.append(('Pycodestyle', result)) basedir = os.getcwd() with build_directory(): subprocess.call('cmake -DBUILD_DOC=ON {}'.format(basedir), shell=True) result = subprocess.call('make doc', shell=True) results.append(('Check doc', result)) banner('Builds') cmake_params = '-DBUILD_DOC=ON -DBUILD_TEST=ON ' build_info = '' if machine == 'x86_64': print('Using cross-compilation') cmake_params += '-DCMAKE_TOOLCHAIN_FILE=../tools/toolchain.cmake' build_info += ' (cross-compiled)' persist_test_build = not args.build_on_target with build_directory(persist=persist_test_build) as build_dir_name: subprocess.call('cmake {} {}'.format(cmake_params, basedir), shell=True) result = subprocess.call('make -j{}'.format(threads), shell=True) results.append(('Build libddssec{}'.format(build_info), result)) library_build_result = result result = subprocess.call('make test-ta'.format(threads), shell=True) results.append(('Build test-ta{}'.format(build_info), result)) ta_build_result = result if persist_test_build: prebuild_path = build_dir_name with build_directory(): subprocess.call('cmake {}'.format(basedir), shell=True) result = subprocess.call('make ta', shell=True) results.append(('Build trusted application', result)) # Skip the unit tests if either build fails or if args.skip_tests is set if library_build_result != 0 or ta_build_result != 0 or args.skip_tests: print('Skipping unit tests') results.append(('Unit tests on remote machine', None)) results.append(('Unit tests on FVP', None)) else: result = run_unit_tests(args, prebuild_path) for r in result: results.append(r) if persist_test_build: shutil.rmtree(prebuild_path) return process_results(results)
def main(): results = [] banner('Code validation') result = check_copyright.main() results.append(('Check copyright', result)) result = check_spacing.main() results.append(('Check spacing', result)) result = check_tabs.main() results.append(('Check tabs', result)) result = check_doc.main() results.append(('Check doc', result)) result = subprocess.call('python -m pycodestyle tools/', shell=True) results.append(('PyCodeStyle', result)) banner('Build and run framework tests') result = subprocess.call('CC=gcc make clean test', shell=True) results.append(('Framework tests', result)) banner('Test building host product') subprocess.run('make clean', shell=True) cmd = \ 'CC=gcc ' \ 'PRODUCT=host ' \ 'make all -j' result = subprocess.call(cmd, shell=True) results.append(('Product host build (GCC)', result)) product_build_debug_and_release('sgm775', results) product_build_debug_and_release('sgi575', results) product_build_debug_and_release('n1sdp', results) product_build_debug_and_release('rdn1e1', results) product_build_debug_and_release('juno', results) product_build_debug_and_release('synquacer', results) product_build_debug_and_release('sgm776', results) product_build_debug_and_release('rdv1', results) product_build_debug_and_release('rdv1mc', results) product_build_debug_and_release('rdn2', results) product_build_debug_and_release('tc0', results) product_build_debug_and_release('tc1', results) product_build_debug_and_release('morello', results) banner('Test building rcar product') # We need to set SYSROOT to </path/to/gcc-toolchain>/aarch64-none-elf # to make LLVM work properly SYS_ROOT_PATH = \ os.path.abspath( subprocess.check_output(["which", "aarch64-none-elf-gcc"]).decode() + '/../../aarch64-none-elf' ) subprocess.run('make clean', shell=True) cmd = \ 'CC=aarch64-none-elf-gcc ' \ 'PRODUCT=rcar ' \ 'MODE=debug ' \ 'make all -j' result = subprocess.call(cmd, shell=True) results.append(('Product rcar debug build (GCC-AArch64)', result)) subprocess.run('make clean', shell=True) cmd = \ 'SYSROOT='+SYS_ROOT_PATH+' ' \ 'CC=clang-11 ' \ 'PRODUCT=rcar ' \ 'MODE=debug ' \ 'make all -j' result = subprocess.call(cmd, shell=True) results.append(('Product rcar debug build (LLVM)', result)) subprocess.run('make clean', shell=True) cmd = \ 'CC=aarch64-none-elf-gcc ' \ 'PRODUCT=rcar ' \ 'MODE=release ' \ 'make all -j' result = subprocess.call(cmd, shell=True) results.append(('Product rcar release build (GCC-AArch64)', result)) subprocess.run('make clean', shell=True) cmd = \ 'SYSROOT='+SYS_ROOT_PATH+' ' \ 'CC=clang-11 ' \ 'PRODUCT=rcar ' \ 'MODE=release ' \ 'make all -j' result = subprocess.call(cmd, shell=True) results.append(('Product rcar release build (LLVM)', result)) banner('Tests summary') total_success = 0 for result in results: if result[1] == 0: total_success += 1 verbose_result = 'Success' else: verbose_result = 'Failed' print('{}: {}'.format(result[0], verbose_result)) assert total_success <= len(results) print('{} / {} passed ({}% pass rate)'.format( total_success, len(results), int(total_success * 100 / len(results)))) if total_success < len(results): return 1 else: return 0
def main(): results = [] try: client = docker.from_env() banner("Spawning container") try: return dockerize(client) except Exception as ex: print(ex) return 1 except DockerException: pass banner("Code validation") result = check_copyright.main() results.append(("Check copyright", result)) result = check_spacing.main() results.append(("Check spacing", result)) result = check_tabs.main() results.append(("Check tabs", result)) result = check_doc.main() results.append(("Check doc", result)) banner("Build and run framework tests") result = subprocess.call("CC=gcc make clean test", shell=True) results.append(("Framework tests", result)) banner("Test building host product") products = ['host', 'juno', 'rdv1', 'sgm775'] build_types = ['debug', 'release'] toolchains = ['GNU', 'ArmClang'] for product in products: banner("Test building {} product".format(product)) for toolchain in toolchains: if product == 'rcar' and toolchain == 'ArmClang': continue for build_type in build_types: cmd = 'make -f Makefile.cmake ' cmd += 'PRODUCT={} TOOLCHAIN={} MODE={}'.format( product, toolchain, build_type) result = subprocess.call(cmd, shell=True) results.append( ("Product {} build ({})".format(product, toolchain), result)) banner('Tests summary') total_success = 0 for result in results: if result[1] == 0: total_success += 1 verbose_result = "Success" else: verbose_result = "Failed" print("{}: {}".format(result[0], verbose_result)) assert total_success <= len(results) print("{} / {} passed ({}% pass rate)".format( total_success, len(results), int(total_success * 100 / len(results)))) if total_success < len(results): return 1 else: return 0