blob: 094e057d20757305b51d5bb8748af0f75f2501d4 [file] [log] [blame]
# Copyright 2019 The Fuchsia Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
"""Recipe for checking lockfile integrity."""
from PB.recipes.fuchsia.lockfile import InputProperties
DEPS = [
"fuchsia/buildbucket_util",
"fuchsia/checkout",
"fuchsia/git",
"fuchsia/jiri",
"recipe_engine/context",
"recipe_engine/properties",
"recipe_engine/raw_io",
"recipe_engine/step",
]
PROPERTIES = InputProperties
def RunSteps(api, props):
checkout_dir = api.checkout.with_options(
manifest=props.manifest,
remote=props.remote,
project=props.project,
)
project_dir = checkout_dir / props.project
lockfile_script = props.lockfile_script or "update-lockfiles.sh"
lockfile_script_path = project_dir / lockfile_script
with api.context(cwd=project_dir):
api.step(
f"run {lockfile_script}", [lockfile_script_path, "--jiri", api.jiri.jiri]
)
diff = api.git.diff().stdout.strip()
if diff:
raise api.step.StepFailure(
f"Lockfiles are not properly updated. Please run {lockfile_script} and resubmit your change. Diff:\n\n```\n{diff}\n```"
)
def GenTests(api):
default_properties = api.properties(
project="integration",
manifest="minimal",
remote="https://fuchsia.googlesource.com",
lockfile_script="update-lockfiles.sh",
)
yield (
api.buildbucket_util.test("diff", status="FAILURE", tryjob=True)
+ default_properties
)
yield (
api.buildbucket_util.test("no_diff", tryjob=True)
+ default_properties
+ api.step_data(
"git diff",
api.raw_io.stream_output_text(""),
)
)