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