Home | History | Annotate | Download | only in art
      1 #!/usr/bin/env python
      2 #
      3 # Copyright 2017, The Android Open Source Project
      4 #
      5 # Licensed under the Apache License, Version 2.0 (the "License");
      6 # you may not use this file except in compliance with the License.
      7 # You may obtain a copy of the License at
      8 #
      9 #     http://www.apache.org/licenses/LICENSE-2.0
     10 #
     11 # Unless required by applicable law or agreed to in writing, software
     12 # distributed under the License is distributed on an "AS IS" BASIS,
     13 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     14 # See the License for the specific language governing permissions and
     15 # limitations under the License.
     16 
     17 # --run-test : To run run-test
     18 # --gtest : To run gtest
     19 # -j : Number of jobs
     20 # --host: for host tests
     21 # --target: for target tests
     22 # All the other arguments will be passed to the run-test testrunner.
     23 import sys
     24 import subprocess
     25 import os
     26 import argparse
     27 
     28 ANDROID_BUILD_TOP = os.environ.get('ANDROID_BUILD_TOP', os.getcwd())
     29 
     30 parser = argparse.ArgumentParser()
     31 parser.add_argument('-j', default='', dest='n_threads', help='specify number of concurrent tests')
     32 parser.add_argument('--run-test', '-r', action='store_true', dest='run_test', help='execute run tests')
     33 parser.add_argument('--gtest', '-g', action='store_true', dest='gtest', help='execute gtest tests')
     34 parser.add_argument('--target', action='store_true', dest='target', help='test on target system')
     35 parser.add_argument('--host', action='store_true', dest='host', help='test on build host system')
     36 parser.add_argument('--help-runner', action='store_true', dest='help_runner', help='show help for optional run test arguments')
     37 options, unknown = parser.parse_known_args()
     38 
     39 if options.run_test or options.help_runner or not options.gtest:
     40   testrunner = os.path.join('./',
     41                           ANDROID_BUILD_TOP,
     42                             'art/test/testrunner/testrunner.py')
     43   run_test_args = []
     44   for arg in sys.argv[1:]:
     45     if arg == '--run-test' or arg == '--gtest' \
     46     or arg == '-r' or arg == '-g':
     47       continue
     48     if arg == '--help-runner':
     49       run_test_args = ['--help']
     50       break
     51     run_test_args.append(arg)
     52 
     53   test_runner_cmd = [testrunner] + run_test_args
     54   print test_runner_cmd
     55   if subprocess.call(test_runner_cmd) or options.help_runner:
     56     sys.exit(1)
     57 
     58 if options.gtest or not options.run_test:
     59   build_target = ''
     60   if options.host or not options.target:
     61     build_target += ' test-art-host-gtest'
     62   if options.target or not options.host:
     63     build_target += ' test-art-target-gtest'
     64 
     65   build_command = 'make'
     66   build_command += ' -j' + str(options.n_threads)
     67 
     68   build_command += ' -C ' + ANDROID_BUILD_TOP
     69   build_command += ' ' + build_target
     70   # Add 'dist' to avoid Jack issues b/36169180.
     71   build_command += ' dist'
     72 
     73   print build_command
     74 
     75   if subprocess.call(build_command.split()):
     76       sys.exit(1)
     77 
     78 sys.exit(0)
     79