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 7import json 8 9from recipe_engine.recipe_api import Property 10from recipe_engine.post_process import DropExpectation, StatusFailure, Filter 11from PB.recipes.crosvm.presubmit import PresubmitProperties 12 13DEPS = [ 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 23PROPERTIES = PresubmitProperties 24 25 26def 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 45def 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