diff options
author | 2023-12-07 13:10:56 -0800 | |
---|---|---|
committer | 2023-12-08 13:51:05 -0800 | |
commit | 8ff105860d20f2ccbb8d8044bf562f94100b7f6a (patch) | |
tree | b01575cd628eb36807b7ca274de28fd6a1971e17 /bp2build/apex_conversion_test.go | |
parent | e51c6e4109e8063e54cf7d8ced1b7da7f9359c34 (diff) |
Remove ConvertWithBp2build implementations
Remove the ConvertWithBp2build implementations from all the module
types, along with the related code.
Bug: 315353489
Test: m blueprint_tests
Change-Id: I212672286686a318893bc7348ddd5a5ec51e77a7
Diffstat (limited to 'bp2build/apex_conversion_test.go')
-rw-r--r-- | bp2build/apex_conversion_test.go | 1562 |
1 files changed, 0 insertions, 1562 deletions
diff --git a/bp2build/apex_conversion_test.go b/bp2build/apex_conversion_test.go deleted file mode 100644 index bdb655b78..000000000 --- a/bp2build/apex_conversion_test.go +++ /dev/null @@ -1,1562 +0,0 @@ -// Copyright 2021 Google Inc. All rights reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package bp2build - -import ( - "android/soong/android" - "android/soong/apex" - "android/soong/cc" - "android/soong/etc" - "android/soong/java" - "android/soong/sh" - - "fmt" - "testing" -) - -func runApexTestCase(t *testing.T, tc Bp2buildTestCase) { - t.Helper() - RunBp2BuildTestCase(t, registerApexModuleTypes, tc) -} - -func registerApexModuleTypes(ctx android.RegistrationContext) { - // CC module types needed as they can be APEX dependencies - cc.RegisterCCBuildComponents(ctx) - - ctx.RegisterModuleType("sh_binary", sh.ShBinaryFactory) - ctx.RegisterModuleType("cc_binary", cc.BinaryFactory) - ctx.RegisterModuleType("cc_library", cc.LibraryFactory) - ctx.RegisterModuleType("apex_key", apex.ApexKeyFactory) - ctx.RegisterModuleType("android_app_certificate", java.AndroidAppCertificateFactory) - ctx.RegisterModuleType("filegroup", android.FileGroupFactory) - ctx.RegisterModuleType("prebuilt_etc", etc.PrebuiltEtcFactory) - ctx.RegisterModuleType("cc_test", cc.TestFactory) -} - -func runOverrideApexTestCase(t *testing.T, tc Bp2buildTestCase) { - t.Helper() - RunBp2BuildTestCase(t, registerOverrideApexModuleTypes, tc) -} - -func registerOverrideApexModuleTypes(ctx android.RegistrationContext) { - // CC module types needed as they can be APEX dependencies - cc.RegisterCCBuildComponents(ctx) - - ctx.RegisterModuleType("sh_binary", sh.ShBinaryFactory) - ctx.RegisterModuleType("cc_binary", cc.BinaryFactory) - ctx.RegisterModuleType("cc_library", cc.LibraryFactory) - ctx.RegisterModuleType("apex_key", apex.ApexKeyFactory) - ctx.RegisterModuleType("apex_test", apex.TestApexBundleFactory) - ctx.RegisterModuleType("android_app_certificate", java.AndroidAppCertificateFactory) - ctx.RegisterModuleType("filegroup", android.FileGroupFactory) - ctx.RegisterModuleType("apex", apex.BundleFactory) - ctx.RegisterModuleType("apex_defaults", apex.DefaultsFactory) - ctx.RegisterModuleType("prebuilt_etc", etc.PrebuiltEtcFactory) - ctx.RegisterModuleType("soong_config_module_type", android.SoongConfigModuleTypeFactory) - ctx.RegisterModuleType("soong_config_string_variable", android.SoongConfigStringVariableDummyFactory) -} - -func TestApexBundleSimple(t *testing.T) { - runApexTestCase(t, Bp2buildTestCase{ - Description: "apex - example with all props, file_context is a module in same Android.bp", - ModuleTypeUnderTest: "apex", - ModuleTypeUnderTestFactory: apex.BundleFactory, - Filesystem: map[string]string{}, - StubbedBuildDefinitions: []string{"com.android.apogee.key", "com.android.apogee.certificate", "native_shared_lib_1", "native_shared_lib_2", - "prebuilt_1", "prebuilt_2", "com.android.apogee-file_contexts", "cc_binary_1", "sh_binary_2"}, - Blueprint: ` -apex_key { - name: "com.android.apogee.key", - public_key: "com.android.apogee.avbpubkey", - private_key: "com.android.apogee.pem", -} - -android_app_certificate { - name: "com.android.apogee.certificate", - certificate: "com.android.apogee", -} - -cc_library { - name: "native_shared_lib_1", -} - -cc_library { - name: "native_shared_lib_2", -} - -prebuilt_etc { - name: "prebuilt_1", -} - -prebuilt_etc { - name: "prebuilt_2", -} - -filegroup { - name: "com.android.apogee-file_contexts", - srcs: [ - "com.android.apogee-file_contexts", - ], -} - -cc_binary { name: "cc_binary_1"} -sh_binary { name: "sh_binary_2", src: "foo.sh"} - -apex { - name: "com.android.apogee", - manifest: "apogee_manifest.json", - androidManifest: "ApogeeAndroidManifest.xml", - apex_available_name: "apogee_apex_name", - file_contexts: ":com.android.apogee-file_contexts", - min_sdk_version: "29", - key: "com.android.apogee.key", - certificate: ":com.android.apogee.certificate", - updatable: false, - installable: false, - compressible: false, - native_shared_libs: [ - "native_shared_lib_1", - "native_shared_lib_2", - ], - binaries: [ - "cc_binary_1", - "sh_binary_2", - ], - prebuilts: [ - "prebuilt_1", - "prebuilt_2", - ], - package_name: "com.android.apogee.test.package", - logging_parent: "logging.parent", - variant_version: "3", -} -`, - ExpectedBazelTargets: []string{ - MakeBazelTarget("apex", "com.android.apogee", AttrNameToString{ - "android_manifest": `"ApogeeAndroidManifest.xml"`, - "apex_available_name": `"apogee_apex_name"`, - "binaries": `[ - ":cc_binary_1", - ":sh_binary_2", - ]`, - "certificate": `":com.android.apogee.certificate"`, - "file_contexts": `":com.android.apogee-file_contexts"`, - "installable": "False", - "key": `":com.android.apogee.key"`, - "manifest": `"apogee_manifest.json"`, - "min_sdk_version": `"29"`, - "native_shared_libs_32": `select({ - "//build/bazel_common_rules/platforms/arch:arm": [ - ":native_shared_lib_1", - ":native_shared_lib_2", - ], - "//build/bazel_common_rules/platforms/arch:x86": [ - ":native_shared_lib_1", - ":native_shared_lib_2", - ], - "//conditions:default": [], - })`, - "native_shared_libs_64": `select({ - "//build/bazel_common_rules/platforms/arch:arm64": [ - ":native_shared_lib_1", - ":native_shared_lib_2", - ], - "//build/bazel_common_rules/platforms/arch:x86_64": [ - ":native_shared_lib_1", - ":native_shared_lib_2", - ], - "//conditions:default": [], - })`, - "prebuilts": `[ - ":prebuilt_1", - ":prebuilt_2", - ]`, - "updatable": "False", - "compressible": "False", - "package_name": `"com.android.apogee.test.package"`, - "logging_parent": `"logging.parent"`, - "variant_version": `"3"`, - }), - }}) -} - -func TestApexBundleSimple_fileContextsInAnotherAndroidBp(t *testing.T) { - runApexTestCase(t, Bp2buildTestCase{ - Description: "apex - file contexts is a module in another Android.bp", - ModuleTypeUnderTest: "apex", - ModuleTypeUnderTestFactory: apex.BundleFactory, - StubbedBuildDefinitions: []string{"//a/b:com.android.apogee-file_contexts"}, - Filesystem: map[string]string{ - "a/b/Android.bp": ` -filegroup { - name: "com.android.apogee-file_contexts", - srcs: [ - "com.android.apogee-file_contexts", - ], -} -`, - }, - Blueprint: ` -apex { - name: "com.android.apogee", - file_contexts: ":com.android.apogee-file_contexts", -} -`, - ExpectedBazelTargets: []string{ - MakeBazelTarget("apex", "com.android.apogee", AttrNameToString{ - "file_contexts": `"//a/b:com.android.apogee-file_contexts"`, - "manifest": `"apex_manifest.json"`, - }), - }}) -} - -func TestApexBundleSimple_fileContextsIsFile(t *testing.T) { - runApexTestCase(t, Bp2buildTestCase{ - Description: "apex - file contexts is a file", - ModuleTypeUnderTest: "apex", - ModuleTypeUnderTestFactory: apex.BundleFactory, - Filesystem: map[string]string{}, - Blueprint: ` -apex { - name: "com.android.apogee", - file_contexts: "file_contexts_file", -} -`, - ExpectedBazelTargets: []string{ - MakeBazelTarget("apex", "com.android.apogee", AttrNameToString{ - "file_contexts": `"file_contexts_file"`, - "manifest": `"apex_manifest.json"`, - }), - }}) -} - -func TestApexBundleSimple_fileContextsIsNotSpecified(t *testing.T) { - runApexTestCase(t, Bp2buildTestCase{ - Description: "apex - file contexts is not specified", - ModuleTypeUnderTest: "apex", - ModuleTypeUnderTestFactory: apex.BundleFactory, - StubbedBuildDefinitions: []string{"//system/sepolicy/apex:com.android.apogee-file_contexts"}, - Filesystem: map[string]string{ - "system/sepolicy/apex/Android.bp": ` -filegroup { - name: "com.android.apogee-file_contexts", - srcs: [ - "com.android.apogee-file_contexts", - ], -} -`, - }, - Blueprint: ` -apex { - name: "com.android.apogee", -} -`, - ExpectedBazelTargets: []string{ - MakeBazelTarget("apex", "com.android.apogee", AttrNameToString{ - "file_contexts": `"//system/sepolicy/apex:com.android.apogee-file_contexts"`, - "manifest": `"apex_manifest.json"`, - }), - }}) -} - -func TestApexBundleCompileMultilibBoth(t *testing.T) { - runApexTestCase(t, Bp2buildTestCase{ - Description: "apex - example with compile_multilib=both", - ModuleTypeUnderTest: "apex", - ModuleTypeUnderTestFactory: apex.BundleFactory, - StubbedBuildDefinitions: append(multilibStubNames(), "//system/sepolicy/apex:com.android.apogee-file_contexts"), - Filesystem: map[string]string{ - "system/sepolicy/apex/Android.bp": ` -filegroup { - name: "com.android.apogee-file_contexts", - srcs: [ "apogee-file_contexts", ], -} -`, - }, - Blueprint: createMultilibBlueprint(`compile_multilib: "both",`), - ExpectedBazelTargets: []string{ - MakeBazelTarget("apex", "com.android.apogee", AttrNameToString{ - "native_shared_libs_32": `[ - ":unnested_native_shared_lib", - ":native_shared_lib_for_both", - ":native_shared_lib_for_lib32", - ] + select({ - "//build/bazel_common_rules/platforms/arch:arm": [":native_shared_lib_for_first"], - "//build/bazel_common_rules/platforms/arch:x86": [":native_shared_lib_for_first"], - "//conditions:default": [], - })`, - "native_shared_libs_64": `select({ - "//build/bazel_common_rules/platforms/arch:arm64": [ - ":unnested_native_shared_lib", - ":native_shared_lib_for_both", - ":native_shared_lib_for_lib64", - ":native_shared_lib_for_first", - ], - "//build/bazel_common_rules/platforms/arch:x86_64": [ - ":unnested_native_shared_lib", - ":native_shared_lib_for_both", - ":native_shared_lib_for_lib64", - ":native_shared_lib_for_first", - ], - "//conditions:default": [], - })`, - "file_contexts": `"//system/sepolicy/apex:com.android.apogee-file_contexts"`, - "manifest": `"apex_manifest.json"`, - }), - }}) -} - -func TestApexBundleCompileMultilibFirstAndDefaultValue(t *testing.T) { - expectedBazelTargets := []string{ - MakeBazelTarget("apex", "com.android.apogee", AttrNameToString{ - "native_shared_libs_32": `select({ - "//build/bazel_common_rules/platforms/arch:arm": [ - ":unnested_native_shared_lib", - ":native_shared_lib_for_both", - ":native_shared_lib_for_lib32", - ":native_shared_lib_for_first", - ], - "//build/bazel_common_rules/platforms/arch:x86": [ - ":unnested_native_shared_lib", - ":native_shared_lib_for_both", - ":native_shared_lib_for_lib32", - ":native_shared_lib_for_first", - ], - "//conditions:default": [], - })`, - "native_shared_libs_64": `select({ - "//build/bazel_common_rules/platforms/arch:arm64": [ - ":unnested_native_shared_lib", - ":native_shared_lib_for_both", - ":native_shared_lib_for_lib64", - ":native_shared_lib_for_first", - ], - "//build/bazel_common_rules/platforms/arch:x86_64": [ - ":unnested_native_shared_lib", - ":native_shared_lib_for_both", - ":native_shared_lib_for_lib64", - ":native_shared_lib_for_first", - ], - "//conditions:default": [], - })`, - "file_contexts": `"//system/sepolicy/apex:com.android.apogee-file_contexts"`, - "manifest": `"apex_manifest.json"`, - }), - } - - // "first" is the default value of compile_multilib prop so `compile_multilib_: "first"` and unset compile_multilib - // should result to the same bp2build output - compileMultiLibPropValues := []string{`compile_multilib: "first",`, ""} - for _, compileMultiLibProp := range compileMultiLibPropValues { - descriptionSuffix := compileMultiLibProp - if descriptionSuffix == "" { - descriptionSuffix = "compile_multilib unset" - } - runApexTestCase(t, Bp2buildTestCase{ - Description: "apex - example with " + compileMultiLibProp, - ModuleTypeUnderTest: "apex", - ModuleTypeUnderTestFactory: apex.BundleFactory, - StubbedBuildDefinitions: append(multilibStubNames(), "//system/sepolicy/apex:com.android.apogee-file_contexts"), - Filesystem: map[string]string{ - "system/sepolicy/apex/Android.bp": ` - filegroup { - name: "com.android.apogee-file_contexts", - srcs: [ "apogee-file_contexts", ], - } - `, - }, - Blueprint: createMultilibBlueprint(compileMultiLibProp), - ExpectedBazelTargets: expectedBazelTargets, - }) - } -} - -func TestApexBundleCompileMultilib32(t *testing.T) { - runApexTestCase(t, Bp2buildTestCase{ - Description: "apex - example with compile_multilib=32", - ModuleTypeUnderTest: "apex", - ModuleTypeUnderTestFactory: apex.BundleFactory, - StubbedBuildDefinitions: append(multilibStubNames(), "//system/sepolicy/apex:com.android.apogee-file_contexts"), - Filesystem: map[string]string{ - "system/sepolicy/apex/Android.bp": ` -filegroup { - name: "com.android.apogee-file_contexts", - srcs: [ "apogee-file_contexts", ], -} -`, - }, - Blueprint: createMultilibBlueprint(`compile_multilib: "32",`), - ExpectedBazelTargets: []string{ - MakeBazelTarget("apex", "com.android.apogee", AttrNameToString{ - "native_shared_libs_32": `[ - ":unnested_native_shared_lib", - ":native_shared_lib_for_both", - ":native_shared_lib_for_lib32", - ] + select({ - "//build/bazel_common_rules/platforms/arch:arm": [":native_shared_lib_for_first"], - "//build/bazel_common_rules/platforms/arch:x86": [":native_shared_lib_for_first"], - "//conditions:default": [], - })`, - "file_contexts": `"//system/sepolicy/apex:com.android.apogee-file_contexts"`, - "manifest": `"apex_manifest.json"`, - }), - }}) -} - -func TestApexBundleCompileMultilib64(t *testing.T) { - runApexTestCase(t, Bp2buildTestCase{ - Description: "apex - example with compile_multilib=64", - ModuleTypeUnderTest: "apex", - ModuleTypeUnderTestFactory: apex.BundleFactory, - StubbedBuildDefinitions: append(multilibStubNames(), "//system/sepolicy/apex:com.android.apogee-file_contexts"), - Filesystem: map[string]string{ - "system/sepolicy/apex/Android.bp": ` -filegroup { - name: "com.android.apogee-file_contexts", - srcs: [ "apogee-file_contexts", ], -} -`, - }, - Blueprint: createMultilibBlueprint(`compile_multilib: "64",`), - ExpectedBazelTargets: []string{ - MakeBazelTarget("apex", "com.android.apogee", AttrNameToString{ - "native_shared_libs_64": `select({ - "//build/bazel_common_rules/platforms/arch:arm64": [ - ":unnested_native_shared_lib", - ":native_shared_lib_for_both", - ":native_shared_lib_for_lib64", - ":native_shared_lib_for_first", - ], - "//build/bazel_common_rules/platforms/arch:x86_64": [ - ":unnested_native_shared_lib", - ":native_shared_lib_for_both", - ":native_shared_lib_for_lib64", - ":native_shared_lib_for_first", - ], - "//conditions:default": [], - })`, - "file_contexts": `"//system/sepolicy/apex:com.android.apogee-file_contexts"`, - "manifest": `"apex_manifest.json"`, - }), - }}) -} - -func multilibStubNames() []string { - return []string{"native_shared_lib_for_both", "native_shared_lib_for_first", "native_shared_lib_for_lib32", "native_shared_lib_for_lib64", - "native_shared_lib_for_lib64", "unnested_native_shared_lib"} -} - -func createMultilibBlueprint(compile_multilib string) string { - return fmt.Sprintf(` -cc_library { - name: "native_shared_lib_for_both", -} - -cc_library { - name: "native_shared_lib_for_first", -} - -cc_library { - name: "native_shared_lib_for_lib32", -} - -cc_library { - name: "native_shared_lib_for_lib64", -} - -cc_library { - name: "unnested_native_shared_lib", -} - -apex { - name: "com.android.apogee", - %s - native_shared_libs: ["unnested_native_shared_lib"], - multilib: { - both: { - native_shared_libs: [ - "native_shared_lib_for_both", - ], - }, - first: { - native_shared_libs: [ - "native_shared_lib_for_first", - ], - }, - lib32: { - native_shared_libs: [ - "native_shared_lib_for_lib32", - ], - }, - lib64: { - native_shared_libs: [ - "native_shared_lib_for_lib64", - ], - }, - }, -}`, compile_multilib) -} - -func TestApexBundleDefaultPropertyValues(t *testing.T) { - runApexTestCase(t, Bp2buildTestCase{ - Description: "apex - default property values", - ModuleTypeUnderTest: "apex", - ModuleTypeUnderTestFactory: apex.BundleFactory, - StubbedBuildDefinitions: []string{"//system/sepolicy/apex:com.android.apogee-file_contexts"}, - Filesystem: map[string]string{ - "system/sepolicy/apex/Android.bp": ` -filegroup { - name: "com.android.apogee-file_contexts", - srcs: [ "apogee-file_contexts", ], -} -`, - }, - Blueprint: ` -apex { - name: "com.android.apogee", - manifest: "apogee_manifest.json", -} -`, - ExpectedBazelTargets: []string{MakeBazelTarget("apex", "com.android.apogee", AttrNameToString{ - "manifest": `"apogee_manifest.json"`, - "file_contexts": `"//system/sepolicy/apex:com.android.apogee-file_contexts"`, - }), - }}) -} - -func TestApexBundleHasBazelModuleProps(t *testing.T) { - runApexTestCase(t, Bp2buildTestCase{ - Description: "apex - has bazel module props", - ModuleTypeUnderTest: "apex", - ModuleTypeUnderTestFactory: apex.BundleFactory, - StubbedBuildDefinitions: []string{"//system/sepolicy/apex:apogee-file_contexts"}, - Filesystem: map[string]string{ - "system/sepolicy/apex/Android.bp": ` -filegroup { - name: "apogee-file_contexts", - srcs: [ "apogee-file_contexts", ], -} -`, - }, - Blueprint: ` -apex { - name: "apogee", - manifest: "manifest.json", - bazel_module: { bp2build_available: true }, -} -`, - ExpectedBazelTargets: []string{MakeBazelTarget("apex", "apogee", AttrNameToString{ - "manifest": `"manifest.json"`, - "file_contexts": `"//system/sepolicy/apex:apogee-file_contexts"`, - }), - }}) -} - -func TestBp2BuildOverrideApex(t *testing.T) { - runOverrideApexTestCase(t, Bp2buildTestCase{ - Description: "override_apex", - ModuleTypeUnderTest: "override_apex", - ModuleTypeUnderTestFactory: apex.OverrideApexFactory, - Filesystem: map[string]string{}, - StubbedBuildDefinitions: []string{"com.android.apogee.key", "com.android.apogee.certificate", "native_shared_lib_1", - "native_shared_lib_2", "prebuilt_1", "prebuilt_2", "com.android.apogee-file_contexts", "cc_binary_1", - "sh_binary_2", "com.android.apogee", "com.google.android.apogee.key", "com.google.android.apogee.certificate"}, - Blueprint: ` -apex_key { - name: "com.android.apogee.key", - public_key: "com.android.apogee.avbpubkey", - private_key: "com.android.apogee.pem", -} - -android_app_certificate { - name: "com.android.apogee.certificate", - certificate: "com.android.apogee", -} - -cc_library { - name: "native_shared_lib_1", -} - -cc_library { - name: "native_shared_lib_2", -} - -prebuilt_etc { - name: "prebuilt_1", -} - -prebuilt_etc { - name: "prebuilt_2", -} - -filegroup { - name: "com.android.apogee-file_contexts", - srcs: [ - "com.android.apogee-file_contexts", - ], -} - -cc_binary { name: "cc_binary_1" } -sh_binary { name: "sh_binary_2", src: "foo.sh"} - -apex { - name: "com.android.apogee", - manifest: "apogee_manifest.json", - androidManifest: "ApogeeAndroidManifest.xml", - file_contexts: ":com.android.apogee-file_contexts", - min_sdk_version: "29", - key: "com.android.apogee.key", - certificate: ":com.android.apogee.certificate", - updatable: false, - installable: false, - compressible: false, - native_shared_libs: [ - "native_shared_lib_1", - "native_shared_lib_2", - ], - binaries: [ - "cc_binary_1", - "sh_binary_2", - ], - prebuilts: [ - "prebuilt_1", - "prebuilt_2", - ], -} - -apex_key { - name: "com.google.android.apogee.key", - public_key: "com.google.android.apogee.avbpubkey", - private_key: "com.google.android.apogee.pem", -} - -android_app_certificate { - name: "com.google.android.apogee.certificate", - certificate: "com.google.android.apogee", -} - -override_apex { - name: "com.google.android.apogee", - base: ":com.android.apogee", - key: "com.google.android.apogee.key", - certificate: ":com.google.android.apogee.certificate", - prebuilts: [], - compressible: true, -} -`, - ExpectedBazelTargets: []string{ - MakeBazelTarget("apex", "com.google.android.apogee", AttrNameToString{ - "android_manifest": `"ApogeeAndroidManifest.xml"`, - "base_apex_name": `"com.android.apogee"`, - "binaries": `[ - ":cc_binary_1", - ":sh_binary_2", - ]`, - "certificate": `":com.google.android.apogee.certificate"`, - "file_contexts": `":com.android.apogee-file_contexts"`, - "installable": "False", - "key": `":com.google.android.apogee.key"`, - "manifest": `"apogee_manifest.json"`, - "min_sdk_version": `"29"`, - "native_shared_libs_32": `select({ - "//build/bazel_common_rules/platforms/arch:arm": [ - ":native_shared_lib_1", - ":native_shared_lib_2", - ], - "//build/bazel_common_rules/platforms/arch:x86": [ - ":native_shared_lib_1", - ":native_shared_lib_2", - ], - "//conditions:default": [], - })`, - "native_shared_libs_64": `select({ - "//build/bazel_common_rules/platforms/arch:arm64": [ - ":native_shared_lib_1", - ":native_shared_lib_2", - ], - "//build/bazel_common_rules/platforms/arch:x86_64": [ - ":native_shared_lib_1", - ":native_shared_lib_2", - ], - "//conditions:default": [], - })`, - "prebuilts": `[]`, - "updatable": "False", - "compressible": "True", - }), - }}) -} - -func TestOverrideApexTest(t *testing.T) { - runOverrideApexTestCase(t, Bp2buildTestCase{ - Description: "override_apex", - ModuleTypeUnderTest: "override_apex", - ModuleTypeUnderTestFactory: apex.OverrideApexFactory, - Filesystem: map[string]string{}, - StubbedBuildDefinitions: []string{"com.android.apogee.certificate", "native_shared_lib_1", - "prebuilt_1", "com.android.apogee-file_contexts", "cc_binary_1", "sh_binary_2", - "com.android.apogee", "com.google.android.apogee.key", "com.google.android.apogee.certificate", "com.android.apogee.key"}, - Blueprint: ` -apex_key { - name: "com.android.apogee.key", - public_key: "com.android.apogee.avbpubkey", - private_key: "com.android.apogee.pem", -} - -android_app_certificate { - name: "com.android.apogee.certificate", - certificate: "com.android.apogee", -} - -cc_library { - name: "native_shared_lib_1", -} - -prebuilt_etc { - name: "prebuilt_1", -} - -filegroup { - name: "com.android.apogee-file_contexts", - srcs: [ - "com.android.apogee-file_contexts", - ], -} - -cc_binary { name: "cc_binary_1"} -sh_binary { name: "sh_binary_2", src: "foo.sh"} - -apex_test { - name: "com.android.apogee", - manifest: "apogee_manifest.json", - androidManifest: "ApogeeAndroidManifest.xml", - file_contexts: ":com.android.apogee-file_contexts", - min_sdk_version: "29", - key: "com.android.apogee.key", - certificate: ":com.android.apogee.certificate", - updatable: false, - installable: false, - compressible: false, - native_shared_libs: [ - "native_shared_lib_1", - ], - binaries: [ - "cc_binary_1", - "sh_binary_2", - ], - prebuilts: [ - "prebuilt_1", - ], -} - -apex_key { - name: "com.google.android.apogee.key", - public_key: "com.google.android.apogee.avbpubkey", - private_key: "com.google.android.apogee.pem", -} - -android_app_certificate { - name: "com.google.android.apogee.certificate", - certificate: "com.google.android.apogee", -} - -override_apex { - name: "com.google.android.apogee", - base: ":com.android.apogee", - key: "com.google.android.apogee.key", - certificate: ":com.google.android.apogee.certificate", - prebuilts: [], - compressible: true, -} -`, - ExpectedBazelTargets: []string{ - MakeBazelTarget("apex", "com.google.android.apogee", AttrNameToString{ - "android_manifest": `"ApogeeAndroidManifest.xml"`, - "base_apex_name": `"com.android.apogee"`, - "binaries": `[ - ":cc_binary_1", - ":sh_binary_2", - ]`, - "certificate": `":com.google.android.apogee.certificate"`, - "file_contexts": `":com.android.apogee-file_contexts"`, - "installable": "False", - "key": `":com.google.android.apogee.key"`, - "manifest": `"apogee_manifest.json"`, - "min_sdk_version": `"29"`, - "native_shared_libs_32": `select({ - "//build/bazel_common_rules/platforms/arch:arm": [":native_shared_lib_1"], - "//build/bazel_common_rules/platforms/arch:x86": [":native_shared_lib_1"], - "//conditions:default": [], - })`, - "native_shared_libs_64": `select({ - "//build/bazel_common_rules/platforms/arch:arm64": [":native_shared_lib_1"], - "//build/bazel_common_rules/platforms/arch:x86_64": [":native_shared_lib_1"], - "//conditions:default": [], - })`, - "testonly": "True", - "prebuilts": `[]`, - "updatable": "False", - "compressible": "True", - }), - }}) -} - -func TestApexBundleSimple_manifestIsEmpty_baseApexOverrideApexInDifferentAndroidBp(t *testing.T) { - runOverrideApexTestCase(t, Bp2buildTestCase{ - Description: "override_apex - manifest of base apex is empty, base apex and override_apex is in different Android.bp", - ModuleTypeUnderTest: "override_apex", - ModuleTypeUnderTestFactory: apex.OverrideApexFactory, - StubbedBuildDefinitions: []string{"//a/b:com.android.apogee", "//system/sepolicy/apex:com.android.apogee-file_contexts"}, - Filesystem: map[string]string{ - "system/sepolicy/apex/Android.bp": ` -filegroup { - name: "com.android.apogee-file_contexts", - srcs: [ "apogee-file_contexts", ], -}`, - "a/b/Android.bp": ` -apex { - name: "com.android.apogee", -} -`, - }, - Blueprint: ` -override_apex { - name: "com.google.android.apogee", - base: ":com.android.apogee", -} -`, - ExpectedBazelTargets: []string{ - MakeBazelTarget("apex", "com.google.android.apogee", AttrNameToString{ - "base_apex_name": `"com.android.apogee"`, - "file_contexts": `"//system/sepolicy/apex:com.android.apogee-file_contexts"`, - "manifest": `"//a/b:apex_manifest.json"`, - }), - }}) -} - -func TestApexBundleSimple_manifestIsSet_baseApexOverrideApexInDifferentAndroidBp(t *testing.T) { - runOverrideApexTestCase(t, Bp2buildTestCase{ - Description: "override_apex - manifest of base apex is set, base apex and override_apex is in different Android.bp", - ModuleTypeUnderTest: "override_apex", - ModuleTypeUnderTestFactory: apex.OverrideApexFactory, - StubbedBuildDefinitions: []string{"//a/b:com.android.apogee", "//system/sepolicy/apex:com.android.apogee-file_contexts"}, - Filesystem: map[string]string{ - "system/sepolicy/apex/Android.bp": ` -filegroup { - name: "com.android.apogee-file_contexts", - srcs: [ "apogee-file_contexts", ], -}`, - "a/b/Android.bp": ` -apex { - name: "com.android.apogee", - manifest: "apogee_manifest.json", -} -`, - }, - Blueprint: ` -override_apex { - name: "com.google.android.apogee", - base: ":com.android.apogee", -} -`, - ExpectedBazelTargets: []string{ - MakeBazelTarget("apex", "com.google.android.apogee", AttrNameToString{ - "base_apex_name": `"com.android.apogee"`, - "file_contexts": `"//system/sepolicy/apex:com.android.apogee-file_contexts"`, - "manifest": `"//a/b:apogee_manifest.json"`, - }), - }}) -} - -func TestApexBundleSimple_manifestIsEmpty_baseApexOverrideApexInSameAndroidBp(t *testing.T) { - runOverrideApexTestCase(t, Bp2buildTestCase{ - Description: "override_apex - manifest of base apex is empty, base apex and override_apex is in same Android.bp", - ModuleTypeUnderTest: "override_apex", - ModuleTypeUnderTestFactory: apex.OverrideApexFactory, - StubbedBuildDefinitions: []string{"com.android.apogee", "//system/sepolicy/apex:com.android.apogee-file_contexts"}, - Filesystem: map[string]string{ - "system/sepolicy/apex/Android.bp": ` -filegroup { - name: "com.android.apogee-file_contexts", - srcs: [ "apogee-file_contexts", ], -}`, - }, - Blueprint: ` -apex { - name: "com.android.apogee", -} - -override_apex { - name: "com.google.android.apogee", - base: ":com.android.apogee", -} -`, - ExpectedBazelTargets: []string{ - MakeBazelTarget("apex", "com.google.android.apogee", AttrNameToString{ - "base_apex_name": `"com.android.apogee"`, - "file_contexts": `"//system/sepolicy/apex:com.android.apogee-file_contexts"`, - "manifest": `"apex_manifest.json"`, - }), - }}) -} - -func TestApexBundleSimple_manifestIsSet_baseApexOverrideApexInSameAndroidBp(t *testing.T) { - runOverrideApexTestCase(t, Bp2buildTestCase{ - Description: "override_apex - manifest of base apex is set, base apex and override_apex is in same Android.bp", - ModuleTypeUnderTest: "override_apex", - ModuleTypeUnderTestFactory: apex.OverrideApexFactory, - StubbedBuildDefinitions: []string{"com.android.apogee", "//system/sepolicy/apex:com.android.apogee-file_contexts"}, - Filesystem: map[string]string{ - "system/sepolicy/apex/Android.bp": ` -filegroup { - name: "com.android.apogee-file_contexts", - srcs: [ "apogee-file_contexts", ], -}`, - }, - Blueprint: ` -apex { - name: "com.android.apogee", - manifest: "apogee_manifest.json", -} - -override_apex { - name: "com.google.android.apogee", - base: ":com.android.apogee", -} -`, - ExpectedBazelTargets: []string{ - MakeBazelTarget("apex", "com.google.android.apogee", AttrNameToString{ - "base_apex_name": `"com.android.apogee"`, - "file_contexts": `"//system/sepolicy/apex:com.android.apogee-file_contexts"`, - "manifest": `"apogee_manifest.json"`, - }), - }}) -} - -func TestApexBundleSimple_packageNameOverride(t *testing.T) { - runOverrideApexTestCase(t, Bp2buildTestCase{ - Description: "override_apex - override package name", - ModuleTypeUnderTest: "override_apex", - ModuleTypeUnderTestFactory: apex.OverrideApexFactory, - StubbedBuildDefinitions: []string{"com.android.apogee", "//system/sepolicy/apex:com.android.apogee-file_contexts"}, - Filesystem: map[string]string{ - "system/sepolicy/apex/Android.bp": ` -filegroup { - name: "com.android.apogee-file_contexts", - srcs: [ "apogee-file_contexts", ], -}`, - }, - Blueprint: ` -apex { - name: "com.android.apogee", -} - -override_apex { - name: "com.google.android.apogee", - base: ":com.android.apogee", - package_name: "com.google.android.apogee", -} -`, - ExpectedBazelTargets: []string{ - MakeBazelTarget("apex", "com.google.android.apogee", AttrNameToString{ - "base_apex_name": `"com.android.apogee"`, - "file_contexts": `"//system/sepolicy/apex:com.android.apogee-file_contexts"`, - "manifest": `"apex_manifest.json"`, - "package_name": `"com.google.android.apogee"`, - }), - }}) -} - -func TestApexBundleSimple_NoPrebuiltsOverride(t *testing.T) { - runOverrideApexTestCase(t, Bp2buildTestCase{ - Description: "override_apex - no override", - ModuleTypeUnderTest: "override_apex", - ModuleTypeUnderTestFactory: apex.OverrideApexFactory, - StubbedBuildDefinitions: []string{"prebuilt_file", "com.android.apogee", "//system/sepolicy/apex:com.android.apogee-file_contexts"}, - Filesystem: map[string]string{ - "system/sepolicy/apex/Android.bp": ` -filegroup { - name: "com.android.apogee-file_contexts", - srcs: [ "apogee-file_contexts", ], -}`, - }, - Blueprint: ` -prebuilt_etc { - name: "prebuilt_file", -} - -apex { - name: "com.android.apogee", - prebuilts: ["prebuilt_file"] -} - -override_apex { - name: "com.google.android.apogee", - base: ":com.android.apogee", -} -`, - ExpectedBazelTargets: []string{ - MakeBazelTarget("apex", "com.google.android.apogee", AttrNameToString{ - "base_apex_name": `"com.android.apogee"`, - "file_contexts": `"//system/sepolicy/apex:com.android.apogee-file_contexts"`, - "manifest": `"apex_manifest.json"`, - "prebuilts": `[":prebuilt_file"]`, - }), - }}) -} - -func TestApexBundleSimple_PrebuiltsOverride(t *testing.T) { - runOverrideApexTestCase(t, Bp2buildTestCase{ - Description: "override_apex - ooverride", - ModuleTypeUnderTest: "override_apex", - ModuleTypeUnderTestFactory: apex.OverrideApexFactory, - StubbedBuildDefinitions: []string{"prebuilt_file", "prebuilt_file2", "com.android.apogee", "//system/sepolicy/apex:com.android.apogee-file_contexts"}, - Filesystem: map[string]string{ - "system/sepolicy/apex/Android.bp": ` -filegroup { - name: "com.android.apogee-file_contexts", - srcs: [ "apogee-file_contexts", ], -}`, - }, - Blueprint: ` -prebuilt_etc { - name: "prebuilt_file", -} - -prebuilt_etc { - name: "prebuilt_file2", -} - -apex { - name: "com.android.apogee", - prebuilts: ["prebuilt_file"] -} - -override_apex { - name: "com.google.android.apogee", - base: ":com.android.apogee", - prebuilts: ["prebuilt_file2"] -} -`, - ExpectedBazelTargets: []string{ - MakeBazelTarget("apex", "com.google.android.apogee", AttrNameToString{ - "base_apex_name": `"com.android.apogee"`, - "file_contexts": `"//system/sepolicy/apex:com.android.apogee-file_contexts"`, - "manifest": `"apex_manifest.json"`, - "prebuilts": `[":prebuilt_file2"]`, - }), - }}) -} - -func TestApexBundleSimple_PrebuiltsOverrideEmptyList(t *testing.T) { - runOverrideApexTestCase(t, Bp2buildTestCase{ - Description: "override_apex - override with empty list", - ModuleTypeUnderTest: "override_apex", - ModuleTypeUnderTestFactory: apex.OverrideApexFactory, - StubbedBuildDefinitions: []string{"prebuilt_file", "com.android.apogee", "//system/sepolicy/apex:com.android.apogee-file_contexts"}, - Filesystem: map[string]string{ - "system/sepolicy/apex/Android.bp": ` -filegroup { - name: "com.android.apogee-file_contexts", - srcs: [ "apogee-file_contexts", ], -}`, - }, - Blueprint: ` -prebuilt_etc { - name: "prebuilt_file", -} - -apex { - name: "com.android.apogee", - prebuilts: ["prebuilt_file"] -} - -override_apex { - name: "com.google.android.apogee", - base: ":com.android.apogee", - prebuilts: [], -} -`, - ExpectedBazelTargets: []string{ - MakeBazelTarget("apex", "com.google.android.apogee", AttrNameToString{ - "base_apex_name": `"com.android.apogee"`, - "file_contexts": `"//system/sepolicy/apex:com.android.apogee-file_contexts"`, - "manifest": `"apex_manifest.json"`, - "prebuilts": `[]`, - }), - }}) -} - -func TestApexBundleSimple_NoLoggingParentOverride(t *testing.T) { - runOverrideApexTestCase(t, Bp2buildTestCase{ - Description: "override_apex - logging_parent - no override", - ModuleTypeUnderTest: "override_apex", - ModuleTypeUnderTestFactory: apex.OverrideApexFactory, - StubbedBuildDefinitions: []string{"com.android.apogee", "//system/sepolicy/apex:com.android.apogee-file_contexts"}, - Filesystem: map[string]string{ - "system/sepolicy/apex/Android.bp": ` -filegroup { - name: "com.android.apogee-file_contexts", - srcs: [ "apogee-file_contexts", ], -}`, - }, - Blueprint: ` -apex { - name: "com.android.apogee", - logging_parent: "foo.bar.baz", -} - -override_apex { - name: "com.google.android.apogee", - base: ":com.android.apogee", -} -`, - ExpectedBazelTargets: []string{ - MakeBazelTarget("apex", "com.google.android.apogee", AttrNameToString{ - "base_apex_name": `"com.android.apogee"`, - "file_contexts": `"//system/sepolicy/apex:com.android.apogee-file_contexts"`, - "manifest": `"apex_manifest.json"`, - "logging_parent": `"foo.bar.baz"`, - }), - }}) -} - -func TestApexBundleSimple_LoggingParentOverride(t *testing.T) { - runOverrideApexTestCase(t, Bp2buildTestCase{ - Description: "override_apex - logging_parent - override", - ModuleTypeUnderTest: "override_apex", - ModuleTypeUnderTestFactory: apex.OverrideApexFactory, - StubbedBuildDefinitions: []string{"com.android.apogee", "//system/sepolicy/apex:com.android.apogee-file_contexts"}, - Filesystem: map[string]string{ - "system/sepolicy/apex/Android.bp": ` -filegroup { - name: "com.android.apogee-file_contexts", - srcs: [ "apogee-file_contexts", ], -}`, - }, - Blueprint: ` -apex { - name: "com.android.apogee", - logging_parent: "foo.bar.baz", -} - -override_apex { - name: "com.google.android.apogee", - base: ":com.android.apogee", - logging_parent: "foo.bar.baz.override", -} -`, - ExpectedBazelTargets: []string{ - MakeBazelTarget("apex", "com.google.android.apogee", AttrNameToString{ - "base_apex_name": `"com.android.apogee"`, - "file_contexts": `"//system/sepolicy/apex:com.android.apogee-file_contexts"`, - "manifest": `"apex_manifest.json"`, - "logging_parent": `"foo.bar.baz.override"`, - }), - }}) -} - -func TestBp2BuildOverrideApex_CertificateNil(t *testing.T) { - runOverrideApexTestCase(t, Bp2buildTestCase{ - Description: "override_apex - don't set default certificate", - ModuleTypeUnderTest: "override_apex", - ModuleTypeUnderTestFactory: apex.OverrideApexFactory, - Filesystem: map[string]string{}, - StubbedBuildDefinitions: []string{"com.android.apogee.certificate", "com.android.apogee-file_contexts", "com.android.apogee"}, - Blueprint: ` -android_app_certificate { - name: "com.android.apogee.certificate", - certificate: "com.android.apogee", -} - -filegroup { - name: "com.android.apogee-file_contexts", - srcs: [ - "com.android.apogee-file_contexts", - ], -} - -apex { - name: "com.android.apogee", - manifest: "apogee_manifest.json", - file_contexts: ":com.android.apogee-file_contexts", - certificate: ":com.android.apogee.certificate", -} - -override_apex { - name: "com.google.android.apogee", - base: ":com.android.apogee", - // certificate is deliberately omitted, and not converted to bazel, - // because the overridden apex shouldn't be using the base apex's cert. -} -`, - ExpectedBazelTargets: []string{ - MakeBazelTarget("apex", "com.google.android.apogee", AttrNameToString{ - "base_apex_name": `"com.android.apogee"`, - "file_contexts": `":com.android.apogee-file_contexts"`, - "manifest": `"apogee_manifest.json"`, - }), - }}) -} - -func TestApexCertificateIsModule(t *testing.T) { - runApexTestCase(t, Bp2buildTestCase{ - Description: "apex - certificate is module", - ModuleTypeUnderTest: "apex", - ModuleTypeUnderTestFactory: apex.BundleFactory, - Filesystem: map[string]string{}, - StubbedBuildDefinitions: []string{"com.android.apogee-file_contexts", "com.android.apogee.certificate"}, - Blueprint: ` -android_app_certificate { - name: "com.android.apogee.certificate", - certificate: "com.android.apogee", -} - -apex { - name: "com.android.apogee", - manifest: "apogee_manifest.json", - file_contexts: ":com.android.apogee-file_contexts", - certificate: ":com.android.apogee.certificate", -} -` + simpleModule("filegroup", "com.android.apogee-file_contexts"), - ExpectedBazelTargets: []string{ - MakeBazelTarget("apex", "com.android.apogee", AttrNameToString{ - "certificate": `":com.android.apogee.certificate"`, - "file_contexts": `":com.android.apogee-file_contexts"`, - "manifest": `"apogee_manifest.json"`, - }), - }}) -} - -func TestApexWithStubLib(t *testing.T) { - runApexTestCase(t, Bp2buildTestCase{ - Description: "apex - static variant of stub lib should not have apex_available tag", - ModuleTypeUnderTest: "apex", - ModuleTypeUnderTestFactory: apex.BundleFactory, - Filesystem: map[string]string{}, - StubbedBuildDefinitions: []string{"myapex-file_contexts"}, - Blueprint: ` -cc_library{ - name: "foo", - stubs: { symbol_file: "foo.map.txt", versions: ["28", "29", "current"] }, - apex_available: ["myapex"], -} - -cc_binary{ - name: "bar", - static_libs: ["foo"], - apex_available: ["myapex"], -} - -apex { - name: "myapex", - manifest: "myapex_manifest.json", - file_contexts: ":myapex-file_contexts", - binaries: ["bar"], - native_shared_libs: ["foo"], -} -` + simpleModule("filegroup", "myapex-file_contexts"), - ExpectedBazelTargets: []string{ - MakeBazelTarget("cc_binary", "bar", AttrNameToString{ - "local_includes": `["."]`, - "deps": `[":foo_bp2build_cc_library_static"]`, - "tags": `["apex_available=myapex"]`, - }), - MakeBazelTarget("cc_library_static", "foo_bp2build_cc_library_static", AttrNameToString{ - "local_includes": `["."]`, - }), - MakeBazelTarget("cc_library_shared", "foo", AttrNameToString{ - "local_includes": `["."]`, - "stubs_symbol_file": `"foo.map.txt"`, - "tags": `["apex_available=myapex"]`, - }), - MakeBazelTarget("cc_stub_suite", "foo_stub_libs", AttrNameToString{ - "api_surface": `"module-libapi"`, - "soname": `"foo.so"`, - "source_library_label": `"//:foo"`, - "symbol_file": `"foo.map.txt"`, - "versions": `[ - "28", - "29", - "current", - ]`, - }), - MakeBazelTarget("apex", "myapex", AttrNameToString{ - "file_contexts": `":myapex-file_contexts"`, - "manifest": `"myapex_manifest.json"`, - "binaries": `[":bar"]`, - "native_shared_libs_32": `select({ - "//build/bazel_common_rules/platforms/arch:arm": [":foo"], - "//build/bazel_common_rules/platforms/arch:x86": [":foo"], - "//conditions:default": [], - })`, - "native_shared_libs_64": `select({ - "//build/bazel_common_rules/platforms/arch:arm64": [":foo"], - "//build/bazel_common_rules/platforms/arch:x86_64": [":foo"], - "//conditions:default": [], - })`, - }), - }, - }) -} - -func TestApexCertificateIsSrc(t *testing.T) { - runApexTestCase(t, Bp2buildTestCase{ - Description: "apex - certificate is src", - ModuleTypeUnderTest: "apex", - ModuleTypeUnderTestFactory: apex.BundleFactory, - Filesystem: map[string]string{}, - StubbedBuildDefinitions: []string{"com.android.apogee-file_contexts"}, - Blueprint: ` -apex { - name: "com.android.apogee", - manifest: "apogee_manifest.json", - file_contexts: ":com.android.apogee-file_contexts", - certificate: "com.android.apogee.certificate", -} -` + simpleModule("filegroup", "com.android.apogee-file_contexts"), - ExpectedBazelTargets: []string{ - MakeBazelTarget("apex", "com.android.apogee", AttrNameToString{ - "certificate_name": `"com.android.apogee.certificate"`, - "file_contexts": `":com.android.apogee-file_contexts"`, - "manifest": `"apogee_manifest.json"`, - }), - }}) -} - -func TestBp2BuildOverrideApex_CertificateIsModule(t *testing.T) { - runOverrideApexTestCase(t, Bp2buildTestCase{ - Description: "override_apex - certificate is module", - ModuleTypeUnderTest: "override_apex", - ModuleTypeUnderTestFactory: apex.OverrideApexFactory, - Filesystem: map[string]string{}, - StubbedBuildDefinitions: []string{"com.android.apogee.certificate", "com.android.apogee-file_contexts", - "com.android.apogee", "com.google.android.apogee.certificate"}, - Blueprint: ` -android_app_certificate { - name: "com.android.apogee.certificate", - certificate: "com.android.apogee", -} - -filegroup { - name: "com.android.apogee-file_contexts", - srcs: [ - "com.android.apogee-file_contexts", - ], -} - -apex { - name: "com.android.apogee", - manifest: "apogee_manifest.json", - file_contexts: ":com.android.apogee-file_contexts", - certificate: ":com.android.apogee.certificate", -} - -android_app_certificate { - name: "com.google.android.apogee.certificate", - certificate: "com.google.android.apogee", -} - -override_apex { - name: "com.google.android.apogee", - base: ":com.android.apogee", - certificate: ":com.google.android.apogee.certificate", -} -`, - ExpectedBazelTargets: []string{ - MakeBazelTarget("apex", "com.google.android.apogee", AttrNameToString{ - "base_apex_name": `"com.android.apogee"`, - "file_contexts": `":com.android.apogee-file_contexts"`, - "certificate": `":com.google.android.apogee.certificate"`, - "manifest": `"apogee_manifest.json"`, - }), - }}) -} - -func TestBp2BuildOverrideApex_CertificateIsSrc(t *testing.T) { - runOverrideApexTestCase(t, Bp2buildTestCase{ - Description: "override_apex - certificate is src", - ModuleTypeUnderTest: "override_apex", - ModuleTypeUnderTestFactory: apex.OverrideApexFactory, - Filesystem: map[string]string{}, - StubbedBuildDefinitions: []string{"com.android.apogee", "com.android.apogee.certificate", "com.android.apogee", "com.android.apogee-file_contexts"}, - Blueprint: ` -android_app_certificate { - name: "com.android.apogee.certificate", - certificate: "com.android.apogee", -} - -filegroup { - name: "com.android.apogee-file_contexts", - srcs: [ - "com.android.apogee-file_contexts", - ], -} - -apex { - name: "com.android.apogee", - manifest: "apogee_manifest.json", - file_contexts: ":com.android.apogee-file_contexts", - certificate: ":com.android.apogee.certificate", -} - -override_apex { - name: "com.google.android.apogee", - base: ":com.android.apogee", - certificate: "com.google.android.apogee.certificate", -} -`, - ExpectedBazelTargets: []string{ - MakeBazelTarget("apex", "com.google.android.apogee", AttrNameToString{ - "base_apex_name": `"com.android.apogee"`, - "file_contexts": `":com.android.apogee-file_contexts"`, - "certificate_name": `"com.google.android.apogee.certificate"`, - "manifest": `"apogee_manifest.json"`, - }), - }}) -} - -func TestApexTestBundleSimple(t *testing.T) { - runApexTestCase(t, Bp2buildTestCase{ - Description: "apex_test - simple", - ModuleTypeUnderTest: "apex_test", - ModuleTypeUnderTestFactory: apex.TestApexBundleFactory, - Filesystem: map[string]string{}, - StubbedBuildDefinitions: []string{"cc_test_1"}, - Blueprint: ` -cc_test { name: "cc_test_1"} - -apex_test { - name: "test_com.android.apogee", - file_contexts: "file_contexts_file", - tests: ["cc_test_1"], -} -`, - ExpectedBazelTargets: []string{ - MakeBazelTarget("apex", "test_com.android.apogee", AttrNameToString{ - "file_contexts": `"file_contexts_file"`, - "base_apex_name": `"com.android.apogee"`, - "manifest": `"apex_manifest.json"`, - "testonly": `True`, - "tests": `[":cc_test_1"]`, - }), - }}) -} - -func TestApexBundle_overridePlusProductVars(t *testing.T) { - // Reproduction of b/271424349 - // Tests that overriding an apex that uses product variables correctly copies the product var - // selects over to the override. - runOverrideApexTestCase(t, Bp2buildTestCase{ - Description: "apex - overriding a module that uses product vars", - ModuleTypeUnderTest: "override_apex", - ModuleTypeUnderTestFactory: apex.OverrideApexFactory, - StubbedBuildDefinitions: []string{"foo-file_contexts"}, - Blueprint: ` -soong_config_string_variable { - name: "library_linking_strategy", - values: [ - "prefer_static", - ], -} - -soong_config_module_type { - name: "library_linking_strategy_apex_defaults", - module_type: "apex_defaults", - config_namespace: "ANDROID", - variables: ["library_linking_strategy"], - properties: [ - "manifest", - "min_sdk_version", - ], -} - -library_linking_strategy_apex_defaults { - name: "higher_min_sdk_when_prefer_static", - soong_config_variables: { - library_linking_strategy: { - // Use the R min_sdk_version - prefer_static: {}, - // Override the R min_sdk_version to min_sdk_version that supports dcla - conditions_default: { - min_sdk_version: "31", - }, - }, - }, -} - -filegroup { - name: "foo-file_contexts", - srcs: [ - "com.android.apogee-file_contexts", - ], -} - -apex { - name: "foo", - defaults: ["higher_min_sdk_when_prefer_static"], - min_sdk_version: "30", - package_name: "pkg_name", - file_contexts: ":foo-file_contexts", -} -override_apex { - name: "override_foo", - base: ":foo", - package_name: "override_pkg_name", -} -`, - ExpectedBazelTargets: []string{ - MakeBazelTarget("apex", "foo", AttrNameToString{ - "file_contexts": `":foo-file_contexts"`, - "manifest": `"apex_manifest.json"`, - "min_sdk_version": `select({ - "//build/bazel/product_config/config_settings:android__library_linking_strategy__prefer_static": "30", - "//conditions:default": "31", - })`, - "package_name": `"pkg_name"`, - }), MakeBazelTarget("apex", "override_foo", AttrNameToString{ - "base_apex_name": `"foo"`, - "file_contexts": `":foo-file_contexts"`, - "manifest": `"apex_manifest.json"`, - "min_sdk_version": `select({ - "//build/bazel/product_config/config_settings:android__library_linking_strategy__prefer_static": "30", - "//conditions:default": "31", - })`, - "package_name": `"override_pkg_name"`, - }), - }}) -} - -func TestApexBundleSimple_customCannedFsConfig(t *testing.T) { - runApexTestCase(t, Bp2buildTestCase{ - Description: "apex - custom canned_fs_config", - ModuleTypeUnderTest: "apex", - ModuleTypeUnderTestFactory: apex.BundleFactory, - Filesystem: map[string]string{}, - Blueprint: ` -apex { - name: "com.android.apogee", - canned_fs_config: "custom.canned_fs_config", - file_contexts: "file_contexts_file", -} -`, - ExpectedBazelTargets: []string{ - MakeBazelTarget("apex", "com.android.apogee", AttrNameToString{ - "canned_fs_config": `"custom.canned_fs_config"`, - "file_contexts": `"file_contexts_file"`, - "manifest": `"apex_manifest.json"`, - }), - }}) -} |