Files
linux-kernel-module-cheat/test-gdb
2019-03-10 00:00:04 +00:00

60 lines
2.3 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 = self.import_path_main('run')
run_gdb = self.import_path_main('run-gdb')
if self.env['arch'] in self.env['crosstool_ng_supported_archs']:
if self.env['tests'] == []:
test_scripts_noext = []
for filename in sorted(os.listdir(self.env['baremetal_source_dir'])):
base, ext = os.path.splitext(filename)
if ext == '.py':
test_scripts_noext.append(base)
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 == '.py':
full_path = os.path.join(root, base)
relpath = os.path.relpath(full_path, self.env['baremetal_source_dir'])
test_scripts_noext.append(relpath)
else:
test_scripts_noext = self.env['tests']
for test_script_noext in test_scripts_noext:
common_args = self.get_common_args()
common_args['baremetal'] = test_script_noext
test_id_string = self.test_setup(test_script_noext)
run_args = common_args.copy()
run_args['wait_gdb'] = 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()