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 7argument lists and to generate inlinable tests. 8 9Usage: 10 python tools/gypv8sh.py v8_shell mock.js test_api.js js2webui.js \ 11 inputfile inputrelfile cxxoutfile jsoutfile 12""" 13 14import json 15import optparse 16import os 17import subprocess 18import sys 19import shutil 20 21 22def 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 54if __name__ == '__main__': 55 sys.exit(main()) 56