xref: /aosp_15_r20/external/crosvm/infra/recipes/presubmit.py (revision bb4ee6a4ae7042d18b07a98463b9c8b875e44b39)
1*bb4ee6a4SAndroid Build Coastguard Worker# Copyright 2022 The ChromiumOS Authors
2*bb4ee6a4SAndroid Build Coastguard Worker# Use of this source code is governed by a BSD-style license that can be
3*bb4ee6a4SAndroid Build Coastguard Worker# found in the LICENSE file.
4*bb4ee6a4SAndroid Build Coastguard Worker
5*bb4ee6a4SAndroid Build Coastguard Worker# Runs tools/presubmit on all checks within a group
6*bb4ee6a4SAndroid Build Coastguard Worker
7*bb4ee6a4SAndroid Build Coastguard Workerimport json
8*bb4ee6a4SAndroid Build Coastguard Worker
9*bb4ee6a4SAndroid Build Coastguard Workerfrom recipe_engine.recipe_api import Property
10*bb4ee6a4SAndroid Build Coastguard Workerfrom recipe_engine.post_process import DropExpectation, StatusFailure, Filter
11*bb4ee6a4SAndroid Build Coastguard Workerfrom PB.recipes.crosvm.presubmit import PresubmitProperties
12*bb4ee6a4SAndroid Build Coastguard Worker
13*bb4ee6a4SAndroid Build Coastguard WorkerDEPS = [
14*bb4ee6a4SAndroid Build Coastguard Worker    "crosvm",
15*bb4ee6a4SAndroid Build Coastguard Worker    "recipe_engine/buildbucket",
16*bb4ee6a4SAndroid Build Coastguard Worker    "recipe_engine/context",
17*bb4ee6a4SAndroid Build Coastguard Worker    "recipe_engine/json",
18*bb4ee6a4SAndroid Build Coastguard Worker    "recipe_engine/properties",
19*bb4ee6a4SAndroid Build Coastguard Worker    "recipe_engine/raw_io",
20*bb4ee6a4SAndroid Build Coastguard Worker    "recipe_engine/step",
21*bb4ee6a4SAndroid Build Coastguard Worker]
22*bb4ee6a4SAndroid Build Coastguard Worker
23*bb4ee6a4SAndroid Build Coastguard WorkerPROPERTIES = PresubmitProperties
24*bb4ee6a4SAndroid Build Coastguard Worker
25*bb4ee6a4SAndroid Build Coastguard Worker
26*bb4ee6a4SAndroid Build Coastguard Workerdef RunSteps(api, properties):
27*bb4ee6a4SAndroid Build Coastguard Worker    with api.crosvm.container_build_context():
28*bb4ee6a4SAndroid Build Coastguard Worker        result = api.step(
29*bb4ee6a4SAndroid Build Coastguard Worker            "List checks to run",
30*bb4ee6a4SAndroid Build Coastguard Worker            [
31*bb4ee6a4SAndroid Build Coastguard Worker                "vpython3",
32*bb4ee6a4SAndroid Build Coastguard Worker                api.crosvm.source_dir / "tools/presubmit",
33*bb4ee6a4SAndroid Build Coastguard Worker                "--list-checks",
34*bb4ee6a4SAndroid Build Coastguard Worker                properties.group_name,
35*bb4ee6a4SAndroid Build Coastguard Worker            ],
36*bb4ee6a4SAndroid Build Coastguard Worker            stdout=api.raw_io.output_text(),
37*bb4ee6a4SAndroid Build Coastguard Worker        )
38*bb4ee6a4SAndroid Build Coastguard Worker        check_list = result.stdout.strip().split("\n")
39*bb4ee6a4SAndroid Build Coastguard Worker        for check in check_list:
40*bb4ee6a4SAndroid Build Coastguard Worker            api.crosvm.step_in_container(
41*bb4ee6a4SAndroid Build Coastguard Worker                "tools/presubmit %s" % check, ["tools/presubmit", "--no-delta", check]
42*bb4ee6a4SAndroid Build Coastguard Worker            )
43*bb4ee6a4SAndroid Build Coastguard Worker
44*bb4ee6a4SAndroid Build Coastguard Worker
45*bb4ee6a4SAndroid Build Coastguard Workerdef GenTests(api):
46*bb4ee6a4SAndroid Build Coastguard Worker    yield (
47*bb4ee6a4SAndroid Build Coastguard Worker        api.test(
48*bb4ee6a4SAndroid Build Coastguard Worker            "basic",
49*bb4ee6a4SAndroid Build Coastguard Worker            api.buildbucket.ci_build(project="crosvm/crosvm"),
50*bb4ee6a4SAndroid Build Coastguard Worker        )
51*bb4ee6a4SAndroid Build Coastguard Worker        + api.properties(PresubmitProperties(group_name="basic"))
52*bb4ee6a4SAndroid Build Coastguard Worker        + api.step_data(
53*bb4ee6a4SAndroid Build Coastguard Worker            "List checks to run",
54*bb4ee6a4SAndroid Build Coastguard Worker            stdout=api.raw_io.output_text("check_a\ncheck_b"),
55*bb4ee6a4SAndroid Build Coastguard Worker        )
56*bb4ee6a4SAndroid Build Coastguard Worker        + api.post_process(Filter("List checks to run").include_re(r"tools/presubmit .*"))
57*bb4ee6a4SAndroid Build Coastguard Worker    )
58