1 #!/usr/bin/env python 2 # Copyright (c) 2012 The Chromium Authors. All rights reserved. 3 # Use of this source code is governed by a BSD-style license that can be 4 # found in the LICENSE file. 5 6 """This script is used by chrome_tests.gypi's js2webui action to maintain the 7 argument lists and to generate inlinable tests. 8 9 Usage: 10 python tools/gypv8sh.py v8_shell mock.js test_api.js js2webui.js \ 11 inputfile inputrelfile cxxoutfile jsoutfile 12 """ 13 14 import json 15 import optparse 16 import os 17 import subprocess 18 import sys 19 import shutil 20 21 22 def main (): 23 parser = optparse.OptionParser() 24 parser.set_usage( 25 "%prog v8_shell mock.js axs_testing.js test_api.js js2webui.js " 26 "testtype inputfile inputrelfile cxxoutfile jsoutfile") 27 parser.add_option('-v', '--verbose', action='store_true') 28 parser.add_option('-n', '--impotent', action='store_true', 29 help="don't execute; just print (as if verbose)") 30 (opts, args) = parser.parse_args() 31 32 if len(args) != 10: 33 parser.error('all arguments are required.') 34 (v8_shell, mock_js, axs_testing_js, test_api, js2webui, test_type, 35 inputfile, inputrelfile, cxxoutfile, jsoutfile) = args 36 arguments = [js2webui, inputfile, inputrelfile, cxxoutfile, test_type] 37 cmd = [v8_shell, '-e', "arguments=" + json.dumps(arguments), mock_js, 38 axs_testing_js, test_api, js2webui] 39 if opts.verbose or opts.impotent: 40 print cmd 41 if not opts.impotent: 42 try: 43 with open(cxxoutfile, 'w') as f: 44 subprocess.check_call(cmd, stdin=subprocess.PIPE, stdout=f) 45 shutil.copyfile(inputfile, jsoutfile) 46 except Exception, ex: 47 if os.path.exists(cxxoutfile): 48 os.remove(cxxoutfile) 49 if os.path.exists(jsoutfile): 50 os.remove(jsoutfile) 51 raise 52 53 54 if __name__ == '__main__': 55 sys.exit(main()) 56