Refactor bp2build tests for allowlist v2

Allowlist v2 will change bp2build by automatically disabling rdeps of
unconvertible modules. Many bp2build tests create bp2build stub modules
without an implementation,
This CL changes setup of such tests to also contain a BUILD file with
"stub implementations" of equivalent targets, to keep these test targets
convertible.

To verify this change in-place, this CL removes `bp2build_available:
false` from these dependencies.

This is a test-only change for bp2build tests.

Bug: 285631638
Test: m bp2build
Change-Id: I489480cbc4158a416b7abf57c35a6e2bc2ad6173
This commit is contained in:
Chris Parsons 2023-09-19 01:12:48 +00:00
parent 95ad0a9226
commit cd209035aa
23 changed files with 465 additions and 439 deletions

View file

@ -15,10 +15,10 @@
package bp2build
import (
"testing"
"android/soong/android"
"android/soong/java"
"testing"
)
func TestConvertAndroidLibrary(t *testing.T) {
@ -34,7 +34,8 @@ func TestConvertAndroidLibrary(t *testing.T) {
"res/res.png": "",
"manifest/AndroidManifest.xml": "",
},
Blueprint: SimpleModuleDoNotConvertBp2build("android_library", "static_lib_dep") + `
StubbedBuildDefinitions: []string{"static_lib_dep"},
Blueprint: simpleModule("android_library", "static_lib_dep") + `
android_library {
name: "TestLib",
srcs: ["lib.java"],
@ -81,7 +82,7 @@ func TestConvertAndroidLibraryWithNoSources(t *testing.T) {
"res/res.png": "",
"AndroidManifest.xml": "",
},
Blueprint: SimpleModuleDoNotConvertBp2build("android_library", "lib_dep") + `
Blueprint: simpleModule("android_library", "lib_dep") + `
android_library {
name: "TestLib",
srcs: [],
@ -107,18 +108,24 @@ func TestConvertAndroidLibraryImport(t *testing.T) {
ModuleTypeUnderTestFactory: java.AARImportFactory,
Filesystem: map[string]string{
"import.aar": "",
"dep.aar": "",
},
StubbedBuildDefinitions: []string{"static_lib_dep", "prebuilt_static_import_dep"},
// Bazel's aar_import can only export *_import targets, so we expect
// only "static_import_dep" in exports, but both "static_lib_dep" and
// "static_import_dep" in deps
Blueprint: SimpleModuleDoNotConvertBp2build("android_library", "static_lib_dep") +
SimpleModuleDoNotConvertBp2build("android_library_import", "static_import_dep") + `
Blueprint: simpleModule("android_library", "static_lib_dep") + `
android_library_import {
name: "TestImport",
aars: ["import.aar"],
static_libs: ["static_lib_dep", "static_import_dep"],
sdk_version: "current",
}
// TODO: b/301007952 - This dep is needed because android_library_import must have aars set.
android_library_import {
name: "static_import_dep",
}
`,
ExpectedBazelTargets: []string{
MakeBazelTarget(

View file

@ -78,7 +78,8 @@ func TestAndroidAppAllSupportedFields(t *testing.T) {
"manifest/AndroidManifest.xml": "",
"assets_/asset.png": "",
},
Blueprint: SimpleModuleDoNotConvertBp2build("android_app", "static_lib_dep") + `
StubbedBuildDefinitions: []string{"static_lib_dep"},
Blueprint: simpleModule("android_app", "static_lib_dep") + `
android_app {
name: "TestApp",
srcs: ["app.java"],
@ -177,7 +178,8 @@ func TestAndroidAppCertIsModule(t *testing.T) {
ModuleTypeUnderTest: "android_app",
ModuleTypeUnderTestFactory: java.AndroidAppFactory,
Filesystem: map[string]string{},
Blueprint: SimpleModuleDoNotConvertBp2build("filegroup", "foocert") + `
StubbedBuildDefinitions: []string{"foocert"},
Blueprint: simpleModule("filegroup", "foocert") + `
android_app {
name: "TestApp",
certificate: ":foocert",
@ -262,7 +264,8 @@ func TestAndroidAppLibs(t *testing.T) {
ModuleTypeUnderTest: "android_app",
ModuleTypeUnderTestFactory: java.AndroidAppFactory,
Filesystem: map[string]string{},
Blueprint: SimpleModuleDoNotConvertBp2build("java_library", "barLib") + `
StubbedBuildDefinitions: []string{"barLib"},
Blueprint: simpleModule("java_library", "barLib") + `
android_app {
name: "foo",
libs: ["barLib"],
@ -291,8 +294,9 @@ func TestAndroidAppKotlinSrcs(t *testing.T) {
Filesystem: map[string]string{
"res/res.png": "",
},
Blueprint: SimpleModuleDoNotConvertBp2build("filegroup", "foocert") +
SimpleModuleDoNotConvertBp2build("java_library", "barLib") + `
StubbedBuildDefinitions: []string{"foocert", "barLib"},
Blueprint: simpleModule("filegroup", "foocert") +
simpleModule("java_library", "barLib") + `
android_app {
name: "foo",
srcs: ["a.java", "b.kt"],
@ -334,6 +338,7 @@ func TestAndroidAppCommonSrcs(t *testing.T) {
Filesystem: map[string]string{
"res/res.png": "",
},
StubbedBuildDefinitions: []string{"barLib"},
Blueprint: `
android_app {
name: "foo",
@ -348,7 +353,6 @@ android_app {
}
java_library{
name: "barLib",
bazel_module: { bp2build_available: false },
}
`,
ExpectedBazelTargets: []string{

View file

@ -74,38 +74,34 @@ func TestApexBundleSimple(t *testing.T) {
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",
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 },
}
prebuilt_etc {
name: "prebuilt_1",
bazel_module: { bp2build_available: false },
}
prebuilt_etc {
name: "prebuilt_2",
bazel_module: { bp2build_available: false },
}
filegroup {
@ -113,11 +109,10 @@ filegroup {
srcs: [
"com.android.apogee-file_contexts",
],
bazel_module: { bp2build_available: false },
}
cc_binary { name: "cc_binary_1", bazel_module: { bp2build_available: false } }
sh_binary { name: "sh_binary_2", bazel_module: { bp2build_available: false } }
cc_binary { name: "cc_binary_1"}
sh_binary { name: "sh_binary_2"}
apex {
name: "com.android.apogee",
@ -202,6 +197,7 @@ func TestApexBundleSimple_fileContextsInAnotherAndroidBp(t *testing.T) {
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 {
@ -209,7 +205,6 @@ filegroup {
srcs: [
"com.android.apogee-file_contexts",
],
bazel_module: { bp2build_available: false },
}
`,
},
@ -252,6 +247,7 @@ func TestApexBundleSimple_fileContextsIsNotSpecified(t *testing.T) {
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 {
@ -259,7 +255,6 @@ filegroup {
srcs: [
"com.android.apogee-file_contexts",
],
bazel_module: { bp2build_available: false },
}
`,
},
@ -281,12 +276,12 @@ func TestApexBundleCompileMultilibBoth(t *testing.T) {
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", ],
bazel_module: { bp2build_available: false },
}
`,
},
@ -373,12 +368,12 @@ func TestApexBundleCompileMultilibFirstAndDefaultValue(t *testing.T) {
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", ],
bazel_module: { bp2build_available: false },
}
`,
},
@ -393,12 +388,12 @@ func TestApexBundleCompileMultilib32(t *testing.T) {
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", ],
bazel_module: { bp2build_available: false },
}
`,
},
@ -425,12 +420,12 @@ func TestApexBundleCompileMultilib64(t *testing.T) {
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", ],
bazel_module: { bp2build_available: false },
}
`,
},
@ -458,31 +453,31 @@ filegroup {
}})
}
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",
bazel_module: { bp2build_available: false },
}
cc_library {
name: "native_shared_lib_for_first",
bazel_module: { bp2build_available: false },
}
cc_library {
name: "native_shared_lib_for_lib32",
bazel_module: { bp2build_available: false },
}
cc_library {
name: "native_shared_lib_for_lib64",
bazel_module: { bp2build_available: false },
}
cc_library {
name: "unnested_native_shared_lib",
bazel_module: { bp2build_available: false },
}
apex {
@ -519,12 +514,12 @@ func TestApexBundleDefaultPropertyValues(t *testing.T) {
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", ],
bazel_module: { bp2build_available: false },
}
`,
},
@ -546,12 +541,12 @@ func TestApexBundleHasBazelModuleProps(t *testing.T) {
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", ],
bazel_module: { bp2build_available: false },
}
`,
},
@ -575,38 +570,35 @@ func TestBp2BuildOverrideApex(t *testing.T) {
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",
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 },
}
prebuilt_etc {
name: "prebuilt_1",
bazel_module: { bp2build_available: false },
}
prebuilt_etc {
name: "prebuilt_2",
bazel_module: { bp2build_available: false },
}
filegroup {
@ -614,11 +606,10 @@ filegroup {
srcs: [
"com.android.apogee-file_contexts",
],
bazel_module: { bp2build_available: false },
}
cc_binary { name: "cc_binary_1", bazel_module: { bp2build_available: false } }
sh_binary { name: "sh_binary_2", bazel_module: { bp2build_available: false } }
cc_binary { name: "cc_binary_1" }
sh_binary { name: "sh_binary_2" }
apex {
name: "com.android.apogee",
@ -643,20 +634,17 @@ apex {
"prebuilt_1",
"prebuilt_2",
],
bazel_module: { bp2build_available: false },
}
apex_key {
name: "com.google.android.apogee.key",
public_key: "com.google.android.apogee.avbpubkey",
private_key: "com.google.android.apogee.pem",
bazel_module: { bp2build_available: false },
}
android_app_certificate {
name: "com.google.android.apogee.certificate",
certificate: "com.google.android.apogee",
bazel_module: { bp2build_available: false },
}
override_apex {
@ -717,28 +705,27 @@ func TestOverrideApexTest(t *testing.T) {
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",
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 },
}
prebuilt_etc {
name: "prebuilt_1",
bazel_module: { bp2build_available: false },
}
filegroup {
@ -746,11 +733,10 @@ filegroup {
srcs: [
"com.android.apogee-file_contexts",
],
bazel_module: { bp2build_available: false },
}
cc_binary { name: "cc_binary_1", bazel_module: { bp2build_available: false } }
sh_binary { name: "sh_binary_2", bazel_module: { bp2build_available: false } }
cc_binary { name: "cc_binary_1"}
sh_binary { name: "sh_binary_2"}
apex_test {
name: "com.android.apogee",
@ -773,20 +759,17 @@ apex_test {
prebuilts: [
"prebuilt_1",
],
bazel_module: { bp2build_available: false },
}
apex_key {
name: "com.google.android.apogee.key",
public_key: "com.google.android.apogee.avbpubkey",
private_key: "com.google.android.apogee.pem",
bazel_module: { bp2build_available: false },
}
android_app_certificate {
name: "com.google.android.apogee.certificate",
certificate: "com.google.android.apogee",
bazel_module: { bp2build_available: false },
}
override_apex {
@ -835,12 +818,12 @@ func TestApexBundleSimple_manifestIsEmpty_baseApexOverrideApexInDifferentAndroid
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{"//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", ],
bazel_module: { bp2build_available: false },
}`,
"a/b/Android.bp": `
apex {
@ -869,12 +852,12 @@ func TestApexBundleSimple_manifestIsSet_baseApexOverrideApexInDifferentAndroidBp
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{"//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", ],
bazel_module: { bp2build_available: false },
}`,
"a/b/Android.bp": `
apex {
@ -904,12 +887,12 @@ func TestApexBundleSimple_manifestIsEmpty_baseApexOverrideApexInSameAndroidBp(t
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{"//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", ],
bazel_module: { bp2build_available: false },
}`,
},
Blueprint: `
@ -937,12 +920,12 @@ func TestApexBundleSimple_manifestIsSet_baseApexOverrideApexInSameAndroidBp(t *t
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{"//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", ],
bazel_module: { bp2build_available: false },
}`,
},
Blueprint: `
@ -971,12 +954,12 @@ func TestApexBundleSimple_packageNameOverride(t *testing.T) {
Description: "override_apex - override package name",
ModuleTypeUnderTest: "override_apex",
ModuleTypeUnderTestFactory: apex.OverrideApexFactory,
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", ],
bazel_module: { bp2build_available: false },
}`,
},
Blueprint: `
@ -1006,24 +989,22 @@ func TestApexBundleSimple_NoPrebuiltsOverride(t *testing.T) {
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", ],
bazel_module: { bp2build_available: false },
}`,
},
Blueprint: `
prebuilt_etc {
name: "prebuilt_file",
bazel_module: { bp2build_available: false },
}
apex {
name: "com.android.apogee",
bazel_module: { bp2build_available: false },
prebuilts: ["prebuilt_file"]
prebuilts: ["prebuilt_file"]
}
override_apex {
@ -1046,35 +1027,32 @@ func TestApexBundleSimple_PrebuiltsOverride(t *testing.T) {
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", ],
bazel_module: { bp2build_available: false },
}`,
},
Blueprint: `
prebuilt_etc {
name: "prebuilt_file",
bazel_module: { bp2build_available: false },
}
prebuilt_etc {
name: "prebuilt_file2",
bazel_module: { bp2build_available: false },
}
apex {
name: "com.android.apogee",
bazel_module: { bp2build_available: false },
prebuilts: ["prebuilt_file"]
prebuilts: ["prebuilt_file"]
}
override_apex {
name: "com.google.android.apogee",
base: ":com.android.apogee",
prebuilts: ["prebuilt_file2"]
prebuilts: ["prebuilt_file2"]
}
`,
ExpectedBazelTargets: []string{
@ -1092,24 +1070,22 @@ func TestApexBundleSimple_PrebuiltsOverrideEmptyList(t *testing.T) {
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", ],
bazel_module: { bp2build_available: false },
}`,
},
Blueprint: `
prebuilt_etc {
name: "prebuilt_file",
bazel_module: { bp2build_available: false },
}
apex {
name: "com.android.apogee",
bazel_module: { bp2build_available: false },
prebuilts: ["prebuilt_file"]
prebuilts: ["prebuilt_file"]
}
override_apex {
@ -1133,12 +1109,12 @@ func TestApexBundleSimple_NoLoggingParentOverride(t *testing.T) {
Description: "override_apex - logging_parent - no override",
ModuleTypeUnderTest: "override_apex",
ModuleTypeUnderTestFactory: apex.OverrideApexFactory,
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", ],
bazel_module: { bp2build_available: false },
}`,
},
Blueprint: `
@ -1168,12 +1144,12 @@ func TestApexBundleSimple_LoggingParentOverride(t *testing.T) {
Description: "override_apex - logging_parent - override",
ModuleTypeUnderTest: "override_apex",
ModuleTypeUnderTestFactory: apex.OverrideApexFactory,
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", ],
bazel_module: { bp2build_available: false },
}`,
},
Blueprint: `
@ -1205,11 +1181,11 @@ func TestBp2BuildOverrideApex_CertificateNil(t *testing.T) {
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",
bazel_module: { bp2build_available: false },
}
filegroup {
@ -1217,7 +1193,6 @@ filegroup {
srcs: [
"com.android.apogee-file_contexts",
],
bazel_module: { bp2build_available: false },
}
apex {
@ -1225,7 +1200,6 @@ apex {
manifest: "apogee_manifest.json",
file_contexts: ":com.android.apogee-file_contexts",
certificate: ":com.android.apogee.certificate",
bazel_module: { bp2build_available: false },
}
override_apex {
@ -1250,11 +1224,11 @@ func TestApexCertificateIsModule(t *testing.T) {
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",
bazel_module: { bp2build_available: false },
}
apex {
@ -1263,7 +1237,7 @@ apex {
file_contexts: ":com.android.apogee-file_contexts",
certificate: ":com.android.apogee.certificate",
}
` + SimpleModuleDoNotConvertBp2build("filegroup", "com.android.apogee-file_contexts"),
` + simpleModule("filegroup", "com.android.apogee-file_contexts"),
ExpectedBazelTargets: []string{
MakeBazelTarget("apex", "com.android.apogee", AttrNameToString{
"certificate": `":com.android.apogee.certificate"`,
@ -1279,6 +1253,7 @@ func TestApexWithStubLib(t *testing.T) {
ModuleTypeUnderTest: "apex",
ModuleTypeUnderTestFactory: apex.BundleFactory,
Filesystem: map[string]string{},
StubbedBuildDefinitions: []string{"myapex-file_contexts"},
Blueprint: `
cc_library{
name: "foo",
@ -1299,7 +1274,7 @@ apex {
binaries: ["bar"],
native_shared_libs: ["foo"],
}
` + SimpleModuleDoNotConvertBp2build("filegroup", "myapex-file_contexts"),
` + simpleModule("filegroup", "myapex-file_contexts"),
ExpectedBazelTargets: []string{
MakeBazelTarget("cc_binary", "bar", AttrNameToString{
"local_includes": `["."]`,
@ -1350,6 +1325,7 @@ func TestApexCertificateIsSrc(t *testing.T) {
ModuleTypeUnderTest: "apex",
ModuleTypeUnderTestFactory: apex.BundleFactory,
Filesystem: map[string]string{},
StubbedBuildDefinitions: []string{"com.android.apogee-file_contexts"},
Blueprint: `
apex {
name: "com.android.apogee",
@ -1357,7 +1333,7 @@ apex {
file_contexts: ":com.android.apogee-file_contexts",
certificate: "com.android.apogee.certificate",
}
` + SimpleModuleDoNotConvertBp2build("filegroup", "com.android.apogee-file_contexts"),
` + simpleModule("filegroup", "com.android.apogee-file_contexts"),
ExpectedBazelTargets: []string{
MakeBazelTarget("apex", "com.android.apogee", AttrNameToString{
"certificate_name": `"com.android.apogee.certificate"`,
@ -1373,11 +1349,12 @@ func TestBp2BuildOverrideApex_CertificateIsModule(t *testing.T) {
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",
bazel_module: { bp2build_available: false },
}
filegroup {
@ -1385,7 +1362,6 @@ filegroup {
srcs: [
"com.android.apogee-file_contexts",
],
bazel_module: { bp2build_available: false },
}
apex {
@ -1393,13 +1369,11 @@ apex {
manifest: "apogee_manifest.json",
file_contexts: ":com.android.apogee-file_contexts",
certificate: ":com.android.apogee.certificate",
bazel_module: { bp2build_available: false },
}
android_app_certificate {
name: "com.google.android.apogee.certificate",
certificate: "com.google.android.apogee",
bazel_module: { bp2build_available: false },
}
override_apex {
@ -1424,11 +1398,11 @@ func TestBp2BuildOverrideApex_CertificateIsSrc(t *testing.T) {
ModuleTypeUnderTest: "override_apex",
ModuleTypeUnderTestFactory: apex.OverrideApexFactory,
Filesystem: map[string]string{},
StubbedBuildDefinitions: []string{"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",
bazel_module: { bp2build_available: false },
}
filegroup {
@ -1436,7 +1410,6 @@ filegroup {
srcs: [
"com.android.apogee-file_contexts",
],
bazel_module: { bp2build_available: false },
}
apex {
@ -1469,8 +1442,9 @@ func TestApexTestBundleSimple(t *testing.T) {
ModuleTypeUnderTest: "apex_test",
ModuleTypeUnderTestFactory: apex.TestApexBundleFactory,
Filesystem: map[string]string{},
StubbedBuildDefinitions: []string{"cc_test_1"},
Blueprint: `
cc_test { name: "cc_test_1", bazel_module: { bp2build_available: false } }
cc_test { name: "cc_test_1"}
apex_test {
name: "test_com.android.apogee",
@ -1497,6 +1471,7 @@ func TestApexBundle_overridePlusProductVars(t *testing.T) {
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",
@ -1535,7 +1510,6 @@ filegroup {
srcs: [
"com.android.apogee-file_contexts",
],
bazel_module: { bp2build_available: false },
}
apex {

View file

@ -83,14 +83,15 @@ func TestApexKey_KeysAreModules(t *testing.T) {
ModuleTypeUnderTest: "apex_key",
ModuleTypeUnderTestFactory: apex.ApexKeyFactory,
Filesystem: map[string]string{},
StubbedBuildDefinitions: []string{"com.android.apogee.avbpubkey", "com.android.apogee.pem"},
Blueprint: `
apex_key {
name: "com.android.apogee.key",
public_key: ":com.android.apogee.avbpubkey",
private_key: ":com.android.apogee.pem",
}
` + SimpleModuleDoNotConvertBp2build("filegroup", "com.android.apogee.avbpubkey") +
SimpleModuleDoNotConvertBp2build("filegroup", "com.android.apogee.pem"),
` + simpleModule("filegroup", "com.android.apogee.avbpubkey") +
simpleModule("filegroup", "com.android.apogee.pem"),
ExpectedBazelTargets: []string{MakeBazelTargetNoRestrictions("apex_key", "com.android.apogee.key", AttrNameToString{
"private_key": `":com.android.apogee.pem"`,
"public_key": `":com.android.apogee.avbpubkey"`,

View file

@ -1743,7 +1743,8 @@ func TestCommonBp2BuildModuleAttrs(t *testing.T) {
Description: "Required into data test",
ModuleTypeUnderTest: "filegroup",
ModuleTypeUnderTestFactory: android.FileGroupFactory,
Blueprint: SimpleModuleDoNotConvertBp2build("filegroup", "reqd") + `
StubbedBuildDefinitions: []string{"reqd"},
Blueprint: simpleModule("filegroup", "reqd") + `
filegroup {
name: "fg_foo",
required: ["reqd"],
@ -1759,7 +1760,8 @@ filegroup {
Description: "Required into data test, cyclic self reference is filtered out",
ModuleTypeUnderTest: "filegroup",
ModuleTypeUnderTestFactory: android.FileGroupFactory,
Blueprint: SimpleModuleDoNotConvertBp2build("filegroup", "reqd") + `
StubbedBuildDefinitions: []string{"reqd"},
Blueprint: simpleModule("filegroup", "reqd") + `
filegroup {
name: "fg_foo",
required: ["reqd", "fg_foo"],
@ -1775,8 +1777,9 @@ filegroup {
Description: "Required via arch into data test",
ModuleTypeUnderTest: "python_library",
ModuleTypeUnderTestFactory: python.PythonLibraryFactory,
Blueprint: SimpleModuleDoNotConvertBp2build("python_library", "reqdx86") +
SimpleModuleDoNotConvertBp2build("python_library", "reqdarm") + `
StubbedBuildDefinitions: []string{"reqdx86", "reqdarm"},
Blueprint: simpleModule("python_library", "reqdx86") +
simpleModule("python_library", "reqdarm") + `
python_library {
name: "fg_foo",
arch: {
@ -1809,7 +1812,8 @@ python_library {
"data.bin": "",
"src.py": "",
},
Blueprint: SimpleModuleDoNotConvertBp2build("python_library", "reqd") + `
StubbedBuildDefinitions: []string{"reqd"},
Blueprint: simpleModule("python_library", "reqd") + `
python_library {
name: "fg_foo",
data: ["data.bin"],
@ -1831,7 +1835,8 @@ python_library {
Description: "All props-to-attrs at once together test",
ModuleTypeUnderTest: "filegroup",
ModuleTypeUnderTestFactory: android.FileGroupFactory,
Blueprint: SimpleModuleDoNotConvertBp2build("filegroup", "reqd") + `
StubbedBuildDefinitions: []string{"reqd"},
Blueprint: simpleModule("filegroup", "reqd") + `
filegroup {
name: "fg_foo",
required: ["reqd"],

View file

@ -44,10 +44,11 @@ func generateBazelTargetsForTest(targets []testBazelTarget, hod android.HostOrDe
}
type ccBinaryBp2buildTestCase struct {
description string
filesystem map[string]string
blueprint string
targets []testBazelTarget
description string
filesystem map[string]string
blueprint string
targets []testBazelTarget
stubbedBuildDefinitions []string
}
func registerCcBinaryModuleTypes(ctx android.RegistrationContext) {
@ -81,6 +82,7 @@ func runCcBinaryTestCase(t *testing.T, testCase ccBinaryBp2buildTestCase) {
Description: description,
Blueprint: binaryReplacer.Replace(testCase.blueprint),
Filesystem: testCase.filesystem,
StubbedBuildDefinitions: testCase.stubbedBuildDefinitions,
})
})
}
@ -97,6 +99,7 @@ func runCcHostBinaryTestCase(t *testing.T, testCase ccBinaryBp2buildTestCase) {
Description: description,
Blueprint: hostBinaryReplacer.Replace(testCase.blueprint),
Filesystem: testCase.filesystem,
StubbedBuildDefinitions: testCase.stubbedBuildDefinitions,
})
})
}
@ -107,6 +110,7 @@ func TestBasicCcBinary(t *testing.T) {
filesystem: map[string]string{
soongCcVersionLibBpPath: soongCcVersionLibBp,
},
stubbedBuildDefinitions: []string{"//build/soong/cc/libbuildversion:libbuildversion"},
blueprint: `
{rule_name} {
name: "foo",
@ -264,7 +268,8 @@ func TestCcBinaryLdflagsSplitBySpaceExceptSoongAdded(t *testing.T) {
func TestCcBinarySplitSrcsByLang(t *testing.T) {
runCcHostBinaryTestCase(t, ccBinaryBp2buildTestCase{
description: "split srcs by lang",
description: "split srcs by lang",
stubbedBuildDefinitions: []string{"fg_foo"},
blueprint: `
{rule_name} {
name: "foo",
@ -276,7 +281,7 @@ func TestCcBinarySplitSrcsByLang(t *testing.T) {
],
include_build_directory: false,
}
` + SimpleModuleDoNotConvertBp2build("filegroup", "fg_foo"),
` + simpleModule("filegroup", "fg_foo"),
targets: []testBazelTarget{
{"cc_binary", "foo", AttrNameToString{
"srcs": `[
@ -300,17 +305,17 @@ func TestCcBinarySplitSrcsByLang(t *testing.T) {
func TestCcBinaryDoNotDistinguishBetweenDepsAndImplementationDeps(t *testing.T) {
runCcBinaryTestCase(t, ccBinaryBp2buildTestCase{
description: "no implementation deps",
stubbedBuildDefinitions: []string{"generated_hdr", "export_generated_hdr", "static_dep", "implementation_static_dep",
"whole_static_dep", "not_explicitly_exported_whole_static_dep", "shared_dep", "implementation_shared_dep"},
blueprint: `
genrule {
name: "generated_hdr",
cmd: "nothing to see here",
bazel_module: { bp2build_available: false },
}
genrule {
name: "export_generated_hdr",
cmd: "nothing to see here",
bazel_module: { bp2build_available: false },
}
{rule_name} {
@ -326,12 +331,12 @@ genrule {
export_generated_headers: ["export_generated_hdr"],
}
` +
SimpleModuleDoNotConvertBp2build("cc_library_static", "static_dep") +
SimpleModuleDoNotConvertBp2build("cc_library_static", "implementation_static_dep") +
SimpleModuleDoNotConvertBp2build("cc_library_static", "whole_static_dep") +
SimpleModuleDoNotConvertBp2build("cc_library_static", "not_explicitly_exported_whole_static_dep") +
SimpleModuleDoNotConvertBp2build("cc_library", "shared_dep") +
SimpleModuleDoNotConvertBp2build("cc_library", "implementation_shared_dep"),
simpleModule("cc_library_static", "static_dep") +
simpleModule("cc_library_static", "implementation_static_dep") +
simpleModule("cc_library_static", "whole_static_dep") +
simpleModule("cc_library_static", "not_explicitly_exported_whole_static_dep") +
simpleModule("cc_library", "shared_dep") +
simpleModule("cc_library", "implementation_shared_dep"),
targets: []testBazelTarget{
{"cc_binary", "foo", AttrNameToString{
"deps": `[
@ -502,6 +507,7 @@ func TestCcBinaryPropertiesToFeatures(t *testing.T) {
func TestCcBinarySharedProto(t *testing.T) {
runCcBinaryTests(t, ccBinaryBp2buildTestCase{
stubbedBuildDefinitions: []string{"libprotobuf-cpp-full", "libprotobuf-cpp-lite"},
blueprint: soongCcProtoLibraries + `{rule_name} {
name: "foo",
srcs: ["foo.proto"],
@ -524,6 +530,7 @@ func TestCcBinarySharedProto(t *testing.T) {
func TestCcBinaryStaticProto(t *testing.T) {
runCcBinaryTests(t, ccBinaryBp2buildTestCase{
stubbedBuildDefinitions: []string{"libprotobuf-cpp-full", "libprotobuf-cpp-lite"},
blueprint: soongCcProtoLibraries + `{rule_name} {
name: "foo",
srcs: ["foo.proto"],
@ -1224,13 +1231,13 @@ func TestCCBinaryRscriptSrc(t *testing.T) {
func TestCcBinaryStatic_SystemSharedLibUsedAsDep(t *testing.T) {
runCcBinaryTestCase(t, ccBinaryBp2buildTestCase{
description: "cc_library_static system_shared_lib empty for linux_bionic variant",
stubbedBuildDefinitions: []string{"libm", "libc"},
description: "cc_library_static system_shared_lib empty for linux_bionic variant",
blueprint: soongCcLibraryStaticPreamble +
SimpleModuleDoNotConvertBp2build("cc_library", "libc") + `
simpleModule("cc_library", "libc") + `
cc_library {
name: "libm",
bazel_module: { bp2build_available: false },
}
cc_binary {

View file

@ -35,19 +35,16 @@ cc_defaults {
soongCcVersionLibBp = `
cc_library_static {
name: "libbuildversion",
bazel_module: { bp2build_available: false },
}
`
soongCcProtoLibraries = `
cc_library {
name: "libprotobuf-cpp-lite",
bazel_module: { bp2build_available: false },
}
cc_library {
name: "libprotobuf-cpp-full",
bazel_module: { bp2build_available: false },
}`
soongCcProtoPreamble = soongCcLibraryPreamble + soongCcProtoLibraries
@ -55,6 +52,7 @@ cc_library {
func runCcLibraryTestCase(t *testing.T, tc Bp2buildTestCase) {
t.Helper()
tc.StubbedBuildDefinitions = append(tc.StubbedBuildDefinitions, "libprotobuf-cpp-lite", "libprotobuf-cpp-full")
RunBp2BuildTestCase(t, registerCcLibraryModuleTypes, tc)
}
@ -73,6 +71,7 @@ func TestCcLibrarySimple(t *testing.T) {
Description: "cc_library - simple example",
ModuleTypeUnderTest: "cc_library",
ModuleTypeUnderTestFactory: cc.LibraryFactory,
StubbedBuildDefinitions: []string{"//build/soong/cc/libbuildversion:libbuildversion", "some-headers"},
Filesystem: map[string]string{
soongCcVersionLibBpPath: soongCcVersionLibBp,
"android.cpp": "",
@ -95,7 +94,7 @@ func TestCcLibrarySimple(t *testing.T) {
"foo-dir/a.h": "",
},
Blueprint: soongCcLibraryPreamble +
SimpleModuleDoNotConvertBp2build("cc_library_headers", "some-headers") + `
simpleModule("cc_library_headers", "some-headers") + `
cc_library {
name: "foo-lib",
srcs: ["impl.cpp"],
@ -169,6 +168,7 @@ func TestCcLibraryTrimmedLdAndroid(t *testing.T) {
Description: "cc_library - trimmed example of //bionic/linker:ld-android",
ModuleTypeUnderTest: "cc_library",
ModuleTypeUnderTestFactory: cc.LibraryFactory,
StubbedBuildDefinitions: []string{"libc_headers"},
Filesystem: map[string]string{
"ld-android.cpp": "",
"linked_list.h": "",
@ -177,7 +177,7 @@ func TestCcLibraryTrimmedLdAndroid(t *testing.T) {
"linker_cfi.h": "",
},
Blueprint: soongCcLibraryPreamble +
SimpleModuleDoNotConvertBp2build("cc_library_headers", "libc_headers") + `
simpleModule("cc_library_headers", "libc_headers") + `
cc_library {
name: "fake-ld-android",
srcs: ["ld_android.cpp"],
@ -320,54 +320,49 @@ cc_library {
cc_library_static {
name: "static_dep_for_shared",
bazel_module: { bp2build_available: false },
}
cc_library_static {
name: "static_dep_for_static",
bazel_module: { bp2build_available: false },
}
cc_library_static {
name: "static_dep_for_both",
bazel_module: { bp2build_available: false },
}
cc_library_static {
name: "whole_static_lib_for_shared",
bazel_module: { bp2build_available: false },
}
cc_library_static {
name: "whole_static_lib_for_static",
bazel_module: { bp2build_available: false },
}
cc_library_static {
name: "whole_static_lib_for_both",
bazel_module: { bp2build_available: false },
}
cc_library_static {
name: "whole_and_static_lib_for_both",
bazel_module: { bp2build_available: false },
}
cc_library {
name: "shared_dep_for_shared",
bazel_module: { bp2build_available: false },
}
cc_library {
name: "shared_dep_for_static",
bazel_module: { bp2build_available: false },
}
cc_library {
name: "shared_dep_for_both",
bazel_module: { bp2build_available: false },
}
`,
StubbedBuildDefinitions: []string{"static_dep_for_shared", "static_dep_for_static",
"static_dep_for_both", "whole_static_lib_for_shared", "whole_static_lib_for_static",
"whole_static_lib_for_both", "whole_and_static_lib_for_both", "shared_dep_for_shared",
"shared_dep_for_static", "shared_dep_for_both",
},
ExpectedBazelTargets: []string{
MakeBazelTarget("cc_library_static", "a_bp2build_cc_library_static", AttrNameToString{
"copts": `[
@ -458,24 +453,34 @@ cc_library {
},
include_build_directory: false,
}
` + SimpleModuleDoNotConvertBp2build("cc_library_static", "static_dep_for_shared") +
SimpleModuleDoNotConvertBp2build("cc_library_static", "implementation_static_dep_for_shared") +
SimpleModuleDoNotConvertBp2build("cc_library_static", "static_dep_for_static") +
SimpleModuleDoNotConvertBp2build("cc_library_static", "implementation_static_dep_for_static") +
SimpleModuleDoNotConvertBp2build("cc_library_static", "static_dep_for_both") +
SimpleModuleDoNotConvertBp2build("cc_library_static", "implementation_static_dep_for_both") +
SimpleModuleDoNotConvertBp2build("cc_library_static", "whole_static_dep_for_shared") +
SimpleModuleDoNotConvertBp2build("cc_library_static", "not_explicitly_exported_whole_static_dep_for_shared") +
SimpleModuleDoNotConvertBp2build("cc_library_static", "whole_static_dep_for_static") +
SimpleModuleDoNotConvertBp2build("cc_library_static", "not_explicitly_exported_whole_static_dep_for_static") +
SimpleModuleDoNotConvertBp2build("cc_library_static", "whole_static_dep_for_both") +
SimpleModuleDoNotConvertBp2build("cc_library_static", "not_explicitly_exported_whole_static_dep_for_both") +
SimpleModuleDoNotConvertBp2build("cc_library", "shared_dep_for_shared") +
SimpleModuleDoNotConvertBp2build("cc_library", "implementation_shared_dep_for_shared") +
SimpleModuleDoNotConvertBp2build("cc_library", "shared_dep_for_static") +
SimpleModuleDoNotConvertBp2build("cc_library", "implementation_shared_dep_for_static") +
SimpleModuleDoNotConvertBp2build("cc_library", "shared_dep_for_both") +
SimpleModuleDoNotConvertBp2build("cc_library", "implementation_shared_dep_for_both"),
` + simpleModule("cc_library_static", "static_dep_for_shared") +
simpleModule("cc_library_static", "implementation_static_dep_for_shared") +
simpleModule("cc_library_static", "static_dep_for_static") +
simpleModule("cc_library_static", "implementation_static_dep_for_static") +
simpleModule("cc_library_static", "static_dep_for_both") +
simpleModule("cc_library_static", "implementation_static_dep_for_both") +
simpleModule("cc_library_static", "whole_static_dep_for_shared") +
simpleModule("cc_library_static", "not_explicitly_exported_whole_static_dep_for_shared") +
simpleModule("cc_library_static", "whole_static_dep_for_static") +
simpleModule("cc_library_static", "not_explicitly_exported_whole_static_dep_for_static") +
simpleModule("cc_library_static", "whole_static_dep_for_both") +
simpleModule("cc_library_static", "not_explicitly_exported_whole_static_dep_for_both") +
simpleModule("cc_library", "shared_dep_for_shared") +
simpleModule("cc_library", "implementation_shared_dep_for_shared") +
simpleModule("cc_library", "shared_dep_for_static") +
simpleModule("cc_library", "implementation_shared_dep_for_static") +
simpleModule("cc_library", "shared_dep_for_both") +
simpleModule("cc_library", "implementation_shared_dep_for_both"),
StubbedBuildDefinitions: []string{"static_dep_for_shared", "implementation_static_dep_for_shared",
"static_dep_for_static", "implementation_static_dep_for_static", "static_dep_for_both",
"implementation_static_dep_for_both", "whole_static_dep_for_shared",
"not_explicitly_exported_whole_static_dep_for_shared", "whole_static_dep_for_static",
"not_explicitly_exported_whole_static_dep_for_static", "whole_static_dep_for_both",
"not_explicitly_exported_whole_static_dep_for_both", "shared_dep_for_shared",
"implementation_shared_dep_for_shared", "shared_dep_for_static",
"implementation_shared_dep_for_static", "shared_dep_for_both",
"implementation_shared_dep_for_both",
},
ExpectedBazelTargets: []string{
MakeBazelTarget("cc_library_static", "a_bp2build_cc_library_static", AttrNameToString{
"copts": `[
@ -550,6 +555,8 @@ func TestCcLibraryWholeStaticLibsAlwaysLink(t *testing.T) {
ModuleTypeUnderTest: "cc_library",
ModuleTypeUnderTestFactory: cc.LibraryFactory,
Dir: "foo/bar",
StubbedBuildDefinitions: []string{"//foo/bar:prebuilt_whole_static_lib_for_shared", "//foo/bar:prebuilt_whole_static_lib_for_static",
"//foo/bar:prebuilt_whole_static_lib_for_both"},
Filesystem: map[string]string{
"foo/bar/Android.bp": `
cc_library {
@ -666,6 +673,10 @@ cc_library_static { name: "x86_dep_for_static" }
cc_library_static { name: "android_dep_for_shared" }
`,
},
StubbedBuildDefinitions: []string{"//foo/bar:static_dep_for_shared", "//foo/bar:static_dep_for_static",
"//foo/bar:static_dep_for_both", "//foo/bar:arm_static_dep_for_shared", "//foo/bar:arm_whole_static_dep_for_shared",
"//foo/bar:arm_shared_dep_for_shared", "//foo/bar:x86_dep_for_static", "//foo/bar:android_dep_for_shared",
},
Blueprint: soongCcLibraryPreamble,
ExpectedBazelTargets: []string{
MakeBazelTarget("cc_library_static", "a_bp2build_cc_library_static", AttrNameToString{
@ -747,6 +758,7 @@ func TestCcLibrarySharedStaticPropsWithMixedSources(t *testing.T) {
ModuleTypeUnderTest: "cc_library",
ModuleTypeUnderTestFactory: cc.LibraryFactory,
Dir: "foo/bar",
StubbedBuildDefinitions: []string{"//foo/bar:shared_filegroup", "//foo/bar:static_filegroup", "//foo/bar:both_filegroup"},
Filesystem: map[string]string{
"foo/bar/both_source.cpp": "",
"foo/bar/both_source.cc": "",
@ -1018,10 +1030,10 @@ func TestCcLibrarySharedLibs(t *testing.T) {
Description: "cc_library shared_libs",
ModuleTypeUnderTest: "cc_library",
ModuleTypeUnderTestFactory: cc.LibraryFactory,
StubbedBuildDefinitions: []string{"mylib"},
Blueprint: soongCcLibraryPreamble + `
cc_library {
name: "mylib",
bazel_module: { bp2build_available: false },
}
cc_library {
@ -1182,6 +1194,10 @@ func TestCcLibraryExcludeLibs(t *testing.T) {
ModuleTypeUnderTest: "cc_library",
ModuleTypeUnderTestFactory: cc.LibraryFactory,
Filesystem: map[string]string{},
StubbedBuildDefinitions: []string{"arm_whole_static_lib_excludes", "malloc_not_svelte_whole_static_lib",
"arm_static_lib_excludes", "malloc_not_svelte_whole_static_lib_excludes", "arm_shared_lib_excludes",
"malloc_not_svelte_static_lib_excludes", "arm_shared_lib_excludes", "malloc_not_svelte_shared_lib",
},
Blueprint: soongCcLibraryStaticPreamble + `
cc_library {
name: "foo_static",
@ -1223,37 +1239,30 @@ cc_library {
cc_library {
name: "arm_whole_static_lib_excludes",
bazel_module: { bp2build_available: false },
}
cc_library {
name: "malloc_not_svelte_whole_static_lib",
bazel_module: { bp2build_available: false },
}
cc_library {
name: "malloc_not_svelte_whole_static_lib_excludes",
bazel_module: { bp2build_available: false },
}
cc_library {
name: "arm_static_lib_excludes",
bazel_module: { bp2build_available: false },
}
cc_library {
name: "malloc_not_svelte_static_lib_excludes",
bazel_module: { bp2build_available: false },
}
cc_library {
name: "arm_shared_lib_excludes",
bazel_module: { bp2build_available: false },
}
cc_library {
name: "malloc_not_svelte_shared_lib",
bazel_module: { bp2build_available: false },
}
`,
ExpectedBazelTargets: makeCcLibraryTargets("foo_static", AttrNameToString{
@ -1289,6 +1298,7 @@ func TestCcLibraryProductVariablesHeaderLibs(t *testing.T) {
ModuleTypeUnderTest: "cc_library",
ModuleTypeUnderTestFactory: cc.LibraryFactory,
Filesystem: map[string]string{},
StubbedBuildDefinitions: []string{"malloc_not_svelte_header_lib"},
Blueprint: soongCcLibraryStaticPreamble + `
cc_library {
name: "foo_static",
@ -1303,7 +1313,6 @@ cc_library {
cc_library {
name: "malloc_not_svelte_header_lib",
bazel_module: { bp2build_available: false },
}
`,
ExpectedBazelTargets: makeCcLibraryTargets("foo_static", AttrNameToString{
@ -1813,10 +1822,10 @@ func TestCcLibrary_SystemSharedLibsLinuxBionicEmpty(t *testing.T) {
Description: "cc_library system_shared_libs empty for linux_bionic variant",
ModuleTypeUnderTest: "cc_library",
ModuleTypeUnderTestFactory: cc.LibraryFactory,
StubbedBuildDefinitions: []string{"libc_musl"},
Blueprint: soongCcLibraryPreamble + `
cc_library {
name: "libc_musl",
bazel_module: { bp2build_available: false },
}
cc_library {
@ -1844,6 +1853,7 @@ func TestCcLibrary_SystemSharedLibsBionicEmpty(t *testing.T) {
Description: "cc_library system_shared_libs empty for bionic variant",
ModuleTypeUnderTest: "cc_library",
ModuleTypeUnderTestFactory: cc.LibraryFactory,
StubbedBuildDefinitions: []string{"libc_musl"},
Blueprint: soongCcLibraryPreamble + `
cc_library {
name: "libc_musl",
@ -1875,10 +1885,10 @@ func TestCcLibrary_SystemSharedLibsMuslEmpty(t *testing.T) {
Description: "cc_library system_shared_lib empty for musl variant",
ModuleTypeUnderTest: "cc_library",
ModuleTypeUnderTestFactory: cc.LibraryFactory,
StubbedBuildDefinitions: []string{"libc_musl"},
Blueprint: soongCcLibraryPreamble + `
cc_library {
name: "libc_musl",
bazel_module: { bp2build_available: false },
}
cc_library {
@ -1928,14 +1938,13 @@ func TestCcLibrary_SystemSharedLibsSharedAndRoot(t *testing.T) {
Description: "cc_library system_shared_libs set for shared and root",
ModuleTypeUnderTest: "cc_library",
ModuleTypeUnderTestFactory: cc.LibraryFactory,
StubbedBuildDefinitions: []string{"libc", "libm"},
Blueprint: soongCcLibraryPreamble + `
cc_library {
name: "libc",
bazel_module: { bp2build_available: false },
}
cc_library {
name: "libm",
bazel_module: { bp2build_available: false },
}
cc_library {
@ -2506,6 +2515,7 @@ func TestCcLibraryExternalConvertedProtoFilegroups(t *testing.T) {
runCcLibraryTestCase(t, Bp2buildTestCase{
ModuleTypeUnderTest: "cc_library",
ModuleTypeUnderTestFactory: cc.LibraryFactory,
StubbedBuildDefinitions: []string{"//path/to/A:a_fg_proto"},
Filesystem: map[string]string{
"path/to/A/Android.bp": `
filegroup {
@ -2549,11 +2559,12 @@ func TestCcLibraryProtoFilegroups(t *testing.T) {
runCcLibraryTestCase(t, Bp2buildTestCase{
ModuleTypeUnderTest: "cc_library",
ModuleTypeUnderTestFactory: cc.LibraryFactory,
StubbedBuildDefinitions: []string{"a_fg_proto", "b_protos", "c-proto-srcs", "proto-srcs-d"},
Blueprint: soongCcProtoPreamble +
SimpleModuleDoNotConvertBp2build("filegroup", "a_fg_proto") +
SimpleModuleDoNotConvertBp2build("filegroup", "b_protos") +
SimpleModuleDoNotConvertBp2build("filegroup", "c-proto-srcs") +
SimpleModuleDoNotConvertBp2build("filegroup", "proto-srcs-d") + `
simpleModule("filegroup", "a_fg_proto") +
simpleModule("filegroup", "b_protos") +
simpleModule("filegroup", "c-proto-srcs") +
simpleModule("filegroup", "proto-srcs-d") + `
cc_library {
name: "a",
srcs: [":a_fg_proto"],
@ -2849,11 +2860,11 @@ func TestCcLibraryStubsAcrossConfigsDuplicatesRemoved(t *testing.T) {
Filesystem: map[string]string{
"bar.map.txt": "",
},
StubbedBuildDefinitions: []string{"barlib"},
Blueprint: `
cc_library {
name: "barlib",
stubs: { symbol_file: "bar.map.txt", versions: ["28", "29", "current"] },
bazel_module: { bp2build_available: false },
}
cc_library {
name: "foolib",
@ -2884,16 +2895,15 @@ func TestCcLibraryExcludesLibsHost(t *testing.T) {
Filesystem: map[string]string{
"bar.map.txt": "",
},
Blueprint: SimpleModuleDoNotConvertBp2build("cc_library", "bazlib") + `
StubbedBuildDefinitions: []string{"bazlib", "quxlib", "barlib"},
Blueprint: simpleModule("cc_library", "bazlib") + `
cc_library {
name: "quxlib",
stubs: { symbol_file: "bar.map.txt", versions: ["current"] },
bazel_module: { bp2build_available: false },
}
cc_library {
name: "barlib",
stubs: { symbol_file: "bar.map.txt", versions: ["28", "29", "current"] },
bazel_module: { bp2build_available: false },
}
cc_library {
name: "foolib",
@ -3007,18 +3017,18 @@ func TestCCLibraryRuntimeDeps(t *testing.T) {
cc_library {
name: "foo",
runtime_libs: ["foo"],
runtime_libs: ["bar"],
}`,
ExpectedBazelTargets: []string{
MakeBazelTarget("cc_library_shared", "bar", AttrNameToString{
"local_includes": `["."]`,
}),
MakeBazelTarget("cc_library_static", "foo_bp2build_cc_library_static", AttrNameToString{
"runtime_deps": `[":foo"]`,
"runtime_deps": `[":bar"]`,
"local_includes": `["."]`,
}),
MakeBazelTarget("cc_library_shared", "foo", AttrNameToString{
"runtime_deps": `[":foo"]`,
"runtime_deps": `[":bar"]`,
"local_includes": `["."]`,
}),
},
@ -3229,6 +3239,7 @@ func TestCcLibraryWithNonAdjacentAidlFilegroup(t *testing.T) {
Description: "cc_library with non aidl filegroup",
ModuleTypeUnderTest: "cc_library",
ModuleTypeUnderTestFactory: cc.LibraryFactory,
StubbedBuildDefinitions: []string{"//path/to/A:A_aidl"},
Filesystem: map[string]string{
"path/to/A/Android.bp": `
filegroup {
@ -3518,6 +3529,7 @@ func TestCcLibraryWithAidlAndLibs(t *testing.T) {
Description: "cc_aidl_library depends on libs from parent cc_library_static",
ModuleTypeUnderTest: "cc_library",
ModuleTypeUnderTestFactory: cc.LibraryFactory,
StubbedBuildDefinitions: []string{"bar-static", "baz-static", "bar-shared", "baz-shared"},
Blueprint: `
cc_library_static {
name: "foo",
@ -3539,10 +3551,10 @@ cc_library_static {
"baz-shared",
],
}` +
SimpleModuleDoNotConvertBp2build("cc_library_static", "bar-static") +
SimpleModuleDoNotConvertBp2build("cc_library_static", "baz-static") +
SimpleModuleDoNotConvertBp2build("cc_library", "bar-shared") +
SimpleModuleDoNotConvertBp2build("cc_library", "baz-shared"),
simpleModule("cc_library_static", "bar-static") +
simpleModule("cc_library_static", "baz-static") +
simpleModule("cc_library", "bar-shared") +
simpleModule("cc_library", "baz-shared"),
ExpectedBazelTargets: []string{
MakeBazelTarget("aidl_library", "foo_aidl_library", AttrNameToString{
"srcs": `["Foo.aidl"]`,
@ -4086,17 +4098,16 @@ func TestCcLibraryInApexWithStubSharedLibs(t *testing.T) {
Description: "cc_library with in apex with stub shared_libs and export_shared_lib_headers",
ModuleTypeUnderTest: "cc_library",
ModuleTypeUnderTestFactory: cc.LibraryFactory,
StubbedBuildDefinitions: []string{"barlib", "bazlib"},
Blueprint: `
cc_library {
name: "barlib",
stubs: { symbol_file: "bar.map.txt", versions: ["28", "29", "current"] },
bazel_module: { bp2build_available: false },
apex_available: ["//apex_available:platform",],
}
cc_library {
name: "bazlib",
stubs: { symbol_file: "bar.map.txt", versions: ["28", "29", "current"] },
bazel_module: { bp2build_available: false },
apex_available: ["//apex_available:platform",],
}
cc_library {
@ -4472,6 +4483,7 @@ func TestCcLibraryYaccConversion(t *testing.T) {
Description: "cc_library is built from .y/.yy files",
ModuleTypeUnderTest: "cc_library",
ModuleTypeUnderTestFactory: cc.LibraryFactory,
StubbedBuildDefinitions: []string{"staticlib", "sharedlib"},
Blueprint: soongCcLibraryPreamble + `cc_library {
name: "a",
srcs: [
@ -4488,11 +4500,9 @@ func TestCcLibraryYaccConversion(t *testing.T) {
}
cc_library_static {
name: "staticlib",
bazel_module: { bp2build_available: false },
}
cc_library {
name: "sharedlib",
bazel_module: { bp2build_available: false },
}
`,
ExpectedBazelTargets: []string{
@ -4746,7 +4756,7 @@ cc_library_static {
canonical_path_from_root: true,
}
}
` + SimpleModuleDoNotConvertBp2build("cc_library", "libprotobuf-cpp-lite"),
` + simpleModule("cc_library", "libprotobuf-cpp-lite"),
Filesystem: map[string]string{
"bar/Android.bp": "",
"baz/subbaz/Android.bp": "",
@ -4814,7 +4824,7 @@ cc_library_static {
canonical_path_from_root: false,
}
}
` + SimpleModuleDoNotConvertBp2build("cc_library", "libprotobuf-cpp-lite"),
` + simpleModule("cc_library", "libprotobuf-cpp-lite"),
Filesystem: map[string]string{
"bar/Android.bp": "",
"baz/subbaz/Android.bp": "",
@ -4884,7 +4894,7 @@ cc_library_static {
include_dirs: ["bar"],
}
}
` + SimpleModuleDoNotConvertBp2build("cc_library", "libprotobuf-cpp-lite"),
` + simpleModule("cc_library", "libprotobuf-cpp-lite"),
Filesystem: map[string]string{
"bar/Android.bp": "",
"bar/bar.proto": "",
@ -4955,7 +4965,7 @@ cc_library_static {
include_dirs: ["baz"],
}
}
` + SimpleModuleDoNotConvertBp2build("cc_library", "libprotobuf-cpp-lite"),
` + simpleModule("cc_library", "libprotobuf-cpp-lite"),
Filesystem: map[string]string{
"bar/Android.bp": "", // package boundary
"baz/Android.bp": "",
@ -4990,7 +5000,14 @@ func TestProtoLocalIncludeDirs(t *testing.T) {
Description: "cc_library depends on .proto files using proto.local_include_dirs",
ModuleTypeUnderTest: "cc_library",
ModuleTypeUnderTestFactory: cc.LibraryFactory,
Blueprint: SimpleModuleDoNotConvertBp2build("cc_library", "libprotobuf-cpp-lite"),
Blueprint: `
cc_library {
name: "libprotobuf-cpp-lite",
// TODO: b/285631638 - A stubbed proto library dependency does not work as a protolib
// dependency of cc_library_static.
bazel_module: { bp2build_available: false },
}
`,
Filesystem: map[string]string{
"foo/Android.bp": `cc_library_static {
name: "foo",
@ -5047,7 +5064,7 @@ func TestProtoLibraryForIncludeDirsIsOsAgnostic(t *testing.T) {
Description: "proto_library generated for proto.include_dirs is compatible for all axes",
ModuleTypeUnderTest: "cc_library",
ModuleTypeUnderTestFactory: cc.LibraryFactory,
Blueprint: SimpleModuleDoNotConvertBp2build("cc_library", "libprotobuf-cpp-lite") + `
Blueprint: simpleModule("cc_library", "libprotobuf-cpp-lite") + `
cc_library {
name: "foo_device",
device_supported: true, // this is the default behavior, but added explicitly here for illustration

View file

@ -131,30 +131,26 @@ func TestCcLibraryHeadersOsSpecificHeader(t *testing.T) {
ModuleTypeUnderTest: "cc_library_headers",
ModuleTypeUnderTestFactory: cc.LibraryHeaderFactory,
Filesystem: map[string]string{},
StubbedBuildDefinitions: []string{"android-lib", "base-lib", "darwin-lib",
"linux-lib", "linux_bionic-lib", "windows-lib"},
Blueprint: soongCcLibraryPreamble + `
cc_library_headers {
name: "android-lib",
bazel_module: { bp2build_available: false },
}
cc_library_headers {
name: "base-lib",
bazel_module: { bp2build_available: false },
}
cc_library_headers {
name: "darwin-lib",
bazel_module: { bp2build_available: false },
}
cc_library_headers {
name: "linux-lib",
bazel_module: { bp2build_available: false },
}
cc_library_headers {
name: "linux_bionic-lib",
bazel_module: { bp2build_available: false },
}
cc_library_headers {
name: "windows-lib",
bazel_module: { bp2build_available: false },
}
cc_library_headers {
name: "foo_headers",
@ -205,14 +201,13 @@ func TestCcLibraryHeadersOsSpecficHeaderLibsExportHeaderLibHeaders(t *testing.T)
ModuleTypeUnderTest: "cc_library_headers",
ModuleTypeUnderTestFactory: cc.LibraryHeaderFactory,
Filesystem: map[string]string{},
StubbedBuildDefinitions: []string{"android-lib", "exported-lib"},
Blueprint: soongCcLibraryPreamble + `
cc_library_headers {
name: "android-lib",
bazel_module: { bp2build_available: false },
}
cc_library_headers {
name: "exported-lib",
bazel_module: { bp2build_available: false },
}
cc_library_headers {
name: "foo_headers",
@ -333,6 +328,7 @@ func TestCcLibraryHeadersExportedStaticLibHeadersReexported(t *testing.T) {
ModuleTypeUnderTest: "cc_library_headers",
ModuleTypeUnderTestFactory: cc.LibraryHeaderFactory,
Filesystem: map[string]string{},
StubbedBuildDefinitions: []string{"foo_export"},
Blueprint: soongCcLibraryHeadersPreamble + `
cc_library_headers {
name: "foo_headers",
@ -340,7 +336,7 @@ cc_library_headers {
static_libs: ["foo_export", "foo_no_reexport"],
bazel_module: { bp2build_available: true },
}
` + SimpleModuleDoNotConvertBp2build("cc_library_headers", "foo_export"),
` + simpleModule("cc_library_headers", "foo_export"),
ExpectedBazelTargets: []string{
MakeBazelTarget("cc_library_headers", "foo_headers", AttrNameToString{
"deps": `[":foo_export"]`,
@ -355,6 +351,7 @@ func TestCcLibraryHeadersExportedSharedLibHeadersReexported(t *testing.T) {
ModuleTypeUnderTest: "cc_library_headers",
ModuleTypeUnderTestFactory: cc.LibraryHeaderFactory,
Filesystem: map[string]string{},
StubbedBuildDefinitions: []string{"foo_export"},
Blueprint: soongCcLibraryHeadersPreamble + `
cc_library_headers {
name: "foo_headers",
@ -362,7 +359,7 @@ cc_library_headers {
shared_libs: ["foo_export", "foo_no_reexport"],
bazel_module: { bp2build_available: true },
}
` + SimpleModuleDoNotConvertBp2build("cc_library_headers", "foo_export"),
` + simpleModule("cc_library_headers", "foo_export"),
ExpectedBazelTargets: []string{
MakeBazelTarget("cc_library_headers", "foo_headers", AttrNameToString{
"deps": `[":foo_export"]`,
@ -377,6 +374,7 @@ func TestCcLibraryHeadersExportedHeaderLibHeadersReexported(t *testing.T) {
ModuleTypeUnderTest: "cc_library_headers",
ModuleTypeUnderTestFactory: cc.LibraryHeaderFactory,
Filesystem: map[string]string{},
StubbedBuildDefinitions: []string{"foo_export"},
Blueprint: soongCcLibraryHeadersPreamble + `
cc_library_headers {
name: "foo_headers",
@ -384,7 +382,7 @@ cc_library_headers {
header_libs: ["foo_export", "foo_no_reexport"],
bazel_module: { bp2build_available: true },
}
` + SimpleModuleDoNotConvertBp2build("cc_library_headers", "foo_export"),
` + simpleModule("cc_library_headers", "foo_export"),
ExpectedBazelTargets: []string{
MakeBazelTarget("cc_library_headers", "foo_headers", AttrNameToString{
"deps": `[":foo_export"]`,
@ -399,13 +397,14 @@ func TestCcLibraryHeadersWholeStaticLibsReexported(t *testing.T) {
ModuleTypeUnderTest: "cc_library_headers",
ModuleTypeUnderTestFactory: cc.LibraryHeaderFactory,
Filesystem: map[string]string{},
StubbedBuildDefinitions: []string{"foo_export"},
Blueprint: soongCcLibraryHeadersPreamble + `
cc_library_headers {
name: "foo_headers",
whole_static_libs: ["foo_export"],
bazel_module: { bp2build_available: true },
}
` + SimpleModuleDoNotConvertBp2build("cc_library_headers", "foo_export"),
` + simpleModule("cc_library_headers", "foo_export"),
ExpectedBazelTargets: []string{
MakeBazelTarget("cc_library_headers", "foo_headers", AttrNameToString{
"deps": `[":foo_export"]`,

View file

@ -38,6 +38,7 @@ func registerCcLibrarySharedModuleTypes(ctx android.RegistrationContext) {
func runCcLibrarySharedTestCase(t *testing.T, tc Bp2buildTestCase) {
t.Helper()
t.Parallel()
tc.StubbedBuildDefinitions = append(tc.StubbedBuildDefinitions, "libbuildversion", "libprotobuf-cpp-lite", "libprotobuf-cpp-full")
(&tc).ModuleTypeUnderTest = "cc_library_shared"
(&tc).ModuleTypeUnderTestFactory = cc.LibrarySharedFactory
RunBp2BuildTestCase(t, registerCcLibrarySharedModuleTypes, tc)
@ -45,7 +46,8 @@ func runCcLibrarySharedTestCase(t *testing.T, tc Bp2buildTestCase) {
func TestCcLibrarySharedSimple(t *testing.T) {
runCcLibrarySharedTestCase(t, Bp2buildTestCase{
Description: "cc_library_shared simple overall test",
Description: "cc_library_shared simple overall test",
StubbedBuildDefinitions: []string{"header_lib_1", "header_lib_2", "whole_static_lib_1", "whole_static_lib_2", "shared_lib_1", "shared_lib_2"},
Filesystem: map[string]string{
// NOTE: include_dir headers *should not* appear in Bazel hdrs later (?)
"include_dir_1/include_dir_1_a.h": "",
@ -70,37 +72,31 @@ func TestCcLibrarySharedSimple(t *testing.T) {
cc_library_headers {
name: "header_lib_1",
export_include_dirs: ["header_lib_1"],
bazel_module: { bp2build_available: false },
}
cc_library_headers {
name: "header_lib_2",
export_include_dirs: ["header_lib_2"],
bazel_module: { bp2build_available: false },
}
cc_library_shared {
name: "shared_lib_1",
srcs: ["shared_lib_1.cc"],
bazel_module: { bp2build_available: false },
}
cc_library_shared {
name: "shared_lib_2",
srcs: ["shared_lib_2.cc"],
bazel_module: { bp2build_available: false },
}
cc_library_static {
name: "whole_static_lib_1",
srcs: ["whole_static_lib_1.cc"],
bazel_module: { bp2build_available: false },
}
cc_library_static {
name: "whole_static_lib_2",
srcs: ["whole_static_lib_2.cc"],
bazel_module: { bp2build_available: false },
}
cc_library_shared {
@ -186,16 +182,15 @@ cc_library_shared {
func TestCcLibrarySharedArchSpecificSharedLib(t *testing.T) {
runCcLibrarySharedTestCase(t, Bp2buildTestCase{
Description: "cc_library_shared arch-specific shared_libs with whole_static_libs",
Filesystem: map[string]string{},
Description: "cc_library_shared arch-specific shared_libs with whole_static_libs",
Filesystem: map[string]string{},
StubbedBuildDefinitions: []string{"static_dep", "shared_dep"},
Blueprint: soongCcLibrarySharedPreamble + `
cc_library_static {
name: "static_dep",
bazel_module: { bp2build_available: false },
}
cc_library_shared {
name: "shared_dep",
bazel_module: { bp2build_available: false },
}
cc_library_shared {
name: "foo_shared",
@ -510,6 +505,7 @@ func TestCcLibrarySharedUseVersionLib(t *testing.T) {
Filesystem: map[string]string{
soongCcVersionLibBpPath: soongCcVersionLibBp,
},
StubbedBuildDefinitions: []string{"//build/soong/cc/libbuildversion:libbuildversion"},
Blueprint: soongCcProtoPreamble + `cc_library_shared {
name: "foo",
use_version_lib: true,
@ -564,11 +560,11 @@ func TestCcLibrarySharedStubs_UseImplementationInSameApex(t *testing.T) {
Description: "cc_library_shared stubs",
ModuleTypeUnderTest: "cc_library_shared",
ModuleTypeUnderTestFactory: cc.LibrarySharedFactory,
StubbedBuildDefinitions: []string{"a"},
Blueprint: soongCcLibrarySharedPreamble + `
cc_library_shared {
name: "a",
stubs: { symbol_file: "a.map.txt", versions: ["28", "29", "current"] },
bazel_module: { bp2build_available: false },
include_build_directory: false,
apex_available: ["made_up_apex"],
}
@ -593,11 +589,11 @@ func TestCcLibrarySharedStubs_UseStubsInDifferentApex(t *testing.T) {
Description: "cc_library_shared stubs",
ModuleTypeUnderTest: "cc_library_shared",
ModuleTypeUnderTestFactory: cc.LibrarySharedFactory,
StubbedBuildDefinitions: []string{"a"},
Blueprint: soongCcLibrarySharedPreamble + `
cc_library_shared {
name: "a",
stubs: { symbol_file: "a.map.txt", versions: ["28", "29", "current"] },
bazel_module: { bp2build_available: false },
include_build_directory: false,
apex_available: ["apex_a"],
}
@ -627,19 +623,18 @@ func TestCcLibrarySharedStubs_UseStubsFromMultipleApiDomains(t *testing.T) {
Description: "cc_library_shared stubs",
ModuleTypeUnderTest: "cc_library_shared",
ModuleTypeUnderTestFactory: cc.LibrarySharedFactory,
StubbedBuildDefinitions: []string{"libplatform_stable", "libapexfoo_stable"},
Blueprint: soongCcLibrarySharedPreamble + `
cc_library_shared {
name: "libplatform_stable",
stubs: { symbol_file: "libplatform_stable.map.txt", versions: ["28", "29", "current"] },
apex_available: ["//apex_available:platform"],
bazel_module: { bp2build_available: false },
include_build_directory: false,
}
cc_library_shared {
name: "libapexfoo_stable",
stubs: { symbol_file: "libapexfoo_stable.map.txt", versions: ["28", "29", "current"] },
apex_available: ["apexfoo"],
bazel_module: { bp2build_available: false },
include_build_directory: false,
}
cc_library_shared {
@ -684,11 +679,11 @@ func TestCcLibrarySharedStubs_IgnorePlatformAvailable(t *testing.T) {
Description: "cc_library_shared stubs",
ModuleTypeUnderTest: "cc_library_shared",
ModuleTypeUnderTestFactory: cc.LibrarySharedFactory,
StubbedBuildDefinitions: []string{"a"},
Blueprint: soongCcLibrarySharedPreamble + `
cc_library_shared {
name: "a",
stubs: { symbol_file: "a.map.txt", versions: ["28", "29", "current"] },
bazel_module: { bp2build_available: false },
include_build_directory: false,
apex_available: ["//apex_available:platform", "apex_a"],
}
@ -720,11 +715,11 @@ func TestCcLibraryDoesNotDropStubDepIfNoVariationAcrossAxis(t *testing.T) {
Description: "cc_library depeends on impl for all configurations",
ModuleTypeUnderTest: "cc_library_shared",
ModuleTypeUnderTestFactory: cc.LibrarySharedFactory,
StubbedBuildDefinitions: []string{"a"},
Blueprint: soongCcLibrarySharedPreamble + `
cc_library_shared {
name: "a",
stubs: { symbol_file: "a.map.txt", versions: ["28", "29", "current"] },
bazel_module: { bp2build_available: false },
apex_available: ["//apex_available:platform"],
}
cc_library_shared {
@ -747,11 +742,11 @@ func TestCcLibrarySharedStubs_MultipleApexAvailable(t *testing.T) {
runCcLibrarySharedTestCase(t, Bp2buildTestCase{
ModuleTypeUnderTest: "cc_library_shared",
ModuleTypeUnderTestFactory: cc.LibrarySharedFactory,
StubbedBuildDefinitions: []string{"a"},
Blueprint: soongCcLibrarySharedPreamble + `
cc_library_shared {
name: "a",
stubs: { symbol_file: "a.map.txt", versions: ["28", "29", "current"] },
bazel_module: { bp2build_available: false },
include_build_directory: false,
apex_available: ["//apex_available:platform", "apex_a", "apex_b"],
}
@ -929,14 +924,14 @@ func TestCCLibrarySharedRuntimeDeps(t *testing.T) {
cc_library_shared {
name: "foo",
runtime_libs: ["foo"],
runtime_libs: ["bar"],
}`,
ExpectedBazelTargets: []string{
MakeBazelTarget("cc_library_shared", "bar", AttrNameToString{
"local_includes": `["."]`,
}),
MakeBazelTarget("cc_library_shared", "foo", AttrNameToString{
"runtime_deps": `[":foo"]`,
"runtime_deps": `[":bar"]`,
"local_includes": `["."]`,
}),
},

View file

@ -96,41 +96,37 @@ func TestCcLibraryStaticSimple(t *testing.T) {
"implicit_include_1.h": "",
"implicit_include_2.h": "",
},
StubbedBuildDefinitions: []string{"header_lib_1", "header_lib_2",
"static_lib_1", "static_lib_2", "whole_static_lib_1", "whole_static_lib_2"},
Blueprint: soongCcLibraryStaticPreamble + `
cc_library_headers {
name: "header_lib_1",
export_include_dirs: ["header_lib_1"],
bazel_module: { bp2build_available: false },
}
cc_library_headers {
name: "header_lib_2",
export_include_dirs: ["header_lib_2"],
bazel_module: { bp2build_available: false },
}
cc_library_static {
name: "static_lib_1",
srcs: ["static_lib_1.cc"],
bazel_module: { bp2build_available: false },
}
cc_library_static {
name: "static_lib_2",
srcs: ["static_lib_2.cc"],
bazel_module: { bp2build_available: false },
}
cc_library_static {
name: "whole_static_lib_1",
srcs: ["whole_static_lib_1.cc"],
bazel_module: { bp2build_available: false },
}
cc_library_static {
name: "whole_static_lib_2",
srcs: ["whole_static_lib_2.cc"],
bazel_module: { bp2build_available: false },
}
cc_library_static {
@ -392,16 +388,15 @@ cc_library_static {
func TestCcLibraryStaticArchSpecificStaticLib(t *testing.T) {
runCcLibraryStaticTestCase(t, Bp2buildTestCase{
Description: "cc_library_static arch-specific static_libs",
Filesystem: map[string]string{},
Description: "cc_library_static arch-specific static_libs",
Filesystem: map[string]string{},
StubbedBuildDefinitions: []string{"static_dep", "static_dep2"},
Blueprint: soongCcLibraryStaticPreamble + `
cc_library_static {
name: "static_dep",
bazel_module: { bp2build_available: false },
}
cc_library_static {
name: "static_dep2",
bazel_module: { bp2build_available: false },
}
cc_library_static {
name: "foo_static",
@ -425,16 +420,15 @@ cc_library_static {
func TestCcLibraryStaticOsSpecificStaticLib(t *testing.T) {
runCcLibraryStaticTestCase(t, Bp2buildTestCase{
Description: "cc_library_static os-specific static_libs",
Filesystem: map[string]string{},
Description: "cc_library_static os-specific static_libs",
Filesystem: map[string]string{},
StubbedBuildDefinitions: []string{"static_dep", "static_dep2"},
Blueprint: soongCcLibraryStaticPreamble + `
cc_library_static {
name: "static_dep",
bazel_module: { bp2build_available: false },
}
cc_library_static {
name: "static_dep2",
bazel_module: { bp2build_available: false },
}
cc_library_static {
name: "foo_static",
@ -460,22 +454,20 @@ func TestCcLibraryStaticBaseArchOsSpecificStaticLib(t *testing.T) {
runCcLibraryStaticTestCase(t, Bp2buildTestCase{
Description: "cc_library_static base, arch and os-specific static_libs",
Filesystem: map[string]string{},
StubbedBuildDefinitions: []string{"static_dep", "static_dep2", "static_dep3",
"static_dep4"},
Blueprint: soongCcLibraryStaticPreamble + `
cc_library_static {
name: "static_dep",
bazel_module: { bp2build_available: false },
}
cc_library_static {
name: "static_dep2",
bazel_module: { bp2build_available: false },
}
cc_library_static {
name: "static_dep3",
bazel_module: { bp2build_available: false },
}
cc_library_static {
name: "static_dep4",
bazel_module: { bp2build_available: false },
}
cc_library_static {
name: "foo_static",
@ -756,12 +748,12 @@ cc_library_static {
func TestCcLibraryStaticMultipleDepSameName(t *testing.T) {
runCcLibraryStaticTestCase(t, Bp2buildTestCase{
Description: "cc_library_static multiple dep same name panic",
Filesystem: map[string]string{},
Description: "cc_library_static multiple dep same name panic",
Filesystem: map[string]string{},
StubbedBuildDefinitions: []string{"static_dep"},
Blueprint: soongCcLibraryStaticPreamble + `
cc_library_static {
name: "static_dep",
bazel_module: { bp2build_available: false },
}
cc_library_static {
name: "foo_static",
@ -961,17 +953,16 @@ cc_library_static {
func TestCcLibraryStaticGeneratedHeadersAllPartitions(t *testing.T) {
runCcLibraryStaticTestCase(t, Bp2buildTestCase{
StubbedBuildDefinitions: []string{"generated_hdr", "export_generated_hdr"},
Blueprint: soongCcLibraryStaticPreamble + `
genrule {
name: "generated_hdr",
cmd: "nothing to see here",
bazel_module: { bp2build_available: false },
}
genrule {
name: "export_generated_hdr",
cmd: "nothing to see here",
bazel_module: { bp2build_available: false },
}
cc_library_static {
@ -1005,19 +996,18 @@ cc_library_static {
func TestCcLibraryStaticGeneratedHeadersMultipleExports(t *testing.T) {
runCcLibraryStaticTestCase(t, Bp2buildTestCase{
StubbedBuildDefinitions: []string{"generated_hdr", "export_generated_hdr"},
Blueprint: soongCcLibraryStaticPreamble + `
genrule {
name: "generated_hdr",
cmd: "nothing to see here",
export_include_dirs: ["foo", "bar"],
bazel_module: { bp2build_available: false },
}
genrule {
name: "export_generated_hdr",
cmd: "nothing to see here",
export_include_dirs: ["a", "b"],
bazel_module: { bp2build_available: false },
}
cc_library_static {
@ -1040,22 +1030,26 @@ cc_library_static {
func TestCcLibraryStaticArchSrcsExcludeSrcsGeneratedFiles(t *testing.T) {
runCcLibraryStaticTestCase(t, Bp2buildTestCase{
Description: "cc_library_static arch srcs/exclude_srcs with generated files",
StubbedBuildDefinitions: []string{"//dep:generated_src_other_pkg", "//dep:generated_hdr_other_pkg",
"//dep:generated_src_other_pkg_x86", "//dep:generated_hdr_other_pkg_x86", "//dep:generated_hdr_other_pkg_android",
"generated_src", "generated_src_not_x86", "generated_src_android", "generated_hdr",
},
Filesystem: map[string]string{
"common.cpp": "",
"for-x86.cpp": "",
"not-for-x86.cpp": "",
"not-for-everything.cpp": "",
"dep/Android.bp": SimpleModuleDoNotConvertBp2build("genrule", "generated_src_other_pkg") +
SimpleModuleDoNotConvertBp2build("genrule", "generated_hdr_other_pkg") +
SimpleModuleDoNotConvertBp2build("genrule", "generated_src_other_pkg_x86") +
SimpleModuleDoNotConvertBp2build("genrule", "generated_hdr_other_pkg_x86") +
SimpleModuleDoNotConvertBp2build("genrule", "generated_hdr_other_pkg_android"),
"dep/Android.bp": simpleModule("genrule", "generated_src_other_pkg") +
simpleModule("genrule", "generated_hdr_other_pkg") +
simpleModule("genrule", "generated_src_other_pkg_x86") +
simpleModule("genrule", "generated_hdr_other_pkg_x86") +
simpleModule("genrule", "generated_hdr_other_pkg_android"),
},
Blueprint: soongCcLibraryStaticPreamble +
SimpleModuleDoNotConvertBp2build("genrule", "generated_src") +
SimpleModuleDoNotConvertBp2build("genrule", "generated_src_not_x86") +
SimpleModuleDoNotConvertBp2build("genrule", "generated_src_android") +
SimpleModuleDoNotConvertBp2build("genrule", "generated_hdr") + `
simpleModule("genrule", "generated_src") +
simpleModule("genrule", "generated_src_not_x86") +
simpleModule("genrule", "generated_src_android") +
simpleModule("genrule", "generated_hdr") + `
cc_library_static {
name: "foo_static",
srcs: ["common.cpp", "not-for-*.cpp"],
@ -1340,11 +1334,11 @@ cc_library_static {
func TestStaticLibrary_SystemSharedLibsBionicEmpty(t *testing.T) {
runCcLibraryStaticTestCase(t, Bp2buildTestCase{
Description: "cc_library_static system_shared_lib empty for bionic variant",
Description: "cc_library_static system_shared_lib empty for bionic variant",
StubbedBuildDefinitions: []string{"libc_musl"},
Blueprint: soongCcLibraryStaticPreamble + `
cc_library {
name: "libc_musl",
bazel_module: { bp2build_available: false },
}
cc_library_static {
@ -1374,11 +1368,11 @@ func TestStaticLibrary_SystemSharedLibsLinuxBionicEmpty(t *testing.T) {
// only for linux_bionic, but `android` had `["libc", "libdl", "libm"].
// b/195791252 tracks the fix.
runCcLibraryStaticTestCase(t, Bp2buildTestCase{
Description: "cc_library_static system_shared_lib empty for linux_bionic variant",
Description: "cc_library_static system_shared_lib empty for linux_bionic variant",
StubbedBuildDefinitions: []string{"libc_musl"},
Blueprint: soongCcLibraryStaticPreamble + `
cc_library {
name: "libc_musl",
bazel_module: { bp2build_available: false },
}
cc_library_static {
@ -1458,12 +1452,12 @@ cc_library_static {
func TestStaticLibrary_SystemSharedLibsBionic(t *testing.T) {
runCcLibraryStaticTestCase(t, Bp2buildTestCase{
Description: "cc_library_static system_shared_libs set for bionic variant",
Description: "cc_library_static system_shared_libs set for bionic variant",
StubbedBuildDefinitions: []string{"libc", "libc_musl"},
Blueprint: soongCcLibraryStaticPreamble +
SimpleModuleDoNotConvertBp2build("cc_library", "libc") + `
simpleModule("cc_library", "libc") + `
cc_library {
name: "libc_musl",
bazel_module: { bp2build_available: false },
}
cc_library_static {
@ -1491,13 +1485,13 @@ cc_library_static {
func TestStaticLibrary_SystemSharedLibsLinuxRootAndLinuxBionic(t *testing.T) {
runCcLibraryStaticTestCase(t, Bp2buildTestCase{
Description: "cc_library_static system_shared_libs set for root and linux_bionic variant",
Description: "cc_library_static system_shared_libs set for root and linux_bionic variant",
StubbedBuildDefinitions: []string{"libc", "libm", "libc_musl"},
Blueprint: soongCcLibraryStaticPreamble +
SimpleModuleDoNotConvertBp2build("cc_library", "libc") +
SimpleModuleDoNotConvertBp2build("cc_library", "libm") + `
simpleModule("cc_library", "libc") +
simpleModule("cc_library", "libm") + `
cc_library {
name: "libc_musl",
bazel_module: { bp2build_available: false },
}
cc_library_static {
@ -1525,9 +1519,10 @@ cc_library_static {
func TestCcLibrarystatic_SystemSharedLibUsedAsDep(t *testing.T) {
runCcLibraryStaticTestCase(t, Bp2buildTestCase{
Description: "cc_library_static system_shared_lib empty for linux_bionic variant",
Description: "cc_library_static system_shared_lib empty for linux_bionic variant",
StubbedBuildDefinitions: []string{"libc", "libm"},
Blueprint: soongCcLibraryStaticPreamble +
SimpleModuleDoNotConvertBp2build("cc_library", "libc") + `
simpleModule("cc_library", "libc") + `
cc_library {
name: "libm",
@ -1535,7 +1530,6 @@ cc_library {
symbol_file: "libm.map.txt",
versions: ["current"],
},
bazel_module: { bp2build_available: false },
apex_available: ["com.android.runtime"],
}
@ -1613,6 +1607,7 @@ cc_library_static {
func TestCcLibraryStaticProto(t *testing.T) {
runCcLibraryStaticTestCase(t, Bp2buildTestCase{
StubbedBuildDefinitions: []string{"libprotobuf-cpp-full", "libprotobuf-cpp-lite"},
Blueprint: soongCcProtoPreamble + `cc_library_static {
name: "foo",
srcs: ["foo.proto"],
@ -1639,6 +1634,7 @@ func TestCcLibraryStaticUseVersionLib(t *testing.T) {
Filesystem: map[string]string{
soongCcVersionLibBpPath: soongCcVersionLibBp,
},
StubbedBuildDefinitions: []string{"//build/soong/cc/libbuildversion:libbuildversion", "libprotobuf-cpp-full", "libprotobuf-cpp-lite"},
Blueprint: soongCcProtoPreamble + `cc_library_static {
name: "foo",
use_version_lib: true,
@ -1658,6 +1654,8 @@ func TestCcLibraryStaticUseVersionLibHasDep(t *testing.T) {
Filesystem: map[string]string{
soongCcVersionLibBpPath: soongCcVersionLibBp,
},
StubbedBuildDefinitions: []string{"//build/soong/cc/libbuildversion:libbuildversion", "libprotobuf-cpp-full", "libprotobuf-cpp-lite"},
Blueprint: soongCcProtoPreamble + `cc_library_static {
name: "foo",
use_version_lib: true,
@ -1674,6 +1672,7 @@ func TestCcLibraryStaticUseVersionLibHasDep(t *testing.T) {
func TestCcLibraryStaticStdInFlags(t *testing.T) {
runCcLibraryStaticTestCase(t, Bp2buildTestCase{
StubbedBuildDefinitions: []string{"libprotobuf-cpp-full", "libprotobuf-cpp-lite"},
Blueprint: soongCcProtoPreamble + `cc_library_static {
name: "foo",
cflags: ["-std=candcpp"],
@ -1767,14 +1766,14 @@ func TestCCLibraryStaticRuntimeDeps(t *testing.T) {
cc_library_static {
name: "foo",
runtime_libs: ["foo"],
runtime_libs: ["bar"],
}`,
ExpectedBazelTargets: []string{
MakeBazelTarget("cc_library_shared", "bar", AttrNameToString{
"local_includes": `["."]`,
}),
MakeBazelTarget("cc_library_static", "foo", AttrNameToString{
"runtime_deps": `[":foo"]`,
"runtime_deps": `[":bar"]`,
"local_includes": `["."]`,
}),
},
@ -2260,6 +2259,7 @@ func TestCcLibraryWithProtoInGeneratedSrcs(t *testing.T) {
Description: "cc_library with a .proto file generated from a genrule",
ModuleTypeUnderTest: "cc_library_static",
ModuleTypeUnderTestFactory: cc.LibraryStaticFactory,
StubbedBuildDefinitions: []string{"libprotobuf-cpp-lite"},
Blueprint: soongCcLibraryPreamble + `
cc_library_static {
name: "mylib",
@ -2269,7 +2269,7 @@ genrule {
name: "myprotogen",
out: ["myproto.proto"],
}
` + SimpleModuleDoNotConvertBp2build("cc_library", "libprotobuf-cpp-lite"),
` + simpleModule("cc_library", "libprotobuf-cpp-lite"),
ExpectedBazelTargets: []string{
MakeBazelTarget("cc_library_static", "mylib", AttrNameToString{
"local_includes": `["."]`,

View file

@ -317,7 +317,8 @@ func TestCcObjectLinkerScript(t *testing.T) {
func TestCcObjectDepsAndLinkerScriptSelects(t *testing.T) {
runCcObjectTestCase(t, Bp2buildTestCase{
Description: "cc_object setting deps and linker_script across archs",
Description: "cc_object setting deps and linker_script across archs",
StubbedBuildDefinitions: []string{"x86_obj", "x86_64_obj", "arm_obj"},
Blueprint: `cc_object {
name: "foo",
srcs: ["base.cpp"],
@ -343,7 +344,6 @@ cc_object {
system_shared_libs: [],
srcs: ["x86.cpp"],
include_build_directory: false,
bazel_module: { bp2build_available: false },
}
cc_object {
@ -351,7 +351,6 @@ cc_object {
system_shared_libs: [],
srcs: ["x86_64.cpp"],
include_build_directory: false,
bazel_module: { bp2build_available: false },
}
cc_object {
@ -359,7 +358,6 @@ cc_object {
system_shared_libs: [],
srcs: ["arm.cpp"],
include_build_directory: false,
bazel_module: { bp2build_available: false },
}
`,
ExpectedBazelTargets: []string{

View file

@ -24,10 +24,11 @@ import (
)
type ccTestBp2buildTestCase struct {
description string
blueprint string
filesystem map[string]string
targets []testBazelTarget
description string
blueprint string
filesystem map[string]string
targets []testBazelTarget
stubbedBuildDefinitions []string
}
func registerCcTestModuleTypes(ctx android.RegistrationContext) {
@ -52,6 +53,7 @@ func runCcTestTestCase(t *testing.T, testCase ccTestBp2buildTestCase) {
ModuleTypeUnderTestFactory: cc.TestFactory,
Description: description,
Blueprint: testCase.blueprint,
StubbedBuildDefinitions: testCase.stubbedBuildDefinitions,
})
})
}
@ -59,6 +61,8 @@ func runCcTestTestCase(t *testing.T, testCase ccTestBp2buildTestCase) {
func TestBasicCcTest(t *testing.T) {
runCcTestTestCase(t, ccTestBp2buildTestCase{
description: "basic cc_test with commonly used attributes",
stubbedBuildDefinitions: []string{"libbuildversion", "libprotobuf-cpp-lite", "libprotobuf-cpp-full",
"foolib", "hostlib", "data_mod", "cc_bin", "cc_lib", "cc_test_lib2", "libgtest_main", "libgtest"},
blueprint: `
cc_test {
name: "mytest",
@ -89,14 +93,14 @@ cc_test_library {
host_supported: true,
include_build_directory: false,
}
` + SimpleModuleDoNotConvertBp2build("cc_library", "foolib") +
SimpleModuleDoNotConvertBp2build("cc_library_static", "hostlib") +
SimpleModuleDoNotConvertBp2build("genrule", "data_mod") +
SimpleModuleDoNotConvertBp2build("cc_binary", "cc_bin") +
SimpleModuleDoNotConvertBp2build("cc_library", "cc_lib") +
SimpleModuleDoNotConvertBp2build("cc_test_library", "cc_test_lib2") +
SimpleModuleDoNotConvertBp2build("cc_library_static", "libgtest_main") +
SimpleModuleDoNotConvertBp2build("cc_library_static", "libgtest"),
` + simpleModule("cc_library", "foolib") +
simpleModule("cc_library_static", "hostlib") +
simpleModule("genrule", "data_mod") +
simpleModule("cc_binary", "cc_bin") +
simpleModule("cc_library", "cc_lib") +
simpleModule("cc_test_library", "cc_test_lib2") +
simpleModule("cc_library_static", "libgtest_main") +
simpleModule("cc_library_static", "libgtest"),
targets: []testBazelTarget{
{"cc_library_shared", "cc_test_lib1", AttrNameToString{}},
{"cc_library_static", "cc_test_lib1_bp2build_cc_library_static", AttrNameToString{}},
@ -188,7 +192,8 @@ cc_test {
func TestCcTest_TestOptions_Tags(t *testing.T) {
runCcTestTestCase(t, ccTestBp2buildTestCase{
description: "cc test with test_options.tags converted to tags",
description: "cc test with test_options.tags converted to tags",
stubbedBuildDefinitions: []string{"libgtest_main", "libgtest"},
blueprint: `
cc_test {
name: "mytest",
@ -196,8 +201,8 @@ cc_test {
srcs: ["test.cpp"],
test_options: { tags: ["no-remote"] },
}
` + SimpleModuleDoNotConvertBp2build("cc_library_static", "libgtest_main") +
SimpleModuleDoNotConvertBp2build("cc_library_static", "libgtest"),
` + simpleModule("cc_library_static", "libgtest_main") +
simpleModule("cc_library_static", "libgtest"),
targets: []testBazelTarget{
{"cc_test", "mytest", AttrNameToString{
"tags": `["no-remote"]`,
@ -230,14 +235,15 @@ func TestCcTest_TestConfig(t *testing.T) {
filesystem: map[string]string{
"test_config.xml": "",
},
stubbedBuildDefinitions: []string{"libgtest_main", "libgtest"},
blueprint: `
cc_test {
name: "mytest",
srcs: ["test.cpp"],
test_config: "test_config.xml",
}
` + SimpleModuleDoNotConvertBp2build("cc_library_static", "libgtest_main") +
SimpleModuleDoNotConvertBp2build("cc_library_static", "libgtest"),
` + simpleModule("cc_library_static", "libgtest_main") +
simpleModule("cc_library_static", "libgtest"),
targets: []testBazelTarget{
{"cc_test", "mytest", AttrNameToString{
"local_includes": `["."]`,
@ -269,13 +275,14 @@ func TestCcTest_TestConfigAndroidTestXML(t *testing.T) {
"AndroidTest.xml": "",
"DynamicConfig.xml": "",
},
stubbedBuildDefinitions: []string{"libgtest_main", "libgtest"},
blueprint: `
cc_test {
name: "mytest",
srcs: ["test.cpp"],
}
` + SimpleModuleDoNotConvertBp2build("cc_library_static", "libgtest_main") +
SimpleModuleDoNotConvertBp2build("cc_library_static", "libgtest"),
` + simpleModule("cc_library_static", "libgtest_main") +
simpleModule("cc_library_static", "libgtest"),
targets: []testBazelTarget{
{"cc_test", "mytest", AttrNameToString{
"local_includes": `["."]`,
@ -307,6 +314,7 @@ func TestCcTest_TestConfigTemplateOptions(t *testing.T) {
filesystem: map[string]string{
"test_config_template.xml": "",
},
stubbedBuildDefinitions: []string{"libgtest_isolated_main", "liblog"},
blueprint: `
cc_test {
name: "mytest",
@ -315,8 +323,8 @@ cc_test {
auto_gen_config: true,
isolated: true,
}
` + SimpleModuleDoNotConvertBp2build("cc_library_static", "libgtest_isolated_main") +
SimpleModuleDoNotConvertBp2build("cc_library", "liblog"),
` + simpleModule("cc_library_static", "libgtest_isolated_main") +
simpleModule("cc_library", "liblog"),
targets: []testBazelTarget{
{"cc_test", "mytest", AttrNameToString{
"auto_generate_test_config": "True",
@ -347,15 +355,16 @@ cc_test {
func TestCcTest_WithExplicitGTestDepInAndroidBp(t *testing.T) {
runCcTestTestCase(t, ccTestBp2buildTestCase{
description: "cc test that lists libgtest in Android.bp should not have dups of libgtest in BUILD file",
description: "cc test that lists libgtest in Android.bp should not have dups of libgtest in BUILD file",
stubbedBuildDefinitions: []string{"libgtest_main", "libgtest"},
blueprint: `
cc_test {
name: "mytest",
srcs: ["test.cpp"],
static_libs: ["libgtest"],
}
` + SimpleModuleDoNotConvertBp2build("cc_library_static", "libgtest_main") +
SimpleModuleDoNotConvertBp2build("cc_library_static", "libgtest"),
` + simpleModule("cc_library_static", "libgtest_main") +
simpleModule("cc_library_static", "libgtest"),
targets: []testBazelTarget{
{"cc_test", "mytest", AttrNameToString{
"local_includes": `["."]`,
@ -382,15 +391,16 @@ cc_test {
func TestCcTest_WithIsolatedTurnedOn(t *testing.T) {
runCcTestTestCase(t, ccTestBp2buildTestCase{
description: "cc test that sets `isolated: true` should run with ligtest_isolated_main instead of libgtest_main",
description: "cc test that sets `isolated: true` should run with ligtest_isolated_main instead of libgtest_main",
stubbedBuildDefinitions: []string{"libgtest_isolated_main", "liblog"},
blueprint: `
cc_test {
name: "mytest",
srcs: ["test.cpp"],
isolated: true,
}
` + SimpleModuleDoNotConvertBp2build("cc_library_static", "libgtest_isolated_main") +
SimpleModuleDoNotConvertBp2build("cc_library", "liblog"),
` + simpleModule("cc_library_static", "libgtest_isolated_main") +
simpleModule("cc_library", "liblog"),
targets: []testBazelTarget{
{"cc_test", "mytest", AttrNameToString{
"local_includes": `["."]`,
@ -415,7 +425,8 @@ cc_test {
func TestCcTest_GtestExplicitlySpecifiedInAndroidBp(t *testing.T) {
runCcTestTestCase(t, ccTestBp2buildTestCase{
description: "If `gtest` is explicit in Android.bp, it should be explicit in BUILD files as well",
description: "If `gtest` is explicit in Android.bp, it should be explicit in BUILD files as well",
stubbedBuildDefinitions: []string{"libgtest_main", "libgtest"},
blueprint: `
cc_test {
name: "mytest_with_gtest",
@ -425,8 +436,8 @@ cc_test {
name: "mytest_with_no_gtest",
gtest: false,
}
` + SimpleModuleDoNotConvertBp2build("cc_library_static", "libgtest_main") +
SimpleModuleDoNotConvertBp2build("cc_library_static", "libgtest"),
` + simpleModule("cc_library_static", "libgtest_main") +
simpleModule("cc_library_static", "libgtest"),
targets: []testBazelTarget{
{"cc_test", "mytest_with_gtest", AttrNameToString{
"local_includes": `["."]`,
@ -466,7 +477,8 @@ cc_test {
func TestCcTest_DisableMemtagHeap(t *testing.T) {
runCcTestTestCase(t, ccTestBp2buildTestCase{
description: "cc test that disable memtag_heap",
description: "cc test that disable memtag_heap",
stubbedBuildDefinitions: []string{"libgtest_isolated_main", "liblog"},
blueprint: `
cc_test {
name: "mytest",
@ -477,8 +489,8 @@ cc_test {
memtag_heap: false,
},
}
` + SimpleModuleDoNotConvertBp2build("cc_library_static", "libgtest_isolated_main") +
SimpleModuleDoNotConvertBp2build("cc_library", "liblog"),
` + simpleModule("cc_library_static", "libgtest_isolated_main") +
simpleModule("cc_library", "liblog"),
targets: []testBazelTarget{
{"cc_test", "mytest", AttrNameToString{
"local_includes": `["."]`,
@ -499,7 +511,8 @@ cc_test {
func TestCcTest_RespectArm64MemtagHeap(t *testing.T) {
runCcTestTestCase(t, ccTestBp2buildTestCase{
description: "cc test that disable memtag_heap",
description: "cc test that disable memtag_heap",
stubbedBuildDefinitions: []string{"libgtest_isolated_main", "liblog"},
blueprint: `
cc_test {
name: "mytest",
@ -513,8 +526,8 @@ cc_test {
}
},
}
` + SimpleModuleDoNotConvertBp2build("cc_library_static", "libgtest_isolated_main") +
SimpleModuleDoNotConvertBp2build("cc_library", "liblog"),
` + simpleModule("cc_library_static", "libgtest_isolated_main") +
simpleModule("cc_library", "liblog"),
targets: []testBazelTarget{
{"cc_test", "mytest", AttrNameToString{
"local_includes": `["."]`,
@ -535,7 +548,8 @@ cc_test {
func TestCcTest_IgnoreNoneArm64MemtagHeap(t *testing.T) {
runCcTestTestCase(t, ccTestBp2buildTestCase{
description: "cc test that disable memtag_heap",
description: "cc test that disable memtag_heap",
stubbedBuildDefinitions: []string{"libgtest_isolated_main", "liblog"},
blueprint: `
cc_test {
name: "mytest",
@ -549,8 +563,8 @@ cc_test {
}
},
}
` + SimpleModuleDoNotConvertBp2build("cc_library_static", "libgtest_isolated_main") +
SimpleModuleDoNotConvertBp2build("cc_library", "liblog"),
` + simpleModule("cc_library_static", "libgtest_isolated_main") +
simpleModule("cc_library", "liblog"),
targets: []testBazelTarget{
{"cc_test", "mytest", AttrNameToString{
"local_includes": `["."]`,
@ -574,7 +588,8 @@ cc_test {
func TestCcTest_Arm64MemtagHeapOverrideNoConfigOne(t *testing.T) {
runCcTestTestCase(t, ccTestBp2buildTestCase{
description: "cc test that disable memtag_heap",
description: "cc test that disable memtag_heap",
stubbedBuildDefinitions: []string{"libgtest_isolated_main", "liblog"},
blueprint: `
cc_test {
name: "mytest",
@ -594,8 +609,8 @@ cc_test {
}
},
}
` + SimpleModuleDoNotConvertBp2build("cc_library_static", "libgtest_isolated_main") +
SimpleModuleDoNotConvertBp2build("cc_library", "liblog"),
` + simpleModule("cc_library_static", "libgtest_isolated_main") +
simpleModule("cc_library", "liblog"),
targets: []testBazelTarget{
{"cc_test", "mytest", AttrNameToString{
"local_includes": `["."]`,

View file

@ -93,7 +93,6 @@ func TestGenruleCliVariableReplacement(t *testing.T) {
out: ["foo_tool.out"],
srcs: ["foo_tool.in"],
cmd: "cp $(in) $(out)",
bazel_module: { bp2build_available: false },
}
%s {
@ -124,6 +123,7 @@ func TestGenruleCliVariableReplacement(t *testing.T) {
ModuleTypeUnderTestFactory: tc.factory,
Blueprint: fmt.Sprintf(bp, tc.moduleType, tc.moduleType),
ExpectedBazelTargets: expectedBazelTargets,
StubbedBuildDefinitions: []string{"foo.tool", "other.tool"},
})
})
}
@ -262,6 +262,7 @@ func TestGenruleLocationsAbsoluteLabel(t *testing.T) {
Blueprint: fmt.Sprintf(bp, tc.moduleType),
ExpectedBazelTargets: expectedBazelTargets,
Filesystem: otherGenruleBp(tc.moduleType),
StubbedBuildDefinitions: []string{"//other:foo.tool"},
})
})
}
@ -326,6 +327,7 @@ func TestGenruleSrcsLocationsAbsoluteLabel(t *testing.T) {
Blueprint: fmt.Sprintf(bp, tc.moduleType),
ExpectedBazelTargets: expectedBazelTargets,
Filesystem: otherGenruleBp(tc.moduleType),
StubbedBuildDefinitions: []string{"//other:foo.tool", "//other:other.tool"},
})
})
}
@ -390,6 +392,7 @@ func TestGenruleLocationLabelShouldSubstituteFirstToolLabel(t *testing.T) {
Blueprint: fmt.Sprintf(bp, tc.moduleType),
ExpectedBazelTargets: expectedBazelTargets,
Filesystem: otherGenruleBp(tc.moduleType),
StubbedBuildDefinitions: []string{"//other:foo.tool", "//other:other.tool"},
})
})
}
@ -454,6 +457,7 @@ func TestGenruleLocationsLabelShouldSubstituteFirstToolLabel(t *testing.T) {
Blueprint: fmt.Sprintf(bp, tc.moduleType),
ExpectedBazelTargets: expectedBazelTargets,
Filesystem: otherGenruleBp(tc.moduleType),
StubbedBuildDefinitions: []string{"//other:foo.tool", "//other:other.tool"},
})
})
}
@ -948,6 +952,7 @@ genrule {
ModuleTypeUnderTest: "genrule",
ModuleTypeUnderTestFactory: genrule.GenRuleFactory,
ExpectedBazelTargets: expectedBazelTargets,
StubbedBuildDefinitions: []string{"//mynamespace/dir:mymodule"},
})
})

View file

@ -26,6 +26,7 @@ func runJavaBinaryHostTestCase(t *testing.T, tc Bp2buildTestCase) {
t.Helper()
(&tc).ModuleTypeUnderTest = "java_binary_host"
(&tc).ModuleTypeUnderTestFactory = java.BinaryHostFactory
tc.StubbedBuildDefinitions = append(tc.StubbedBuildDefinitions, "//other:jni-lib-1")
RunBp2BuildTestCase(t, func(ctx android.RegistrationContext) {
ctx.RegisterModuleType("cc_library_host_shared", cc.LibraryHostSharedFactory)
ctx.RegisterModuleType("java_library", java.LibraryFactory)
@ -81,8 +82,9 @@ func TestJavaBinaryHost(t *testing.T) {
func TestJavaBinaryHostRuntimeDeps(t *testing.T) {
runJavaBinaryHostTestCase(t, Bp2buildTestCase{
Description: "java_binary_host with srcs, exclude_srcs, jni_libs, javacflags, and manifest.",
Filesystem: testFs,
Description: "java_binary_host with srcs, exclude_srcs, jni_libs, javacflags, and manifest.",
Filesystem: testFs,
StubbedBuildDefinitions: []string{"java-dep-1"},
Blueprint: `java_binary_host {
name: "java-binary-host-1",
static_libs: ["java-dep-1"],
@ -93,7 +95,6 @@ func TestJavaBinaryHostRuntimeDeps(t *testing.T) {
java_library {
name: "java-dep-1",
srcs: ["a.java"],
bazel_module: { bp2build_available: false },
}
`,
ExpectedBazelTargets: []string{
@ -111,8 +112,9 @@ java_library {
func TestJavaBinaryHostLibs(t *testing.T) {
runJavaBinaryHostTestCase(t, Bp2buildTestCase{
Description: "java_binary_host with srcs, libs.",
Filesystem: testFs,
Description: "java_binary_host with srcs, libs.",
Filesystem: testFs,
StubbedBuildDefinitions: []string{"prebuilt_java-lib-dep-1"},
Blueprint: `java_binary_host {
name: "java-binary-host-libs",
libs: ["java-lib-dep-1"],
@ -123,7 +125,6 @@ func TestJavaBinaryHostLibs(t *testing.T) {
java_import_host{
name: "java-lib-dep-1",
jars: ["foo.jar"],
bazel_module: { bp2build_available: false },
}
`,
ExpectedBazelTargets: []string{

View file

@ -69,6 +69,7 @@ java_library {
func TestJavaLibraryConvertsStaticLibsToDepsAndExports(t *testing.T) {
runJavaLibraryTestCase(t, Bp2buildTestCase{
StubbedBuildDefinitions: []string{"java-lib-2", "java-lib-3"},
Blueprint: `java_library {
name: "java-lib-1",
srcs: ["a.java"],
@ -82,14 +83,12 @@ java_library {
name: "java-lib-2",
srcs: ["b.java"],
sdk_version: "current",
bazel_module: { bp2build_available: false },
}
java_library {
name: "java-lib-3",
srcs: ["c.java"],
sdk_version: "current",
bazel_module: { bp2build_available: false },
}`,
ExpectedBazelTargets: []string{
MakeBazelTarget("java_library", "java-lib-1", AttrNameToString{
@ -108,6 +107,7 @@ java_library {
func TestJavaLibraryConvertsStaticLibsToExportsIfNoSrcs(t *testing.T) {
runJavaLibraryTestCase(t, Bp2buildTestCase{
StubbedBuildDefinitions: []string{"java-lib-2"},
Blueprint: `java_library {
name: "java-lib-1",
static_libs: ["java-lib-2"],
@ -118,7 +118,6 @@ func TestJavaLibraryConvertsStaticLibsToExportsIfNoSrcs(t *testing.T) {
java_library {
name: "java-lib-2",
srcs: ["a.java"],
bazel_module: { bp2build_available: false },
}`,
ExpectedBazelTargets: []string{
MakeBazelTarget("java_library", "java-lib-1", AttrNameToString{
@ -144,6 +143,7 @@ java_library {
func TestJavaLibraryPlugins(t *testing.T) {
runJavaLibraryTestCaseWithRegistrationCtxFunc(t, Bp2buildTestCase{
StubbedBuildDefinitions: []string{"java-plugin-1"},
Blueprint: `java_library {
name: "java-lib-1",
plugins: ["java-plugin-1"],
@ -154,7 +154,6 @@ func TestJavaLibraryPlugins(t *testing.T) {
java_plugin {
name: "java-plugin-1",
srcs: ["a.java"],
bazel_module: { bp2build_available: false },
}`,
ExpectedBazelTargets: []string{
MakeBazelTarget("java_library", "java-lib-1", AttrNameToString{
@ -195,6 +194,7 @@ func TestJavaLibraryJavaVersion(t *testing.T) {
func TestJavaLibraryErrorproneEnabledManually(t *testing.T) {
runJavaLibraryTestCaseWithRegistrationCtxFunc(t, Bp2buildTestCase{
StubbedBuildDefinitions: []string{"plugin2"},
Blueprint: `java_library {
name: "java-lib-1",
srcs: ["a.java"],
@ -209,7 +209,6 @@ func TestJavaLibraryErrorproneEnabledManually(t *testing.T) {
java_plugin {
name: "plugin2",
srcs: ["a.java"],
bazel_module: { bp2build_available: false },
}`,
ExpectedBazelTargets: []string{
MakeBazelTarget("java_library", "java-lib-1", AttrNameToString{
@ -420,13 +419,12 @@ func TestJavaLibraryResourcesExcludeFile(t *testing.T) {
func TestJavaLibraryResourcesWithMultipleDirs(t *testing.T) {
runJavaLibraryTestCase(t, Bp2buildTestCase{
Filesystem: map[string]string{
"res/a.res": "",
"res1/b.res": "",
"res2/b.java": "",
"res/a.res": "",
"res1/b.res": "",
},
Blueprint: `java_library {
name: "java-lib-1",
java_resource_dirs: ["res", "res1", "res2"],
java_resource_dirs: ["res", "res1"],
sdk_version: "current",
}`,
ExpectedBazelTargets: []string{
@ -619,6 +617,7 @@ func TestJavaLibraryAidlNonAdjacentAidlFilegroup(t *testing.T) {
Description: "java_library with non adjacent aidl filegroup",
ModuleTypeUnderTest: "java_library",
ModuleTypeUnderTestFactory: java.LibraryFactory,
StubbedBuildDefinitions: []string{"A_aidl"},
Filesystem: map[string]string{
"path/to/A/Android.bp": `
filegroup {
@ -656,7 +655,7 @@ func TestConvertArmNeonVariant(t *testing.T) {
Description: "Android Library - simple arch feature",
ModuleTypeUnderTest: "android_library",
ModuleTypeUnderTestFactory: java.AndroidLibraryFactory,
Blueprint: SimpleModuleDoNotConvertBp2build("android_library", "static_lib_dep") + `
Blueprint: simpleModule("android_library", "static_lib_dep") + `
android_library {
name: "TestLib",
manifest: "manifest/AndroidManifest.xml",
@ -694,7 +693,7 @@ func TestConvertMultipleArchFeatures(t *testing.T) {
Description: "Android Library - multiple arch features",
ModuleTypeUnderTest: "android_library",
ModuleTypeUnderTestFactory: java.AndroidLibraryFactory,
Blueprint: SimpleModuleDoNotConvertBp2build("android_library", "static_lib_dep") + `
Blueprint: simpleModule("android_library", "static_lib_dep") + `
android_library {
name: "TestLib",
manifest: "manifest/AndroidManifest.xml",
@ -740,7 +739,7 @@ func TestConvertExcludeSrcsArchFeature(t *testing.T) {
Description: "Android Library - exclude_srcs with arch feature",
ModuleTypeUnderTest: "android_library",
ModuleTypeUnderTestFactory: java.AndroidLibraryFactory,
Blueprint: SimpleModuleDoNotConvertBp2build("android_library", "static_lib_dep") + `
Blueprint: simpleModule("android_library", "static_lib_dep") + `
android_library {
name: "TestLib",
manifest: "manifest/AndroidManifest.xml",
@ -848,33 +847,10 @@ func TestJavaLibraryKotlinCommonSrcs(t *testing.T) {
})
}
func TestJavaLibraryLibsWithNoSrcs(t *testing.T) {
runJavaLibraryTestCase(t, Bp2buildTestCase{
Description: "java_library that has libs but no srcs",
Blueprint: `java_library {
name: "java-lib-1",
libs: ["java-lib-2"],
sdk_version: "current",
bazel_module: { bp2build_available: true },
}
java_library{
name: "java-lib-2",
bazel_module: { bp2build_available: false },
}
`,
ExpectedBazelTargets: []string{
MakeBazelTarget("java_library", "java-lib-1", AttrNameToString{
"sdk_version": `"current"`,
}),
MakeNeverlinkDuplicateTarget("java_library", "java-lib-1"),
},
})
}
func TestJavaLibraryArchVariantDeps(t *testing.T) {
runJavaLibraryTestCase(t, Bp2buildTestCase{
Description: "java_library with arch variant libs",
Description: "java_library with arch variant libs",
StubbedBuildDefinitions: []string{"java-lib-2", "java-lib-3", "java-lib-4"},
Blueprint: `java_library {
name: "java-lib-1",
srcs: ["a.java"],
@ -891,17 +867,14 @@ func TestJavaLibraryArchVariantDeps(t *testing.T) {
java_library{
name: "java-lib-2",
bazel_module: { bp2build_available: false },
}
java_library{
name: "java-lib-3",
bazel_module: { bp2build_available: false },
}
java_library{
name: "java-lib-4",
bazel_module: { bp2build_available: false },
}
`,
ExpectedBazelTargets: []string{
@ -1050,14 +1023,3 @@ filegroup {
ctx.RegisterModuleType("filegroup", android.FileGroupFactory)
})
}
func TestJavaSdkVersionCorePlatformDoesNotConvert(t *testing.T) {
runJavaLibraryTestCase(t, Bp2buildTestCase{
Blueprint: `java_library {
name: "java-lib-1",
sdk_version: "core_platform",
bazel_module: { bp2build_available: true },
}`,
ExpectedBazelTargets: []string{},
})
}

View file

@ -32,7 +32,8 @@ func runJavaPluginTestCase(t *testing.T, tc Bp2buildTestCase) {
func TestJavaPlugin(t *testing.T) {
runJavaPluginTestCase(t, Bp2buildTestCase{
Description: "java_plugin with srcs, libs, static_libs",
Description: "java_plugin with srcs, libs, static_libs",
StubbedBuildDefinitions: []string{"java-lib-1", "java-lib-2"},
Blueprint: `java_plugin {
name: "java-plug-1",
srcs: ["a.java", "b.java"],
@ -45,13 +46,11 @@ func TestJavaPlugin(t *testing.T) {
java_library {
name: "java-lib-1",
srcs: ["b.java"],
bazel_module: { bp2build_available: false },
}
java_library {
name: "java-lib-2",
srcs: ["c.java"],
bazel_module: { bp2build_available: false },
}`,
ExpectedBazelTargets: []string{
MakeBazelTarget("java_plugin", "java-plug-1", AttrNameToString{
@ -75,7 +74,8 @@ java_library {
func TestJavaPluginNoSrcs(t *testing.T) {
runJavaPluginTestCase(t, Bp2buildTestCase{
Description: "java_plugin without srcs converts (static) libs to deps",
Description: "java_plugin without srcs converts (static) libs to deps",
StubbedBuildDefinitions: []string{"java-lib-1", "java-lib-2"},
Blueprint: `java_plugin {
name: "java-plug-1",
libs: ["java-lib-1"],

View file

@ -37,6 +37,7 @@ func TestPlatformCompatConfig(t *testing.T) {
name: "foo",
src: ":lib",
}`,
StubbedBuildDefinitions: []string{"//a/b:lib"},
Filesystem: map[string]string{
"a/b/Android.bp": `
java_library {

View file

@ -30,6 +30,7 @@ func TestPythonBinaryHostSimple(t *testing.T) {
"b/e.py": "",
"files/data.txt": "",
},
StubbedBuildDefinitions: []string{"bar"},
Blueprint: `python_binary_host {
name: "foo",
main: "a.py",
@ -42,7 +43,6 @@ func TestPythonBinaryHostSimple(t *testing.T) {
python_library_host {
name: "bar",
srcs: ["b/e.py"],
bazel_module: { bp2build_available: false },
}`,
ExpectedBazelTargets: []string{
MakeBazelTarget("py_binary", "foo", AttrNameToString{
@ -196,6 +196,7 @@ func TestPythonBinaryMainIsLabel(t *testing.T) {
Description: "python_binary_host main label in same package",
ModuleTypeUnderTest: "python_binary_host",
ModuleTypeUnderTestFactory: python.PythonBinaryHostFactory,
StubbedBuildDefinitions: []string{"a"},
Blueprint: `python_binary_host {
name: "foo",
main: ":a",
@ -204,7 +205,6 @@ func TestPythonBinaryMainIsLabel(t *testing.T) {
genrule {
name: "a",
bazel_module: { bp2build_available: false },
}
`,
ExpectedBazelTargets: []string{
@ -282,6 +282,7 @@ func TestPythonBinaryDuplicatesInRequired(t *testing.T) {
Description: "python_binary_host duplicates in required attribute of the module and its defaults",
ModuleTypeUnderTest: "python_binary_host",
ModuleTypeUnderTestFactory: python.PythonBinaryHostFactory,
StubbedBuildDefinitions: []string{"r1", "r2"},
Blueprint: `python_binary_host {
name: "foo",
main: "a.py",
@ -298,8 +299,8 @@ python_defaults {
"r1",
"r2",
],
}` + SimpleModuleDoNotConvertBp2build("genrule", "r1") +
SimpleModuleDoNotConvertBp2build("genrule", "r2"),
}` + simpleModule("genrule", "r1") +
simpleModule("genrule", "r2"),
ExpectedBazelTargets: []string{
MakeBazelTarget("py_binary", "foo", AttrNameToString{

View file

@ -13,12 +13,13 @@ import (
type PythonLibBp2Build func(ctx android.TopDownMutatorContext)
type pythonLibBp2BuildTestCase struct {
description string
filesystem map[string]string
blueprint string
expectedBazelTargets []testBazelTarget
dir string
expectedError error
description string
filesystem map[string]string
blueprint string
expectedBazelTargets []testBazelTarget
dir string
expectedError error
stubbedBuildDefinitions []string
}
func convertPythonLibTestCaseToBp2build_Host(tc pythonLibBp2BuildTestCase) Bp2buildTestCase {
@ -44,12 +45,13 @@ func convertPythonLibTestCaseToBp2build(tc pythonLibBp2BuildTestCase) Bp2buildTe
filesystemCopy[k] = v
}
return Bp2buildTestCase{
Description: tc.description,
Filesystem: filesystemCopy,
Blueprint: tc.blueprint,
ExpectedBazelTargets: bp2BuildTargets,
Dir: tc.dir,
ExpectedErr: tc.expectedError,
Description: tc.description,
Filesystem: filesystemCopy,
Blueprint: tc.blueprint,
ExpectedBazelTargets: bp2BuildTargets,
Dir: tc.dir,
ExpectedErr: tc.expectedError,
StubbedBuildDefinitions: tc.stubbedBuildDefinitions,
}
}
@ -104,6 +106,7 @@ func TestSimplePythonLib(t *testing.T) {
"b/e.py": "",
"files/data.txt": "",
},
stubbedBuildDefinitions: []string{"bar"},
blueprint: `%s {
name: "foo",
srcs: ["**/*.py"],
@ -115,7 +118,6 @@ func TestSimplePythonLib(t *testing.T) {
python_library {
name: "bar",
srcs: ["b/e.py"],
bazel_module: { bp2build_available: false },
}`,
expectedBazelTargets: []testBazelTarget{
{

View file

@ -15,8 +15,9 @@
package bp2build
import (
"android/soong/python"
"testing"
"android/soong/python"
)
func TestPythonTestHostSimple(t *testing.T) {
@ -31,6 +32,7 @@ func TestPythonTestHostSimple(t *testing.T) {
"b/e.py": "",
"files/data.txt": "",
},
StubbedBuildDefinitions: []string{"bar"},
Blueprint: `python_test_host {
name: "foo",
main: "a.py",
@ -43,7 +45,6 @@ func TestPythonTestHostSimple(t *testing.T) {
python_library_host {
name: "bar",
srcs: ["b/e.py"],
bazel_module: { bp2build_available: false },
}`,
ExpectedBazelTargets: []string{
MakeBazelTarget("py_test", "foo", AttrNameToString{

View file

@ -15,10 +15,11 @@
package bp2build
import (
"android/soong/android"
"android/soong/cc"
"fmt"
"testing"
"android/soong/android"
"android/soong/cc"
)
func runSoongConfigModuleTypeTest(t *testing.T, tc Bp2buildTestCase) {
@ -364,9 +365,9 @@ custom_cc_library_static {
}`
otherDeps := `
cc_library_static { name: "soc_a_dep", bazel_module: { bp2build_available: false } }
cc_library_static { name: "soc_b_dep", bazel_module: { bp2build_available: false } }
cc_library_static { name: "soc_default_static_dep", bazel_module: { bp2build_available: false } }
cc_library_static { name: "soc_a_dep"}
cc_library_static { name: "soc_b_dep"}
cc_library_static { name: "soc_default_static_dep"}
`
runSoongConfigModuleTypeTest(t, Bp2buildTestCase{
@ -377,6 +378,7 @@ cc_library_static { name: "soc_default_static_dep", bazel_module: { bp2build_ava
Filesystem: map[string]string{
"foo/bar/Android.bp": otherDeps,
},
StubbedBuildDefinitions: []string{"//foo/bar:soc_a_dep", "//foo/bar:soc_b_dep", "//foo/bar:soc_default_static_dep"},
ExpectedBazelTargets: []string{`cc_library_static(
name = "foo",
copts = select({
@ -763,9 +765,9 @@ cc_binary {
}`
otherDeps := `
cc_library { name: "lib_a", bazel_module: { bp2build_available: false } }
cc_library { name: "lib_b", bazel_module: { bp2build_available: false } }
cc_library { name: "lib_default", bazel_module: { bp2build_available: false } }
cc_library { name: "lib_a"}
cc_library { name: "lib_b"}
cc_library { name: "lib_default"}
`
runSoongConfigModuleTypeTest(t, Bp2buildTestCase{
@ -773,6 +775,7 @@ cc_library { name: "lib_default", bazel_module: { bp2build_available: false } }
ModuleTypeUnderTest: "cc_binary",
ModuleTypeUnderTestFactory: cc.BinaryFactory,
Blueprint: bp,
StubbedBuildDefinitions: []string{"//foo/bar:lib_a", "//foo/bar:lib_b", "//foo/bar:lib_default"},
Filesystem: map[string]string{
"foo/bar/Android.bp": otherDeps,
},
@ -852,15 +855,16 @@ cc_binary {
}`
otherDeps := `
cc_library { name: "lib_a", bazel_module: { bp2build_available: false } }
cc_library { name: "lib_b", bazel_module: { bp2build_available: false } }
cc_library { name: "lib_c", bazel_module: { bp2build_available: false } }
cc_library { name: "lib_a"}
cc_library { name: "lib_b"}
cc_library { name: "lib_c"}
`
runSoongConfigModuleTypeTest(t, Bp2buildTestCase{
Description: "soong config variables - generates selects for library_linking_strategy",
ModuleTypeUnderTest: "cc_binary",
ModuleTypeUnderTestFactory: cc.BinaryFactory,
StubbedBuildDefinitions: []string{"//foo/bar:lib_a", "//foo/bar:lib_b", "//foo/bar:lib_c"},
Blueprint: bp,
Filesystem: map[string]string{
"foo/bar/Android.bp": otherDeps,
@ -949,9 +953,9 @@ cc_binary {
}`
otherDeps := `
cc_library { name: "lib_a", bazel_module: { bp2build_available: false } }
cc_library { name: "lib_b", bazel_module: { bp2build_available: false } }
cc_library { name: "lib_default", bazel_module: { bp2build_available: false } }
cc_library { name: "lib_a"}
cc_library { name: "lib_b"}
cc_library { name: "lib_default"}
`
runSoongConfigModuleTypeTest(t, Bp2buildTestCase{
@ -962,6 +966,7 @@ cc_library { name: "lib_default", bazel_module: { bp2build_available: false } }
Filesystem: map[string]string{
"foo/bar/Android.bp": otherDeps,
},
StubbedBuildDefinitions: []string{"//foo/bar:lib_a", "//foo/bar:lib_b", "//foo/bar:lib_default"},
ExpectedBazelTargets: []string{`cc_binary(
name = "library_linking_strategy_sample_binary",
deps = select({
@ -1031,8 +1036,8 @@ cc_binary {
}`
otherDeps := `
cc_library { name: "lib_a", bazel_module: { bp2build_available: false } }
cc_library { name: "lib_b", bazel_module: { bp2build_available: false } }
cc_library { name: "lib_a"}
cc_library { name: "lib_b"}
`
runSoongConfigModuleTypeTest(t, Bp2buildTestCase{
@ -1040,6 +1045,7 @@ cc_library { name: "lib_b", bazel_module: { bp2build_available: false } }
ModuleTypeUnderTest: "cc_binary",
ModuleTypeUnderTestFactory: cc.BinaryFactory,
Blueprint: bp,
StubbedBuildDefinitions: []string{"//foo/bar:lib_a", "//foo/bar:lib_b"},
Filesystem: map[string]string{
"foo/bar/Android.bp": otherDeps,
},
@ -1118,9 +1124,9 @@ cc_binary {
}`
otherDeps := `
cc_library { name: "lib_a", bazel_module: { bp2build_available: false } }
cc_library { name: "lib_b", bazel_module: { bp2build_available: false } }
cc_library { name: "lib_default", bazel_module: { bp2build_available: false } }
cc_library { name: "lib_a"}
cc_library { name: "lib_b"}
cc_library { name: "lib_default"}
`
runSoongConfigModuleTypeTest(t, Bp2buildTestCase{
@ -1131,6 +1137,7 @@ cc_library { name: "lib_default", bazel_module: { bp2build_available: false } }
Filesystem: map[string]string{
"foo/bar/Android.bp": otherDeps,
},
StubbedBuildDefinitions: []string{"//foo/bar:lib_a", "//foo/bar:lib_b", "//foo/bar:lib_default"},
ExpectedBazelTargets: []string{`cc_binary(
name = "alphabet_binary",
deps = select({

View file

@ -22,6 +22,7 @@ specific-but-shared functionality among tests in package
import (
"fmt"
"path/filepath"
"regexp"
"sort"
"strings"
"testing"
@ -37,6 +38,9 @@ var (
buildDir string
)
var labelRegex = regexp.MustCompile(`^//([^: ]+):([^ ]+)$`)
var simpleModuleNameRegex = regexp.MustCompile(`^[^: /]+$`)
func checkError(t *testing.T, errs []error, expectedErr error) bool {
t.Helper()
@ -87,9 +91,12 @@ type Bp2buildTestCase struct {
// in the directory under test. The BUILD file has the given contents. This BUILD file
// will also be treated as "BUILD file to keep" by the simulated bp2build environment.
AlreadyExistingBuildContents string
// StubbedBuildDefinitions, if non-empty, adds stub definitions to an already-present source
// BUILD file in the directory under test, for each target name given. These stub definitions
// are added to the BUILD file given in AlreadyExistingBuildContents, if it is set.
// StubbedBuildDefinitions, if non-empty, adds stub definitions to already-present source
// BUILD files for each bazel label given. The BUILD files with these stub definitions
// are added to the BUILD file given in AlreadyExistingBuildContents.
// Labels may be of the form //pkg/to:target_name (which would be defined in pkg/to/BUILD.bazel)
// or `target_name` (which would be defined in ./BUILD.bazel).
StubbedBuildDefinitions []string
Filesystem map[string]string
@ -120,32 +127,51 @@ func RunBp2BuildTestCase(t *testing.T, registerModuleTypes func(ctx android.Regi
func runBp2BuildTestCaseWithSetup(t *testing.T, extraPreparer android.FixturePreparer, tc Bp2buildTestCase) {
t.Helper()
if tc.Filesystem == nil {
tc.Filesystem = map[string]string{}
}
checkDir := "."
if tc.Dir != "" {
checkDir = tc.Dir
}
keepExistingBuildDirs := tc.KeepBuildFileForDirs
buildFilesToParse := []string{}
if len(tc.StubbedBuildDefinitions) > 0 {
for _, buildDef := range tc.StubbedBuildDefinitions {
globalLabelMatch := labelRegex.FindStringSubmatch(buildDef)
var dir, targetName string
if len(globalLabelMatch) > 0 {
dir = globalLabelMatch[1]
targetName = globalLabelMatch[2]
} else {
if !simpleModuleNameRegex.MatchString(buildDef) {
t.Errorf("Stubbed build definition '%s' must be either a simple module name or of global target syntax (//foo/bar:baz).", buildDef)
return
}
dir = "."
targetName = buildDef
}
buildFilePath := filepath.Join(dir, "BUILD")
tc.Filesystem[buildFilePath] +=
MakeBazelTarget(
"bp2build_test_stub",
targetName,
AttrNameToString{})
keepExistingBuildDirs = append(keepExistingBuildDirs, dir)
buildFilesToParse = append(buildFilesToParse, buildFilePath)
}
}
if len(tc.AlreadyExistingBuildContents) > 0 {
buildFilePath := filepath.Join(checkDir, "BUILD")
tc.Filesystem[buildFilePath] += tc.AlreadyExistingBuildContents
keepExistingBuildDirs = append(keepExistingBuildDirs, checkDir)
buildFilesToParse = append(buildFilesToParse, buildFilePath)
}
filesystem := make(map[string][]byte)
for f, content := range tc.Filesystem {
filesystem[f] = []byte(content)
}
alreadyExistingBuildContents := tc.AlreadyExistingBuildContents
if len(tc.StubbedBuildDefinitions) > 0 {
for _, targetName := range tc.StubbedBuildDefinitions {
alreadyExistingBuildContents += MakeBazelTarget(
"bp2build_test_stub",
targetName,
AttrNameToString{})
}
}
if len(alreadyExistingBuildContents) > 0 {
buildFilePath := filepath.Join(checkDir, "BUILD")
filesystem[buildFilePath] = []byte(alreadyExistingBuildContents)
keepExistingBuildDirs = append(keepExistingBuildDirs, checkDir)
buildFilesToParse = append(buildFilesToParse, buildFilePath)
}
preparers := []android.FixturePreparer{
extraPreparer,
android.FixtureMergeMockFs(filesystem),
@ -600,11 +626,10 @@ func registerCustomModuleForBp2buildConversion(ctx *android.TestContext) {
ctx.RegisterForBazelConversion()
}
func SimpleModuleDoNotConvertBp2build(typ, name string) string {
func simpleModule(typ, name string) string {
return fmt.Sprintf(`
%s {
name: "%s",
bazel_module: { bp2build_available: false },
}`, typ, name)
}

View file

@ -3391,7 +3391,6 @@ func (i *Import) ConvertWithBp2build(ctx android.TopDownMutatorContext) {
javaLibraryBazelTargetModuleProperties(),
android.CommonAttributes{Name: name + "-neverlink"},
neverlinkAttrs)
}
var _ android.MixedBuildBuildable = (*Import)(nil)