From b9518073037aee71b0ed71cbcd930e44cde0a592 Mon Sep 17 00:00:00 2001 From: Jooyung Han Date: Fri, 22 Nov 2024 14:05:20 +0900 Subject: Add apex_test.skip_validations Run validations for apex_test modules as well. If a test apex needs to be invalid for testing, it needs to specify which validation it needs to skip. This is to prevent cases like using apex_test to avoid a certain validation, but accidentally skipping all validations. For now, host_apex_verifier/apex_sepolicy_tests can be skipped. Bug: 363090062 Test: m nothing --no-skip-soong-tests Test: mmma system/apex Change-Id: I2d14f25f579eabe92ed2bd0e28b5ed19583df99d --- apex/apex.go | 31 +++++++++++++++++++++++++++---- 1 file changed, 27 insertions(+), 4 deletions(-) (limited to 'apex/apex.go') diff --git a/apex/apex.go b/apex/apex.go index 0b56bf890..0e40d7c0e 100644 --- a/apex/apex.go +++ b/apex/apex.go @@ -434,6 +434,7 @@ type apexBundle struct { archProperties apexArchBundleProperties overridableProperties overridableProperties vndkProperties apexVndkProperties // only for apex_vndk modules + testProperties apexTestProperties // only for apex_test modules /////////////////////////////////////////////////////////////////////////////////////////// // Inputs @@ -1296,6 +1297,23 @@ func (a *apexBundle) UsePlatformApis() bool { return proptools.BoolDefault(a.properties.Platform_apis, false) } +type apexValidationType int + +const ( + hostApexVerifier apexValidationType = iota + apexSepolicyTests +) + +func (a *apexBundle) skipValidation(validationType apexValidationType) bool { + switch validationType { + case hostApexVerifier: + return proptools.Bool(a.testProperties.Skip_validations.Host_apex_verifier) + case apexSepolicyTests: + return proptools.Bool(a.testProperties.Skip_validations.Apex_sepolicy_tests) + } + panic("Unknown validation type") +} + // getCertString returns the name of the cert that should be used to sign this APEX. This is // basically from the "certificate" property, but could be overridden by the device config. func (a *apexBundle) getCertString(ctx android.BaseModuleContext) string { @@ -2427,10 +2445,14 @@ func newApexBundle() *apexBundle { return module } -func ApexBundleFactory(testApex bool) android.Module { - bundle := newApexBundle() - bundle.testApex = testApex - return bundle +type apexTestProperties struct { + // Boolean flags for validation checks. Test APEXes can turn on/off individual checks. + Skip_validations struct { + // Skips `Apex_sepolicy_tests` check if true + Apex_sepolicy_tests *bool + // Skips `Host_apex_verifier` check if true + Host_apex_verifier *bool + } } // apex_test is an APEX for testing. The difference from the ordinary apex module type is that @@ -2438,6 +2460,7 @@ func ApexBundleFactory(testApex bool) android.Module { func TestApexBundleFactory() android.Module { bundle := newApexBundle() bundle.testApex = true + bundle.AddProperties(&bundle.testProperties) return bundle } -- cgit v1.2.3-59-g8ed1b