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