| # 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 |
| |
| PYTHON_VERSION_COMPATIBILITY = 'PY3' |
| |
| 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", |
| ), |
| ])) |