| #!/usr/bin/env python3 | |
| # | |
| # Copyright 2017, The Android Open Source Project | |
| # | |
| # Licensed under the Apache License, Version 2.0 (the "License"); | |
| # you may not use this file except in compliance with the License. | |
| # You may obtain a copy of the License at | |
| # | |
| # http://www.apache.org/licenses/LICENSE-2.0 | |
| # | |
| # Unless required by applicable law or agreed to in writing, software | |
| # distributed under the License is distributed on an "AS IS" BASIS, | |
| # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |
| # See the License for the specific language governing permissions and | |
| # limitations under the License. | |
| # --run-test : To run run-test | |
| # --gtest : To run gtest | |
| # -j : Number of jobs | |
| # --host: for host tests | |
| # --target: for target tests | |
| # All the other arguments will be passed to the run-test testrunner. | |
| import sys | |
| import subprocess | |
| import os | |
| import argparse | |
| ANDROID_BUILD_TOP = os.environ.get('ANDROID_BUILD_TOP', os.getcwd()) | |
| TEST_RUNNER = 'art/test/testrunner/testrunner.py' | |
| parser = argparse.ArgumentParser( | |
| description='Test runner wrapper to run ART run tests. All unrecognised ' + | |
| 'arguments are passed on to ' + TEST_RUNNER + '.') | |
| parser.add_argument('-j', default='', dest='n_threads', help='specify number of concurrent tests') | |
| parser.add_argument('--run-test', '-r', action='store_true', dest='run_test', help='execute run tests') | |
| parser.add_argument('--gtest', '-g', action='store_true', dest='gtest', help='execute gtest tests') | |
| parser.add_argument('--target', action='store_true', dest='target', help='test on target system') | |
| parser.add_argument('--host', action='store_true', dest='host', help='test on build host system') | |
| parser.add_argument('--help-runner', action='store_true', dest='help_runner', help='show help for optional run test arguments') | |
| options, unknown = parser.parse_known_args() | |
| if options.run_test or options.help_runner or not options.gtest: | |
| testrunner = os.path.join('./', ANDROID_BUILD_TOP, TEST_RUNNER) | |
| run_test_args = [] | |
| for arg in sys.argv[1:]: | |
| if arg == '--run-test' or arg == '--gtest' \ | |
| or arg == '-r' or arg == '-g': | |
| continue | |
| if arg == '--help-runner': | |
| run_test_args = ['--help'] | |
| break | |
| run_test_args.append(arg) | |
| test_runner_cmd = [testrunner] + run_test_args | |
| print(' '.join(test_runner_cmd)) | |
| if subprocess.call(test_runner_cmd) or options.help_runner: | |
| sys.exit(1) | |
| if options.gtest or not options.run_test: | |
| build_target = '' | |
| if options.host or not options.target: | |
| build_target += ' test-art-host-gtest' | |
| if options.target or not options.host: | |
| build_target += ' test-art-target-gtest' | |
| build_command = ANDROID_BUILD_TOP + '/build/soong/soong_ui.bash --make-mode' | |
| build_command += ' -j' + str(options.n_threads) | |
| build_command += ' ' + build_target | |
| print(build_command) | |
| if subprocess.call(build_command.split(), cwd=ANDROID_BUILD_TOP): | |
| sys.exit(1) | |
| sys.exit(0) |