| # Copyright 2018 The Chromium Authors. All rights reserved. |
| # Use of this source code is governed by a BSD-style license that can be |
| # found in the LICENSE file. |
| |
| from recipe_engine import post_process |
| |
| |
| DEPS = [ |
| 'dart', |
| 'depot_tools/git', |
| 'recipe_engine/buildbucket', |
| 'recipe_engine/path', |
| 'recipe_engine/properties', |
| 'recipe_engine/step', |
| 'recipe_engine/raw_io', |
| ] |
| |
| |
| def RunSteps(api): |
| clobber = 'clobber' in api.properties |
| api.dart.checkout(clobber) |
| dart = api.dart.dart_executable() |
| find_base_commit = api.path['checkout'].join( |
| 'tools', 'bots', 'find_base_commit.dart') |
| result = api.step('find base commit', [dart, find_base_commit], |
| stdout=api.raw_io.output_text(add_output_log=True)) |
| commit_hash = result.stdout.strip() |
| # todo(athom): use something like api.buildbucket.gitiles_commit.ref instead |
| # The base branch is fast forwarded to the most recent commit with a complete |
| # set of test results. find_base_commit.dart is responsible for identifying |
| # that commit. |
| ref = 'refs/heads/base' |
| # Guard against the empty string here to avoid deleting the remote branch |
| assert(commit_hash) |
| api.git('push', 'https://dart.googlesource.com/sdk.git', |
| '%s:%s' % (commit_hash, ref), |
| name='push %s to %s' % (commit_hash, ref)) |
| |
| |
| def GenTests(api): |
| yield api.test( |
| 'base', |
| api.step_data('find base commit', stdout=api.raw_io.output('deadbeef')), |
| api.buildbucket.ci_build( |
| project='dart', |
| bucket='ci', |
| builder='base', |
| git_repo='https://dart.googlesource.com/a/sdk.git'), |
| ) |
| |
| yield api.test( |
| 'no_hash', |
| api.step_data('find base commit', stdout=api.raw_io.output(' ')), |
| api.buildbucket.ci_build( |
| project='dart', |
| bucket='ci', |
| builder='base', |
| git_repo='https://dart.googlesource.com/a/sdk.git'), |
| api.expect_exception('AssertionError'), |
| api.post_process(post_process.DropExpectation), |
| api.post_process(post_process.DoesNotRunRE, 'push.*'), |
| ) |