Merge pull request #8718 from demopark/master
[platform/framework/web/crosswalk-tizen.git] / script / test.py
1 #!/usr/bin/env python
2
3 import os
4 import shutil
5 import subprocess
6 import sys
7
8 from lib.util import electron_gyp, rm_rf
9
10
11 SOURCE_ROOT = os.path.abspath(os.path.dirname(os.path.dirname(__file__)))
12
13 PROJECT_NAME = electron_gyp()['project_name%']
14 PRODUCT_NAME = electron_gyp()['product_name%']
15
16
17 def main():
18   os.chdir(SOURCE_ROOT)
19
20   config = 'D'
21   if len(sys.argv) == 2 and sys.argv[1] == '-R':
22     config = 'R'
23
24   if sys.platform == 'darwin':
25     electron = os.path.join(SOURCE_ROOT, 'out', config,
26                               '{0}.app'.format(PRODUCT_NAME), 'Contents',
27                               'MacOS', PRODUCT_NAME)
28     resources_path = os.path.join(SOURCE_ROOT, 'out', config,
29                                    '{0}.app'.format(PRODUCT_NAME), 'Contents',
30                                    'Resources')
31   elif sys.platform == 'win32':
32     electron = os.path.join(SOURCE_ROOT, 'out', config,
33                               '{0}.exe'.format(PROJECT_NAME))
34     resources_path = os.path.join(SOURCE_ROOT, 'out', config)
35   else:
36     electron = os.path.join(SOURCE_ROOT, 'out', config, PROJECT_NAME)
37     resources_path = os.path.join(SOURCE_ROOT, 'out', config)
38
39   use_instrumented_asar = '--use-instrumented-asar' in sys.argv
40   returncode = 0
41   try:
42     if use_instrumented_asar:
43       install_instrumented_asar_file(resources_path)
44     subprocess.check_call([electron, 'spec'] + sys.argv[1:])
45   except subprocess.CalledProcessError as e:
46     returncode = e.returncode
47   except KeyboardInterrupt:
48     returncode = 0
49
50   if use_instrumented_asar:
51     restore_uninstrumented_asar_file(resources_path)
52
53   if os.environ.has_key('OUTPUT_TO_FILE'):
54     output_to_file = os.environ['OUTPUT_TO_FILE']
55     with open(output_to_file, 'r') as f:
56       print f.read()
57     rm_rf(output_to_file)
58
59
60   return returncode
61
62
63 def install_instrumented_asar_file(resources_path):
64   asar_path = os.path.join(resources_path, '{0}.asar'.format(PROJECT_NAME))
65   uninstrumented_path = os.path.join(resources_path,
66                                       '{0}-original.asar'.format(PROJECT_NAME))
67   instrumented_path = os.path.join(SOURCE_ROOT, 'out', 'coverage',
68                                       '{0}.asar'.format(PROJECT_NAME))
69   shutil.move(asar_path, uninstrumented_path)
70   shutil.move(instrumented_path, asar_path)
71
72
73 def restore_uninstrumented_asar_file(resources_path):
74   asar_path = os.path.join(resources_path, '{0}.asar'.format(PROJECT_NAME))
75   uninstrumented_path = os.path.join(resources_path,
76                                       '{0}-original.asar'.format(PROJECT_NAME))
77   os.remove(asar_path)
78   shutil.move(uninstrumented_path, asar_path)
79
80
81 if __name__ == '__main__':
82   sys.exit(main())