78cfdaa597
Moves to specifying attributes as a map, such at it is possible to add additional attributes conditionally. This is in particular useful once supporting the `enabled` property which will add `target_compatible_with` Test: go test soong tests Change-Id: Iade8eed1ce3acb1d1712a9ee3119d9ae59675624
179 lines
5.2 KiB
Go
179 lines
5.2 KiB
Go
// 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/java"
|
|
|
|
"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("cc_library", cc.LibraryFactory)
|
|
ctx.RegisterModuleType("apex_key", apex.ApexKeyFactory)
|
|
ctx.RegisterModuleType("android_app_certificate", java.AndroidAppCertificateFactory)
|
|
ctx.RegisterModuleType("filegroup", android.FileGroupFactory)
|
|
}
|
|
|
|
func TestApexBundleSimple(t *testing.T) {
|
|
runApexTestCase(t, bp2buildTestCase{
|
|
description: "apex - simple example",
|
|
moduleTypeUnderTest: "apex",
|
|
moduleTypeUnderTestFactory: apex.BundleFactory,
|
|
moduleTypeUnderTestBp2BuildMutator: apex.ApexBundleBp2Build,
|
|
filesystem: map[string]string{},
|
|
blueprint: `
|
|
apex_key {
|
|
name: "com.android.apogee.key",
|
|
public_key: "com.android.apogee.avbpubkey",
|
|
private_key: "com.android.apogee.pem",
|
|
bazel_module: { bp2build_available: false },
|
|
}
|
|
|
|
android_app_certificate {
|
|
name: "com.android.apogee.certificate",
|
|
certificate: "com.android.apogee",
|
|
bazel_module: { bp2build_available: false },
|
|
}
|
|
|
|
cc_library {
|
|
name: "native_shared_lib_1",
|
|
bazel_module: { bp2build_available: false },
|
|
}
|
|
|
|
cc_library {
|
|
name: "native_shared_lib_2",
|
|
bazel_module: { bp2build_available: false },
|
|
}
|
|
|
|
// TODO(b/194878861): Add bp2build support for prebuilt_etc
|
|
cc_library {
|
|
name: "pretend_prebuilt_1",
|
|
bazel_module: { bp2build_available: false },
|
|
}
|
|
|
|
// TODO(b/194878861): Add bp2build support for prebuilt_etc
|
|
cc_library {
|
|
name: "pretend_prebuilt_2",
|
|
bazel_module: { bp2build_available: false },
|
|
}
|
|
|
|
filegroup {
|
|
name: "com.android.apogee-file_contexts",
|
|
srcs: [
|
|
"com.android.apogee-file_contexts",
|
|
],
|
|
bazel_module: { bp2build_available: false },
|
|
}
|
|
|
|
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,
|
|
native_shared_libs: [
|
|
"native_shared_lib_1",
|
|
"native_shared_lib_2",
|
|
],
|
|
binaries: [
|
|
"binary_1",
|
|
"binary_2",
|
|
],
|
|
prebuilts: [
|
|
"pretend_prebuilt_1",
|
|
"pretend_prebuilt_2",
|
|
],
|
|
}
|
|
`,
|
|
expectedBazelTargets: []string{
|
|
makeBazelTarget("apex", "com.android.apogee", attrNameToString{
|
|
"android_manifest": `"ApogeeAndroidManifest.xml"`,
|
|
"binaries": `[
|
|
"binary_1",
|
|
"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": `[
|
|
":native_shared_lib_1",
|
|
":native_shared_lib_2",
|
|
]`,
|
|
"prebuilts": `[
|
|
":pretend_prebuilt_1",
|
|
":pretend_prebuilt_2",
|
|
]`,
|
|
"updatable": "False",
|
|
}),
|
|
}})
|
|
}
|
|
|
|
func TestApexBundleDefaultPropertyValues(t *testing.T) {
|
|
runApexTestCase(t, bp2buildTestCase{
|
|
description: "apex - default property values",
|
|
moduleTypeUnderTest: "apex",
|
|
moduleTypeUnderTestFactory: apex.BundleFactory,
|
|
moduleTypeUnderTestBp2BuildMutator: apex.ApexBundleBp2Build,
|
|
filesystem: map[string]string{},
|
|
blueprint: `
|
|
apex {
|
|
name: "com.android.apogee",
|
|
manifest: "apogee_manifest.json",
|
|
}
|
|
`,
|
|
expectedBazelTargets: []string{makeBazelTarget("apex", "com.android.apogee", attrNameToString{
|
|
"manifest": `"apogee_manifest.json"`,
|
|
}),
|
|
}})
|
|
}
|
|
|
|
func TestApexBundleHasBazelModuleProps(t *testing.T) {
|
|
runApexTestCase(t, bp2buildTestCase{
|
|
description: "apex - has bazel module props",
|
|
moduleTypeUnderTest: "apex",
|
|
moduleTypeUnderTestFactory: apex.BundleFactory,
|
|
moduleTypeUnderTestBp2BuildMutator: apex.ApexBundleBp2Build,
|
|
filesystem: map[string]string{},
|
|
blueprint: `
|
|
apex {
|
|
name: "apogee",
|
|
manifest: "manifest.json",
|
|
bazel_module: { bp2build_available: true },
|
|
}
|
|
`,
|
|
expectedBazelTargets: []string{makeBazelTarget("apex", "apogee", attrNameToString{
|
|
"manifest": `"manifest.json"`,
|
|
}),
|
|
}})
|
|
}
|