kunit: kunit.py extract handlers
The main function contains a wide if-elif block that handles different subcommands. It's possible to make code refactoring to extract subcommands handlers. Fixed commit summary line. Shuah Khan <skhan@linuxfoundation.org> Signed-off-by: Alexander Pantyukhin <apantykhin@gmail.com> Reviewed-by: David Gow <davidgow@google.com> Signed-off-by: Shuah Khan <skhan@linuxfoundation.org>
This commit is contained in:
parent
1fdc6f4f27
commit
2dc9d6ca52
@ -386,6 +386,95 @@ def tree_from_args(cli_args: argparse.Namespace) -> kunit_kernel.LinuxSourceTree
|
|||||||
extra_qemu_args=qemu_args)
|
extra_qemu_args=qemu_args)
|
||||||
|
|
||||||
|
|
||||||
|
def run_handler(cli_args):
|
||||||
|
if not os.path.exists(cli_args.build_dir):
|
||||||
|
os.mkdir(cli_args.build_dir)
|
||||||
|
|
||||||
|
linux = tree_from_args(cli_args)
|
||||||
|
request = KunitRequest(build_dir=cli_args.build_dir,
|
||||||
|
make_options=cli_args.make_options,
|
||||||
|
jobs=cli_args.jobs,
|
||||||
|
raw_output=cli_args.raw_output,
|
||||||
|
json=cli_args.json,
|
||||||
|
timeout=cli_args.timeout,
|
||||||
|
filter_glob=cli_args.filter_glob,
|
||||||
|
kernel_args=cli_args.kernel_args,
|
||||||
|
run_isolated=cli_args.run_isolated)
|
||||||
|
result = run_tests(linux, request)
|
||||||
|
if result.status != KunitStatus.SUCCESS:
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
|
|
||||||
|
def config_handler(cli_args):
|
||||||
|
if cli_args.build_dir and (
|
||||||
|
not os.path.exists(cli_args.build_dir)):
|
||||||
|
os.mkdir(cli_args.build_dir)
|
||||||
|
|
||||||
|
linux = tree_from_args(cli_args)
|
||||||
|
request = KunitConfigRequest(build_dir=cli_args.build_dir,
|
||||||
|
make_options=cli_args.make_options)
|
||||||
|
result = config_tests(linux, request)
|
||||||
|
stdout.print_with_timestamp((
|
||||||
|
'Elapsed time: %.3fs\n') % (
|
||||||
|
result.elapsed_time))
|
||||||
|
if result.status != KunitStatus.SUCCESS:
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
|
|
||||||
|
def build_handler(cli_args):
|
||||||
|
linux = tree_from_args(cli_args)
|
||||||
|
request = KunitBuildRequest(build_dir=cli_args.build_dir,
|
||||||
|
make_options=cli_args.make_options,
|
||||||
|
jobs=cli_args.jobs)
|
||||||
|
result = config_and_build_tests(linux, request)
|
||||||
|
stdout.print_with_timestamp((
|
||||||
|
'Elapsed time: %.3fs\n') % (
|
||||||
|
result.elapsed_time))
|
||||||
|
if result.status != KunitStatus.SUCCESS:
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
|
|
||||||
|
def exec_handler(cli_args):
|
||||||
|
linux = tree_from_args(cli_args)
|
||||||
|
exec_request = KunitExecRequest(raw_output=cli_args.raw_output,
|
||||||
|
build_dir=cli_args.build_dir,
|
||||||
|
json=cli_args.json,
|
||||||
|
timeout=cli_args.timeout,
|
||||||
|
filter_glob=cli_args.filter_glob,
|
||||||
|
kernel_args=cli_args.kernel_args,
|
||||||
|
run_isolated=cli_args.run_isolated)
|
||||||
|
result = exec_tests(linux, exec_request)
|
||||||
|
stdout.print_with_timestamp((
|
||||||
|
'Elapsed time: %.3fs\n') % (result.elapsed_time))
|
||||||
|
if result.status != KunitStatus.SUCCESS:
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
|
|
||||||
|
def parse_handler(cli_args):
|
||||||
|
if cli_args.file is None:
|
||||||
|
sys.stdin.reconfigure(errors='backslashreplace') # pytype: disable=attribute-error
|
||||||
|
kunit_output = sys.stdin
|
||||||
|
else:
|
||||||
|
with open(cli_args.file, 'r', errors='backslashreplace') as f:
|
||||||
|
kunit_output = f.read().splitlines()
|
||||||
|
# We know nothing about how the result was created!
|
||||||
|
metadata = kunit_json.Metadata()
|
||||||
|
request = KunitParseRequest(raw_output=cli_args.raw_output,
|
||||||
|
json=cli_args.json)
|
||||||
|
result, _ = parse_tests(request, metadata, kunit_output)
|
||||||
|
if result.status != KunitStatus.SUCCESS:
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
|
|
||||||
|
subcommand_handlers_map = {
|
||||||
|
'run': run_handler,
|
||||||
|
'config': config_handler,
|
||||||
|
'build': build_handler,
|
||||||
|
'exec': exec_handler,
|
||||||
|
'parse': parse_handler
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
def main(argv):
|
def main(argv):
|
||||||
parser = argparse.ArgumentParser(
|
parser = argparse.ArgumentParser(
|
||||||
description='Helps writing and running KUnit tests.')
|
description='Helps writing and running KUnit tests.')
|
||||||
@ -429,78 +518,14 @@ def main(argv):
|
|||||||
if get_kernel_root_path():
|
if get_kernel_root_path():
|
||||||
os.chdir(get_kernel_root_path())
|
os.chdir(get_kernel_root_path())
|
||||||
|
|
||||||
if cli_args.subcommand == 'run':
|
subcomand_handler = subcommand_handlers_map.get(cli_args.subcommand, None)
|
||||||
if not os.path.exists(cli_args.build_dir):
|
|
||||||
os.mkdir(cli_args.build_dir)
|
|
||||||
|
|
||||||
linux = tree_from_args(cli_args)
|
if subcomand_handler is None:
|
||||||
request = KunitRequest(build_dir=cli_args.build_dir,
|
|
||||||
make_options=cli_args.make_options,
|
|
||||||
jobs=cli_args.jobs,
|
|
||||||
raw_output=cli_args.raw_output,
|
|
||||||
json=cli_args.json,
|
|
||||||
timeout=cli_args.timeout,
|
|
||||||
filter_glob=cli_args.filter_glob,
|
|
||||||
kernel_args=cli_args.kernel_args,
|
|
||||||
run_isolated=cli_args.run_isolated)
|
|
||||||
result = run_tests(linux, request)
|
|
||||||
if result.status != KunitStatus.SUCCESS:
|
|
||||||
sys.exit(1)
|
|
||||||
elif cli_args.subcommand == 'config':
|
|
||||||
if cli_args.build_dir and (
|
|
||||||
not os.path.exists(cli_args.build_dir)):
|
|
||||||
os.mkdir(cli_args.build_dir)
|
|
||||||
|
|
||||||
linux = tree_from_args(cli_args)
|
|
||||||
request = KunitConfigRequest(build_dir=cli_args.build_dir,
|
|
||||||
make_options=cli_args.make_options)
|
|
||||||
result = config_tests(linux, request)
|
|
||||||
stdout.print_with_timestamp((
|
|
||||||
'Elapsed time: %.3fs\n') % (
|
|
||||||
result.elapsed_time))
|
|
||||||
if result.status != KunitStatus.SUCCESS:
|
|
||||||
sys.exit(1)
|
|
||||||
elif cli_args.subcommand == 'build':
|
|
||||||
linux = tree_from_args(cli_args)
|
|
||||||
request = KunitBuildRequest(build_dir=cli_args.build_dir,
|
|
||||||
make_options=cli_args.make_options,
|
|
||||||
jobs=cli_args.jobs)
|
|
||||||
result = config_and_build_tests(linux, request)
|
|
||||||
stdout.print_with_timestamp((
|
|
||||||
'Elapsed time: %.3fs\n') % (
|
|
||||||
result.elapsed_time))
|
|
||||||
if result.status != KunitStatus.SUCCESS:
|
|
||||||
sys.exit(1)
|
|
||||||
elif cli_args.subcommand == 'exec':
|
|
||||||
linux = tree_from_args(cli_args)
|
|
||||||
exec_request = KunitExecRequest(raw_output=cli_args.raw_output,
|
|
||||||
build_dir=cli_args.build_dir,
|
|
||||||
json=cli_args.json,
|
|
||||||
timeout=cli_args.timeout,
|
|
||||||
filter_glob=cli_args.filter_glob,
|
|
||||||
kernel_args=cli_args.kernel_args,
|
|
||||||
run_isolated=cli_args.run_isolated)
|
|
||||||
result = exec_tests(linux, exec_request)
|
|
||||||
stdout.print_with_timestamp((
|
|
||||||
'Elapsed time: %.3fs\n') % (result.elapsed_time))
|
|
||||||
if result.status != KunitStatus.SUCCESS:
|
|
||||||
sys.exit(1)
|
|
||||||
elif cli_args.subcommand == 'parse':
|
|
||||||
if cli_args.file is None:
|
|
||||||
sys.stdin.reconfigure(errors='backslashreplace') # pytype: disable=attribute-error
|
|
||||||
kunit_output = sys.stdin
|
|
||||||
else:
|
|
||||||
with open(cli_args.file, 'r', errors='backslashreplace') as f:
|
|
||||||
kunit_output = f.read().splitlines()
|
|
||||||
# We know nothing about how the result was created!
|
|
||||||
metadata = kunit_json.Metadata()
|
|
||||||
request = KunitParseRequest(raw_output=cli_args.raw_output,
|
|
||||||
json=cli_args.json)
|
|
||||||
result, _ = parse_tests(request, metadata, kunit_output)
|
|
||||||
if result.status != KunitStatus.SUCCESS:
|
|
||||||
sys.exit(1)
|
|
||||||
else:
|
|
||||||
parser.print_help()
|
parser.print_help()
|
||||||
|
return
|
||||||
|
|
||||||
|
subcomand_handler(cli_args)
|
||||||
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
main(sys.argv[1:])
|
main(sys.argv[1:])
|
||||||
|
Loading…
x
Reference in New Issue
Block a user