blob: 33babb08ec1d437a5725e292e559091397a2ba08 [file] [log] [blame]
# Copyright 2020 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.
from recipe_engine.recipe_api import Property
DEPS = [
"flutter/display_util",
"fuchsia/status_check",
"recipe_engine/buildbucket",
]
PROPERTIES = {
"raise_on_failure": Property(kind=bool, default=True),
}
def RunSteps(api, raise_on_failure):
builds = api.buildbucket.collect_builds(build_ids=[
123456789012345678,
987654321098765432,
112233445566778899,
199887766554433221,
])
api.display_util.display_builds(
step_name="display builds",
builds=sorted(builds.values(), key=lambda b: b.id),
raise_on_failure=raise_on_failure,
)
def GenTests(api):
def build(summary_markdown=None, **kwargs):
b = api.buildbucket.ci_build_message(**kwargs)
if summary_markdown:
b.summary_markdown = summary_markdown
return b
yield (
api.status_check.test(
"mixed_with_infra_failures", status="infra_failure") +
# Exercise all status colors.
# Purple failures prioritized over red failures.
api.buildbucket.simulated_collect_output([
build(
build_id=123456789012345678,
status="SUCCESS",
),
build(
build_id=987654321098765432,
status="INFRA_FAILURE",
summary_markdown="something failed related to infra",
),
build(
build_id=112233445566778899,
status="FAILURE",
summary_markdown="something failed not related to infra",
),
build(
build_id=199887766554433221,
status="SCHEDULED",
),
]))
yield (
api.status_check.test("mixed_without_infra_failures", status="failure") +
# With just red failures, raise red.
api.buildbucket.simulated_collect_output([
build(
build_id=123456789012345678,
status="SUCCESS",
),
build(
build_id=987654321098765432,
status="FAILURE",
),
build(
build_id=112233445566778899,
status="FAILURE",
),
build(
build_id=199887766554433221,
status="SCHEDULED",
),
]))
yield (
api.status_check.test("all_passed") +
# With just red failures, raise red.
api.buildbucket.simulated_collect_output([
build(
build_id=123456789012345678,
status="SUCCESS",
),
]))