| OLD | NEW |
| (Empty) |
| 1 #!/usr/bin/env python | |
| 2 # Copyright 2014 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 """Launches the remoting webapp unit test in chrome with the appropriate flags. | |
| 7 """ | |
| 8 | |
| 9 import argparse | |
| 10 import os | |
| 11 import platform | |
| 12 import sys | |
| 13 import tempfile | |
| 14 import urllib | |
| 15 | |
| 16 def GetChromePath(): | |
| 17 """Locates the chrome binary on the system.""" | |
| 18 chrome_path = '' | |
| 19 if platform.system() == 'Darwin': # Darwin == MacOSX | |
| 20 chrome_path = ( | |
| 21 '/Applications/Google Chrome.app/Contents/MacOS/Google Chrome') | |
| 22 elif platform.system() == 'Linux': | |
| 23 chrome_path = '/usr/bin/google-chrome' | |
| 24 else: | |
| 25 # TODO(kelvinp): Support chrome path location on Windows. | |
| 26 print 'Unsupported OS.' | |
| 27 return chrome_path | |
| 28 | |
| 29 | |
| 30 def BuildTestPageUri(opt_module=None, opt_coverage=False): | |
| 31 """Builds the Uri for the test page with params.""" | |
| 32 script_path = os.path.dirname(__file__) | |
| 33 | |
| 34 test_page_path = os.path.join(script_path, | |
| 35 '../../out/Debug/remoting/unittests/unittest.html') | |
| 36 test_page_path = 'file://' + os.path.abspath(test_page_path) | |
| 37 | |
| 38 test_page_params = {} | |
| 39 if opt_coverage: | |
| 40 test_page_params['coverage'] = 'true' | |
| 41 if opt_module: | |
| 42 test_page_params['module'] = opt_module | |
| 43 if test_page_params: | |
| 44 test_page_path = test_page_path + '?%s' % urllib.urlencode(test_page_params) | |
| 45 return '"' + test_page_path + '"' | |
| 46 | |
| 47 | |
| 48 def BuildCommandLine(chrome_path, opt_module, opt_coverage): | |
| 49 """Builds the command line to execute.""" | |
| 50 command = [] | |
| 51 command.append('"' + chrome_path + '"') | |
| 52 command.append('--user-data-dir=' + tempfile.gettempdir()) | |
| 53 # The flag |--allow-file-access-from-files| is required so that we can open | |
| 54 # JavaScript files using XHR and instrument them for code coverage. | |
| 55 command.append(' --allow-file-access-from-files') | |
| 56 test_page_path = BuildTestPageUri(opt_module, opt_coverage) | |
| 57 command.append(test_page_path) | |
| 58 return ' '.join(command) | |
| 59 | |
| 60 | |
| 61 def ParseArgs(): | |
| 62 parser = argparse.ArgumentParser() | |
| 63 chrome_path = GetChromePath() | |
| 64 | |
| 65 parser.add_argument( | |
| 66 '--chrome-path', | |
| 67 help='The path of the chrome binary to run the test.', | |
| 68 default=chrome_path) | |
| 69 parser.add_argument( | |
| 70 '--module', help='only run tests that belongs to MODULE') | |
| 71 parser.add_argument( | |
| 72 '--coverage', help='run the test with code coverage', action='store_true') | |
| 73 | |
| 74 return parser.parse_args(sys.argv[1:]) | |
| 75 | |
| 76 | |
| 77 def main(): | |
| 78 args = ParseArgs() | |
| 79 command_line = "" | |
| 80 | |
| 81 if not os.path.exists(args.chrome_path): | |
| 82 print 'Cannot locate the chrome binary in your system.' | |
| 83 print 'Please use the flag --chrome_path=CHROME_PATH to specify the chrome ' | |
| 84 print 'binary to run the test.' | |
| 85 return 1 | |
| 86 | |
| 87 command_line = BuildCommandLine(args.chrome_path, args.module, args.coverage) | |
| 88 os.system(command_line) | |
| 89 return 0 | |
| 90 | |
| 91 | |
| 92 if __name__ == '__main__': | |
| 93 sys.exit(main()) | |
| OLD | NEW |