OLD | NEW |
1 #!/usr/bin/python | 1 #!/usr/bin/python |
2 | 2 |
3 # Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file | 3 # Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
4 # for details. All rights reserved. Use of this source code is governed by a | 4 # for details. All rights reserved. Use of this source code is governed by a |
5 # BSD-style license that can be found in the LICENSE file. | 5 # BSD-style license that can be found in the LICENSE file. |
6 | 6 |
7 """ | 7 """ |
8 Shared code for use in the buildbot scripts. | 8 Shared code for use in the buildbot scripts. |
9 """ | 9 """ |
10 | 10 |
11 import optparse | 11 import optparse |
12 import os | 12 import os |
13 from os.path import abspath | 13 from os.path import abspath |
14 from os.path import dirname | 14 from os.path import dirname |
15 import subprocess | 15 import subprocess |
16 import sys | 16 import sys |
17 | 17 |
18 DART_PATH = dirname(dirname(dirname(abspath(__file__)))) | 18 import bot_utils |
| 19 |
| 20 utils = bot_utils.GetUtils() |
| 21 |
| 22 BUILD_OS = utils.GuessOS() |
19 | 23 |
20 BUILDER_NAME = 'BUILDBOT_BUILDERNAME' | 24 BUILDER_NAME = 'BUILDBOT_BUILDERNAME' |
21 BUILDER_CLOBBER = 'BUILDBOT_CLOBBER' | 25 BUILDER_CLOBBER = 'BUILDBOT_CLOBBER' |
22 | 26 |
23 | 27 |
24 class BuildInfo(object): | 28 class BuildInfo(object): |
25 """ | 29 """ |
26 Encapsulation of build information. | 30 Encapsulation of build information. |
27 | 31 |
28 - compiler: None or 'dart2js' | 32 - compiler: None or 'dart2js' |
(...skipping 115 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
144 name, is_buildbot = GetBotName() | 148 name, is_buildbot = GetBotName() |
145 build_info = parse_name(name, is_buildbot) | 149 build_info = parse_name(name, is_buildbot) |
146 if not build_info: | 150 if not build_info: |
147 print 'Could not handle unfamiliar bot name "%s".' % name | 151 print 'Could not handle unfamiliar bot name "%s".' % name |
148 sys.exit(1) | 152 sys.exit(1) |
149 | 153 |
150 # Print out the buildinfo for easy debugging. | 154 # Print out the buildinfo for easy debugging. |
151 build_info.PrintBuildInfo() | 155 build_info.PrintBuildInfo() |
152 | 156 |
153 # Make sure we are in the dart directory | 157 # Make sure we are in the dart directory |
154 os.chdir(DART_PATH) | 158 os.chdir(bot_utils.DART_DIR) |
155 | 159 |
156 try: | 160 try: |
157 Clobber() | 161 Clobber() |
158 if build_step: | 162 if build_step: |
159 build_step(build_info) | 163 build_step(build_info) |
160 | 164 |
161 custom_steps(build_info) | 165 custom_steps(build_info) |
162 except OSError as e: | 166 except OSError as e: |
163 sys.exit(e.errno) | 167 sys.exit(e.errno) |
164 | 168 |
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
233 if build_info.checked: | 237 if build_info.checked: |
234 cmd.append('--checked') | 238 cmd.append('--checked') |
235 | 239 |
236 cmd.extend(flags) | 240 cmd.extend(flags) |
237 cmd.extend(targets) | 241 cmd.extend(targets) |
238 | 242 |
239 print 'Running: %s' % (' '.join(map(lambda arg: '"%s"' % arg, cmd))) | 243 print 'Running: %s' % (' '.join(map(lambda arg: '"%s"' % arg, cmd))) |
240 RunProcess(cmd) | 244 RunProcess(cmd) |
241 | 245 |
242 | 246 |
| 247 def RunTestRunner(build_info, path): |
| 248 """ |
| 249 Runs the test package's runner on the package at 'path'. |
| 250 """ |
| 251 sdk_bin = os.path.join( |
| 252 bot_utils.DART_DIR, |
| 253 utils.GetBuildSdkBin(BUILD_OS, build_info.mode, build_info.arch)) |
| 254 |
| 255 build_root = utils.GetBuildRoot( |
| 256 BUILD_OS, build_info.mode, build_info.arch) |
| 257 package_root = os.path.abspath(os.path.join(build_root, 'packages')) |
| 258 |
| 259 dart_name = 'dart.exe' if build_info.system == 'windows' else 'dart' |
| 260 dart_bin = os.path.join(sdk_bin, dart_name) |
| 261 |
| 262 test_bin = os.path.abspath( |
| 263 os.path.join('third_party', 'pkg', 'test', 'bin', 'test.dart')) |
| 264 |
| 265 with utils.ChangedWorkingDirectory(path): |
| 266 args = [dart_bin, '--package-root=' + package_root, test_bin, |
| 267 '--package-root', package_root, '--reporter', 'expanded', |
| 268 '--no-color'] |
| 269 print("Running %s" % ' '.join(args)) |
| 270 RunProcess(args) |
| 271 |
| 272 |
243 def RunProcess(command): | 273 def RunProcess(command): |
244 """ | 274 """ |
245 Runs command. | 275 Runs command. |
246 | 276 |
247 If a non-zero exit code is returned, raises an OSError with errno as the exit | 277 If a non-zero exit code is returned, raises an OSError with errno as the exit |
248 code. | 278 code. |
249 """ | 279 """ |
250 no_color_env = dict(os.environ) | 280 no_color_env = dict(os.environ) |
251 no_color_env['TERM'] = 'nocolor' | 281 no_color_env['TERM'] = 'nocolor' |
252 | 282 |
253 exit_code = subprocess.call(command, env=no_color_env) | 283 exit_code = subprocess.call(command, env=no_color_env) |
254 if exit_code != 0: | 284 if exit_code != 0: |
255 raise OSError(exit_code) | 285 raise OSError(exit_code) |
256 | 286 |
257 | 287 |
258 def GetStepName(name, flags): | 288 def GetStepName(name, flags): |
259 """ | 289 """ |
260 Filters out flags with '=' as this breaks the /stats feature of the buildbot. | 290 Filters out flags with '=' as this breaks the /stats feature of the buildbot. |
261 """ | 291 """ |
262 flags = [x for x in flags if not '=' in x] | 292 flags = [x for x in flags if not '=' in x] |
263 return ('%s tests %s' % (name, ' '.join(flags))).strip() | 293 return ('%s tests %s' % (name, ' '.join(flags))).strip() |
OLD | NEW |