#!/usr/bin/env python3 import os import sys import common import example_properties class Main(common.TestCliFunction): def __init__(self): super().__init__( description='''\ https://github.com/cirosantilli/linux-kernel-module-cheat#user-mode-tests ''' ) self.add_argument( 'tests', nargs='*', help='''\ If given, run only the given tests. Otherwise, run all tests. ''' ) def timed_main(self): run = self.import_path_main('run') run_args = self.get_common_args() run_args['ctrl_c_host'] = True if self.env['emulator'] == 'gem5': run_args['userland_build_id'] = 'static' if self.env['tests'] == []: test_paths = [ 'c/add.c', 'c/false.c', 'c/hello.c', 'c/print_argv.c', 'cpp/hello.cpp', ] else: test_paths = self.env['tests'] had_failure = False for test_path in test_paths: test = example_properties.get(test_path) if test.should_be_tested(): # for test in self.sh.walk(self.resolve_userland_source(test_dir_or_file)): run_args['userland'] = test_path test_result = self.run_test( run, run_args, test_id=test_path, expected_exit_status=test.exit_status ) if test_result != common.TestResult.PASS: if self.env['quit_on_fail']: return 1 else: had_failure = True if had_failure: return 1 else: return 0 if __name__ == '__main__': Main().cli()