diff options
author | 2024-11-22 14:05:20 +0900 | |
---|---|---|
committer | 2024-11-25 12:56:15 +0900 | |
commit | b9518073037aee71b0ed71cbcd930e44cde0a592 (patch) | |
tree | ab94eceee4407f25ac7b7c23dbd94ea7e38c2c07 /apex/apex.go | |
parent | 1a6f176ce066fc39574db6b7bcb69da82e579199 (diff) |
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
Diffstat (limited to 'apex/apex.go')
-rw-r--r-- | apex/apex.go | 31 |
1 files changed, 27 insertions, 4 deletions
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 } |