| OLD | NEW |
| 1 #!/usr/bin/env python | 1 #!/usr/bin/env python |
| 2 # Copyright (c) 2012 The Chromium Authors. All rights reserved. | 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 | 3 # Use of this source code is governed by a BSD-style license that can be |
| 4 # found in the LICENSE file. | 4 # found in the LICENSE file. |
| 5 | 5 |
| 6 """Runs all ChromeDriver end to end tests.""" | 6 """Runs all ChromeDriver end to end tests.""" |
| 7 | 7 |
| 8 import optparse | 8 import optparse |
| 9 import os | 9 import os |
| 10 import sys | 10 import sys |
| (...skipping 16 matching lines...) Expand all Loading... |
| 27 | 27 |
| 28 def _AddToolsToSystemPathForWindows(): | 28 def _AddToolsToSystemPathForWindows(): |
| 29 path_cfg_file = 'C:\\tools\\bots_path.cfg' | 29 path_cfg_file = 'C:\\tools\\bots_path.cfg' |
| 30 if not os.path.exists(path_cfg_file): | 30 if not os.path.exists(path_cfg_file): |
| 31 print 'Failed to find file', path_cfg_file | 31 print 'Failed to find file', path_cfg_file |
| 32 with open(path_cfg_file, 'r') as cfg: | 32 with open(path_cfg_file, 'r') as cfg: |
| 33 paths = cfg.read().split('\n') | 33 paths = cfg.read().split('\n') |
| 34 os.environ['PATH'] = os.pathsep.join(paths) + os.pathsep + os.environ['PATH'] | 34 os.environ['PATH'] = os.pathsep.join(paths) + os.pathsep + os.environ['PATH'] |
| 35 | 35 |
| 36 | 36 |
| 37 def _GenerateTestCommand(script, chromedriver, chrome=None, | 37 def _GenerateTestCommand(script, |
| 38 chrome_version=None, android_package=None): | 38 chromedriver, |
| 39 ref_chromedriver=None, |
| 40 chrome=None, |
| 41 chrome_version=None, |
| 42 android_package=None): |
| 39 cmd = [ | 43 cmd = [ |
| 40 sys.executable, | 44 sys.executable, |
| 41 os.path.join(_THIS_DIR, script), | 45 os.path.join(_THIS_DIR, script), |
| 42 '--chromedriver=' + chromedriver, | 46 '--chromedriver=' + chromedriver, |
| 43 ] | 47 ] |
| 48 if ref_chromedriver: |
| 49 cmd.append('--reference-chromedriver=' + ref_chromedriver) |
| 44 if chrome: | 50 if chrome: |
| 45 cmd.append('--chrome=' + chrome) | 51 cmd.append('--chrome=' + chrome) |
| 46 if chrome_version: | 52 if chrome_version: |
| 47 cmd.append('--chrome-version=' + chrome_version) | 53 cmd.append('--chrome-version=' + chrome_version) |
| 48 | 54 |
| 49 if android_package: | 55 if android_package: |
| 50 cmd.append('--android-package=' + android_package) | 56 cmd.append('--android-package=' + android_package) |
| 51 return cmd | 57 return cmd |
| 52 | 58 |
| 53 | 59 |
| 54 def RunPythonTests(chromedriver, chrome=None, chrome_version=None, | 60 def RunPythonTests(chromedriver, ref_chromedriver, |
| 61 chrome=None, chrome_version=None, |
| 55 chrome_version_name=None, android_package=None): | 62 chrome_version_name=None, android_package=None): |
| 56 version_info = '' | 63 version_info = '' |
| 57 if chrome_version_name: | 64 if chrome_version_name: |
| 58 version_info = '(v%s)' % chrome_version_name | 65 version_info = '(v%s)' % chrome_version_name |
| 59 util.MarkBuildStepStart('python_tests%s' % version_info) | 66 util.MarkBuildStepStart('python_tests%s' % version_info) |
| 60 code = util.RunCommand( | 67 code = util.RunCommand( |
| 61 _GenerateTestCommand('run_py_tests.py', chromedriver, chrome, | 68 _GenerateTestCommand('run_py_tests.py', |
| 62 chrome_version, android_package)) | 69 chromedriver, |
| 70 ref_chromedriver=ref_chromedriver, |
| 71 chrome=chrome, |
| 72 chrome_version=chrome_version, |
| 73 android_package=android_package)) |
| 63 if code: | 74 if code: |
| 64 util.MarkBuildStepError() | 75 util.MarkBuildStepError() |
| 65 return code | 76 return code |
| 66 | 77 |
| 67 | 78 |
| 68 def RunJavaTests(chromedriver, chrome=None, chrome_version=None, | 79 def RunJavaTests(chromedriver, chrome=None, chrome_version=None, |
| 69 chrome_version_name=None, android_package=None): | 80 chrome_version_name=None, android_package=None): |
| 70 version_info = '' | 81 version_info = '' |
| 71 if chrome_version_name: | 82 if chrome_version_name: |
| 72 version_info = '(v%s)' % chrome_version_name | 83 version_info = '(v%s)' % chrome_version_name |
| 73 util.MarkBuildStepStart('java_tests%s' % version_info) | 84 util.MarkBuildStepStart('java_tests%s' % version_info) |
| 74 code = util.RunCommand( | 85 code = util.RunCommand( |
| 75 _GenerateTestCommand('run_java_tests.py', chromedriver, chrome, | 86 _GenerateTestCommand('run_java_tests.py', |
| 76 chrome_version, android_package)) | 87 chromedriver, |
| 88 ref_chromedriver=None, |
| 89 chrome=chrome, |
| 90 chrome_version=chrome_version, |
| 91 android_package=android_package)) |
| 77 if code: | 92 if code: |
| 78 util.MarkBuildStepError() | 93 util.MarkBuildStepError() |
| 79 return code | 94 return code |
| 80 | 95 |
| 81 | 96 |
| 82 def RunCppTests(cpp_tests): | 97 def RunCppTests(cpp_tests): |
| 83 util.MarkBuildStepStart('chromedriver2_tests') | 98 util.MarkBuildStepStart('chromedriver2_tests') |
| 84 code = util.RunCommand([cpp_tests]) | 99 code = util.RunCommand([cpp_tests]) |
| 85 if code: | 100 if code: |
| 86 util.MarkBuildStepError() | 101 util.MarkBuildStepError() |
| 87 return code | 102 return code |
| 88 | 103 |
| 89 | 104 |
| 90 def main(): | 105 def main(): |
| 91 parser = optparse.OptionParser() | 106 parser = optparse.OptionParser() |
| 92 parser.add_option( | 107 parser.add_option( |
| 93 '', '--android-package', | 108 '', '--android-package', |
| 94 help='Application package name, if running tests on Android.') | 109 help='Application package name, if running tests on Android.') |
| 95 # Option 'chrome-version' is for desktop only. | 110 # Option 'chrome-version' is for desktop only. |
| 96 parser.add_option( | 111 parser.add_option( |
| 97 '', '--chrome-version', | 112 '', '--chrome-version', |
| 98 help='Version of chrome, e.g., \'HEAD\', \'27\', or \'26\'.' | 113 help='Version of chrome, e.g., \'HEAD\', \'27\', or \'26\'.' |
| 99 'Default is to run tests against all of these versions.' | 114 'Default is to run tests against all of these versions.' |
| 100 'Notice: this option only applies to desktop.') | 115 'Notice: this option only applies to desktop.') |
| 101 options, _ = parser.parse_args() | 116 options, _ = parser.parse_args() |
| 102 | 117 |
| 103 postfix = '' | 118 exe_postfix = '' |
| 104 if util.IsWindows(): | 119 if util.IsWindows(): |
| 105 postfix = '.exe' | 120 exe_postfix = '.exe' |
| 106 cpp_tests_name = 'chromedriver2_tests' + postfix | 121 cpp_tests_name = 'chromedriver2_tests' + exe_postfix |
| 107 server_name = 'chromedriver2_server' + postfix | 122 server_name = 'chromedriver2_server' + exe_postfix |
| 108 | 123 |
| 109 required_build_outputs = [server_name] | 124 required_build_outputs = [server_name] |
| 110 if not options.android_package: | 125 if not options.android_package: |
| 111 required_build_outputs += [cpp_tests_name] | 126 required_build_outputs += [cpp_tests_name] |
| 112 build_dir = chrome_paths.GetBuildDir(required_build_outputs) | 127 build_dir = chrome_paths.GetBuildDir(required_build_outputs) |
| 113 print 'Using build outputs from', build_dir | 128 print 'Using build outputs from', build_dir |
| 114 | 129 |
| 115 chromedriver_server = os.path.join(build_dir, server_name) | 130 chromedriver = os.path.join(build_dir, server_name) |
| 131 ref_chromedriver = os.path.join( |
| 132 chrome_paths.GetSrc(), |
| 133 'chrome', 'test', 'chromedriver', 'third_party', 'java_tests', |
| 134 'reference_builds', |
| 135 'chromedriver_%s%s' % (util.GetPlatformName(), exe_postfix)) |
| 116 | 136 |
| 117 if util.IsLinux(): | 137 if util.IsLinux(): |
| 118 # Set LD_LIBRARY_PATH to enable successful loading of shared object files, | 138 # Set LD_LIBRARY_PATH to enable successful loading of shared object files, |
| 119 # when chromedriver2.so is not a static build. | 139 # when chromedriver2.so is not a static build. |
| 120 _AppendEnvironmentPath('LD_LIBRARY_PATH', os.path.join(build_dir, 'lib')) | 140 _AppendEnvironmentPath('LD_LIBRARY_PATH', os.path.join(build_dir, 'lib')) |
| 121 elif util.IsWindows(): | 141 elif util.IsWindows(): |
| 122 # For Windows bots: add ant, java(jre) and the like to system path. | 142 # For Windows bots: add ant, java(jre) and the like to system path. |
| 123 _AddToolsToSystemPathForWindows() | 143 _AddToolsToSystemPathForWindows() |
| 124 | 144 |
| 125 if options.android_package: | 145 if options.android_package: |
| 126 os.environ['PATH'] += os.pathsep + os.path.join(_THIS_DIR, 'chrome') | 146 os.environ['PATH'] += os.pathsep + os.path.join(_THIS_DIR, 'chrome') |
| 127 code1 = RunPythonTests(chromedriver_server, | 147 code1 = RunPythonTests(chromedriver, |
| 148 ref_chromedriver, |
| 128 android_package=options.android_package) | 149 android_package=options.android_package) |
| 129 code2 = RunJavaTests(chromedriver_server, | 150 code2 = RunJavaTests(chromedriver, |
| 130 android_package=options.android_package) | 151 android_package=options.android_package) |
| 131 return code1 or code2 | 152 return code1 or code2 |
| 132 else: | 153 else: |
| 133 latest_snapshot_revision = archive.GetLatestRevision(archive.Site.SNAPSHOT) | 154 latest_snapshot_revision = archive.GetLatestRevision(archive.Site.SNAPSHOT) |
| 134 versions = [ | 155 versions = [ |
| 135 ['HEAD', latest_snapshot_revision], | 156 ['HEAD', latest_snapshot_revision], |
| 136 ['28', archive.CHROME_28_REVISION], | 157 ['28', archive.CHROME_28_REVISION], |
| 137 ['27', archive.CHROME_27_REVISION] | 158 ['27', archive.CHROME_27_REVISION] |
| 138 ] | 159 ] |
| 139 code = 0 | 160 code = 0 |
| 140 for version in versions: | 161 for version in versions: |
| 141 if options.chrome_version and version[0] != options.chrome_version: | 162 if options.chrome_version and version[0] != options.chrome_version: |
| 142 continue | 163 continue |
| 143 download_site = archive.Site.CONTINUOUS | 164 download_site = archive.Site.CONTINUOUS |
| 144 version_name = version[0] | 165 version_name = version[0] |
| 145 if version_name == 'HEAD': | 166 if version_name == 'HEAD': |
| 146 version_name = version[1] | 167 version_name = version[1] |
| 147 download_site = archive.Site.SNAPSHOT | 168 download_site = archive.Site.SNAPSHOT |
| 148 chrome_path = archive.DownloadChrome(version[1], | 169 chrome_path = archive.DownloadChrome(version[1], |
| 149 util.MakeTempDir(), | 170 util.MakeTempDir(), |
| 150 download_site) | 171 download_site) |
| 151 code1 = RunPythonTests(chromedriver_server, chrome=chrome_path, | 172 code1 = RunPythonTests(chromedriver, |
| 173 ref_chromedriver, |
| 174 chrome=chrome_path, |
| 152 chrome_version=version[0], | 175 chrome_version=version[0], |
| 153 chrome_version_name=version_name) | 176 chrome_version_name=version_name) |
| 154 code2 = RunJavaTests(chromedriver_server, chrome=chrome_path, | 177 code2 = RunJavaTests(chromedriver, chrome=chrome_path, |
| 155 chrome_version=version[0], | 178 chrome_version=version[0], |
| 156 chrome_version_name=version_name) | 179 chrome_version_name=version_name) |
| 157 code = code or code1 or code2 | 180 code = code or code1 or code2 |
| 158 cpp_tests = os.path.join(build_dir, cpp_tests_name) | 181 cpp_tests = os.path.join(build_dir, cpp_tests_name) |
| 159 return RunCppTests(cpp_tests) or code | 182 return RunCppTests(cpp_tests) or code |
| 160 | 183 |
| 161 | 184 |
| 162 if __name__ == '__main__': | 185 if __name__ == '__main__': |
| 163 sys.exit(main()) | 186 sys.exit(main()) |
| OLD | NEW |