mirror of
https://github.com/cirosantilli/linux-kernel-module-cheat.git
synced 2026-01-25 19:21:35 +01:00
Please python stop torturing me with refactors. Make ./run -u blow up if executable not found, otherwise I go crazy. Get ./test-gdb back to life after the ./run relative path refactor, forgot to test this.
73 lines
2.7 KiB
Python
Executable File
73 lines
2.7 KiB
Python
Executable File
#!/usr/bin/env python3
|
|
|
|
import threading
|
|
import os
|
|
|
|
import common
|
|
|
|
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 = common.import_path_main('run')
|
|
run_gdb = common.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
|
|
test_id_string = self.test_setup(test_source_base)
|
|
run_args = common_args.copy()
|
|
run_args['gdb_wait'] = True
|
|
run_args['background'] = True
|
|
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()
|