| #!/usr/bin/python |
| |
| # Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| # for details. All rights reserved. Use of this source code is governed by a |
| # BSD-style license that can be found in the LICENSE file. |
| |
| """ |
| Pub buildbot steps. |
| |
| Runs tests for pub and the pub packages that are hosted in the main Dart repo. |
| """ |
| |
| import re |
| import sys |
| |
| import bot |
| |
| PUB_BUILDER = r'pub-(linux|mac|win)(-(russian))?(-(debug))?' |
| |
| def PubConfig(name, is_buildbot): |
| """Returns info for the current buildbot based on the name of the builder. |
| |
| Currently, this is just: |
| - mode: "debug", "release" |
| - system: "linux", "mac", or "win" |
| """ |
| pub_pattern = re.match(PUB_BUILDER, name) |
| if not pub_pattern: |
| return None |
| |
| system = pub_pattern.group(1) |
| locale = pub_pattern.group(3) |
| mode = pub_pattern.group(5) or 'release' |
| if system == 'win': system = 'windows' |
| |
| return bot.BuildInfo('none', 'vm', mode, system, checked=True, |
| builder_tag=locale) |
| |
| def PubSteps(build_info): |
| with bot.BuildStep('Build package-root'): |
| args = [sys.executable, './tools/build.py', '--mode=' + build_info.mode, |
| 'packages'] |
| print 'Building package-root: %s' % (' '.join(args)) |
| bot.RunProcess(args) |
| |
| common_args = ['--write-test-outcome-log'] |
| if build_info.builder_tag: |
| common_args.append('--builder-tag=%s' % build_info.builder_tag) |
| |
| |
| opt_threshold = '--vm-options=--optimization-counter-threshold=5' |
| if build_info.mode == 'release': |
| bot.RunTest('pub and pkg ', build_info, |
| common_args + ['pub', 'pkg', 'docs'], |
| swallow_error=True) |
| bot.RunTest('pub and pkg optimization counter thresshold 5', build_info, |
| common_args + ['--append_logs', opt_threshold, |
| 'pub', 'pkg', 'docs'], |
| swallow_error=True) |
| else: |
| # Pub tests currently have a lot of timeouts when run in debug mode. |
| # See issue 18479 |
| bot.RunTest('pub and pkg', build_info, common_args + ['pkg', 'docs'], |
| swallow_error=True) |
| bot.RunTest('pub and pkg optimization counter threshold 5', build_info, |
| common_args + ['--append_logs', opt_threshold, 'pkg', 'docs'], |
| swallow_error=True) |
| |
| if build_info.mode == 'release': |
| pkgbuild_build_info = bot.BuildInfo('none', 'vm', build_info.mode, |
| build_info.system, checked=False) |
| bot.RunTest('pkgbuild_repo_pkgs', pkgbuild_build_info, |
| common_args + ['--append_logs', '--use-repository-packages', |
| 'pkgbuild'], |
| swallow_error=True) |
| |
| # We are seeing issues with pub get calls on the windows bots. |
| # Experiment with not running concurrent calls. |
| public_args = (common_args + |
| ['--append_logs', '--use-public-packages', 'pkgbuild']) |
| if build_info.system == 'windows': |
| public_args.append('-j1') |
| bot.RunTest('pkgbuild_public_pkgs', pkgbuild_build_info, public_args) |
| |
| if __name__ == '__main__': |
| bot.RunBot(PubConfig, PubSteps) |