1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374 |
- #!/usr/bin/env python3
- import threading
- import os
- import common
- import lkmc.import_path
- class Main(common.TestCliFunction):
- def __init__(self):
- super().__init__(
- description='''\
- https://github.com/cirosantilli/linux-kernel-module-cheat#test-gdb
- '''
- )
- self.add_argument(
- 'tests',
- nargs='*',
- help='''\
- If given, run only the given tests. Otherwise, run all tests,
- found by searching for the Python test files.
- '''
- )
- def timed_main(self):
- run = lkmc.import_path.import_path_main('run')
- run_gdb = lkmc.import_path.import_path_main('run-gdb')
- if self.env['arch'] in self.env['crosstool_ng_supported_archs']:
- test_sources = []
- if self.env['tests'] == []:
- source_paths = []
- for filename in sorted(os.listdir(self.env['baremetal_source_dir'])):
- base, ext = os.path.splitext(filename)
- if ext in self.env['build_in_exts']:
- test_sources.append(
- os.path.join(
- self.env['baremetal_source_dir'],
- filename
- )
- )
- for root, dirnames, filenames in os.walk(
- os.path.join(
- self.env['baremetal_source_dir'],
- 'arch',
- self.env['arch']
- )
- ):
- for filename in filenames:
- base, ext = os.path.splitext(filename)
- if ext in self.env['build_in_exts']:
- test_sources.append(os.path.join(root, filename))
- else:
- test_sources = self.env['tests']
- for test_source_full in test_sources:
- base, ext = os.path.splitext(test_source_full)
- if os.path.exists(base + '.py'):
- test_source_base = os.path.relpath(base, self.env['root_dir'])
- common_args = self.get_common_args()
- common_args['baremetal'] = test_source_base + ext
- run_args = common_args.copy()
- run_args['gdb_wait'] = True
- run_args['background'] = True
- test_id_string = self.test_setup(run_args, test_source_base)
- run_thread = threading.Thread(target=lambda: run(**run_args))
- run_thread.start()
- gdb_args = common_args.copy()
- gdb_args['test'] = True
- run_gdb(**gdb_args)
- run_thread.join()
- self.test_teardown(run, 0, test_id_string)
- if __name__ == '__main__':
- Main().cli()
|