#!/usr/bin/env python # # Copyright 2018 The Chromium Authors. All rights reserved. # Use of this source code is governed by a BSD-style license that can be # found in the LICENSE file. """Creates a script that runs a CrOS VM test by delegating to build/chromeos/run_vm_test.py. """ import argparse import os import sys SCRIPT_TEMPLATE = """\ #!/usr/bin/env python # # This file was generated by build/chromeos/create_vm_test_script.py import os import sys def main(): script_directory = os.path.dirname(__file__) def ResolvePath(path): return os.path.abspath(os.path.join(script_directory, path)) vm_test_script = os.path.abspath( os.path.join(script_directory, '{vm_test_script}')) vm_args = {vm_test_args} path_args = {vm_test_path_args} for arg, path in path_args: vm_args.extend([arg, ResolvePath(path)]) os.execv(vm_test_script, [vm_test_script] + vm_args + sys.argv[1:]) if __name__ == '__main__': sys.exit(main()) """ def main(args): parser = argparse.ArgumentParser() parser.add_argument('--script-output-path') parser.add_argument('--output-directory') parser.add_argument('--test-exe') parser.add_argument('--runtime-deps-path') parser.add_argument('--cros-cache') parser.add_argument('--board') parser.add_argument('--deploy-chrome', action='store_true') args = parser.parse_args(args) def RelativizePathToScript(path): return os.path.relpath(path, os.path.dirname(args.script_output_path)) run_test_path = RelativizePathToScript( os.path.join(os.path.dirname(__file__), 'run_vm_test.py')) vm_test_args = [ '--board', args.board, '-v', ] if args.test_exe: vm_test_args.extend([ 'vm-test', '--test-exe', args.test_exe, ]) else: vm_test_args.append('host-cmd') if args.deploy_chrome: vm_test_args.append('--deploy-chrome') vm_test_path_args = [ ('--cros-cache', RelativizePathToScript(args.cros_cache)), ] if args.runtime_deps_path: vm_test_path_args.append( ('--runtime-deps-path', RelativizePathToScript(args.runtime_deps_path))) if args.output_directory: vm_test_path_args.append( ('--path-to-outdir', RelativizePathToScript(args.output_directory))) with open(args.script_output_path, 'w') as script: script.write(SCRIPT_TEMPLATE.format( vm_test_script=run_test_path, vm_test_args=str(vm_test_args), vm_test_path_args=str(vm_test_path_args))) os.chmod(args.script_output_path, 0750) if __name__ == '__main__': sys.exit(main(sys.argv[1:]))