blob: 7fb31023bbc253e35368a7751d66d3b69b3d9e0f [file] [log] [blame]
# Copyright (c) 2020, the Dart project authors. All rights reserved. Use of this
# source code is governed by a BSD-style license that can be found in the
# LICENSE file.
#
# This recipe runs the presubmit. It checks that presubmit checks still pass
# when a CL is rebased (other changes may have landed and cause it to fail even
# though all checks passed when the CL was uploaded).
from recipe_engine import post_process
DEPS = [
'depot_tools/gclient',
'depot_tools/presubmit',
'depot_tools/tryserver',
'recipe_engine/buildbucket',
'recipe_engine/context',
'recipe_engine/json',
'recipe_engine/path',
]
def RunSteps(api):
# prepare() runs bot_update, which requires a gclient config. This creates a
# synthethic gclient config so that the recipe also works for projects that
# don't use gclient.
gclient_config = api.gclient.make_config()
solution = gclient_config.solutions.add()
solution.url = api.tryserver.gerrit_change_repo_url
solution.name = api.tryserver.gerrit_change.project
gclient_config.got_revision_mapping[solution.name] = 'got_revision'
api.gclient.c = gclient_config
with api.context(cwd=api.path['cache'].join('builder')):
bot_update = api.presubmit.prepare()
# execute() doesn't raise a StepFailure on error, but returns an error code.
return api.presubmit.execute(bot_update, skip_owners=True)
def GenTests(api):
yield api.test(
'success',
api.buildbucket.try_build(
build_number=1357,
builder='presubmit-try',
git_repo='https://dart.googlesource.com/sdk',
project='dart',
),
api.step_data(
'presubmit',
api.json.output({
'errors': [],
'notifications': [],
'warnings': []
})),
api.post_process(post_process.StatusSuccess),
)
yield api.test(
'failure',
api.buildbucket.try_build(
build_number=1357,
builder='presubmit-try',
git_repo='https://dart.googlesource.com/sdk',
project='dart',
),
api.step_data(
'presubmit',
api.json.output({
'errors': [{
'message': 'ERROR',
'long_text': 'ERROR: occured'
}],
'notifications': [],
'warnings': []
}),
retcode=1),
api.post_process(post_process.StatusFailure),
)