- add sources.
[platform/framework/web/crosswalk.git] / src / tools / gypv8sh.py
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())