Merge "export common bp2build testing functions"

This commit is contained in:
Liz Kammer
2022-08-04 18:11:16 +00:00
committed by Gerrit Code Review
31 changed files with 1990 additions and 1986 deletions

View File

@@ -94,6 +94,10 @@ func (ll *LabelList) IsNil() bool {
return ll.Includes == nil && ll.Excludes == nil
}
func (ll *LabelList) IsEmpty() bool {
return len(ll.Includes) == 0 && len(ll.Excludes) == 0
}
func (ll *LabelList) deepCopy() LabelList {
return LabelList{
Includes: ll.Includes[:],

View File

@@ -21,28 +21,28 @@ import (
"testing"
)
func runAndroidAppCertificateTestCase(t *testing.T, tc bp2buildTestCase) {
func runAndroidAppCertificateTestCase(t *testing.T, tc Bp2buildTestCase) {
t.Helper()
runBp2BuildTestCase(t, registerAndroidAppCertificateModuleTypes, tc)
RunBp2BuildTestCase(t, registerAndroidAppCertificateModuleTypes, tc)
}
func registerAndroidAppCertificateModuleTypes(ctx android.RegistrationContext) {
}
func TestAndroidAppCertificateSimple(t *testing.T) {
runAndroidAppCertificateTestCase(t, bp2buildTestCase{
description: "Android app certificate - simple example",
moduleTypeUnderTest: "android_app_certificate",
moduleTypeUnderTestFactory: java.AndroidAppCertificateFactory,
filesystem: map[string]string{},
blueprint: `
runAndroidAppCertificateTestCase(t, Bp2buildTestCase{
Description: "Android app certificate - simple example",
ModuleTypeUnderTest: "android_app_certificate",
ModuleTypeUnderTestFactory: java.AndroidAppCertificateFactory,
Filesystem: map[string]string{},
Blueprint: `
android_app_certificate {
name: "com.android.apogee.cert",
certificate: "chamber_of_secrets_dir",
}
`,
expectedBazelTargets: []string{
makeBazelTargetNoRestrictions("android_app_certificate", "com.android.apogee.cert", attrNameToString{
ExpectedBazelTargets: []string{
MakeBazelTargetNoRestrictions("android_app_certificate", "com.android.apogee.cert", AttrNameToString{
"certificate": `"chamber_of_secrets_dir"`,
}),
}})

View File

@@ -21,33 +21,33 @@ import (
"testing"
)
func runAndroidAppTestCase(t *testing.T, tc bp2buildTestCase) {
func runAndroidAppTestCase(t *testing.T, tc Bp2buildTestCase) {
t.Helper()
runBp2BuildTestCase(t, registerAndroidAppModuleTypes, tc)
RunBp2BuildTestCase(t, registerAndroidAppModuleTypes, tc)
}
func registerAndroidAppModuleTypes(ctx android.RegistrationContext) {
}
func TestMinimalAndroidApp(t *testing.T) {
runAndroidAppTestCase(t, bp2buildTestCase{
description: "Android app - simple example",
moduleTypeUnderTest: "android_app",
moduleTypeUnderTestFactory: java.AndroidAppFactory,
filesystem: map[string]string{
runAndroidAppTestCase(t, Bp2buildTestCase{
Description: "Android app - simple example",
ModuleTypeUnderTest: "android_app",
ModuleTypeUnderTestFactory: java.AndroidAppFactory,
Filesystem: map[string]string{
"app.java": "",
"res/res.png": "",
"AndroidManifest.xml": "",
},
blueprint: `
Blueprint: `
android_app {
name: "TestApp",
srcs: ["app.java"],
sdk_version: "current",
}
`,
expectedBazelTargets: []string{
makeBazelTarget("android_binary", "TestApp", attrNameToString{
ExpectedBazelTargets: []string{
makeBazelTarget("android_binary", "TestApp", AttrNameToString{
"srcs": `["app.java"]`,
"manifest": `"AndroidManifest.xml"`,
"resource_files": `["res/res.png"]`,
@@ -56,17 +56,17 @@ android_app {
}
func TestAndroidAppAllSupportedFields(t *testing.T) {
runAndroidAppTestCase(t, bp2buildTestCase{
description: "Android app - all supported fields",
moduleTypeUnderTest: "android_app",
moduleTypeUnderTestFactory: java.AndroidAppFactory,
filesystem: map[string]string{
runAndroidAppTestCase(t, Bp2buildTestCase{
Description: "Android app - all supported fields",
ModuleTypeUnderTest: "android_app",
ModuleTypeUnderTestFactory: java.AndroidAppFactory,
Filesystem: map[string]string{
"app.java": "",
"resa/res.png": "",
"resb/res.png": "",
"manifest/AndroidManifest.xml": "",
},
blueprint: simpleModuleDoNotConvertBp2build("android_app", "static_lib_dep") + `
Blueprint: simpleModuleDoNotConvertBp2build("android_app", "static_lib_dep") + `
android_app {
name: "TestApp",
srcs: ["app.java"],
@@ -78,8 +78,8 @@ android_app {
java_version: "7",
}
`,
expectedBazelTargets: []string{
makeBazelTarget("android_binary", "TestApp", attrNameToString{
ExpectedBazelTargets: []string{
makeBazelTarget("android_binary", "TestApp", AttrNameToString{
"srcs": `["app.java"]`,
"manifest": `"manifest/AndroidManifest.xml"`,
"resource_files": `[
@@ -94,17 +94,17 @@ android_app {
}
func TestAndroidAppArchVariantSrcs(t *testing.T) {
runAndroidAppTestCase(t, bp2buildTestCase{
description: "Android app - arch variant srcs",
moduleTypeUnderTest: "android_app",
moduleTypeUnderTestFactory: java.AndroidAppFactory,
filesystem: map[string]string{
runAndroidAppTestCase(t, Bp2buildTestCase{
Description: "Android app - arch variant srcs",
ModuleTypeUnderTest: "android_app",
ModuleTypeUnderTestFactory: java.AndroidAppFactory,
Filesystem: map[string]string{
"arm.java": "",
"x86.java": "",
"res/res.png": "",
"AndroidManifest.xml": "",
},
blueprint: `
Blueprint: `
android_app {
name: "TestApp",
sdk_version: "current",
@@ -118,8 +118,8 @@ android_app {
}
}
`,
expectedBazelTargets: []string{
makeBazelTarget("android_binary", "TestApp", attrNameToString{
ExpectedBazelTargets: []string{
makeBazelTarget("android_binary", "TestApp", AttrNameToString{
"srcs": `select({
"//build/bazel/platforms/arch:arm": ["arm.java"],
"//build/bazel/platforms/arch:x86": ["x86.java"],

View File

@@ -25,9 +25,9 @@ import (
"testing"
)
func runApexTestCase(t *testing.T, tc bp2buildTestCase) {
func runApexTestCase(t *testing.T, tc Bp2buildTestCase) {
t.Helper()
runBp2BuildTestCase(t, registerApexModuleTypes, tc)
RunBp2BuildTestCase(t, registerApexModuleTypes, tc)
}
func registerApexModuleTypes(ctx android.RegistrationContext) {
@@ -43,9 +43,9 @@ func registerApexModuleTypes(ctx android.RegistrationContext) {
ctx.RegisterModuleType("prebuilt_etc", etc.PrebuiltEtcFactory)
}
func runOverrideApexTestCase(t *testing.T, tc bp2buildTestCase) {
func runOverrideApexTestCase(t *testing.T, tc Bp2buildTestCase) {
t.Helper()
runBp2BuildTestCase(t, registerOverrideApexModuleTypes, tc)
RunBp2BuildTestCase(t, registerOverrideApexModuleTypes, tc)
}
func registerOverrideApexModuleTypes(ctx android.RegistrationContext) {
@@ -63,12 +63,12 @@ func registerOverrideApexModuleTypes(ctx android.RegistrationContext) {
}
func TestApexBundleSimple(t *testing.T) {
runApexTestCase(t, bp2buildTestCase{
description: "apex - example with all props, file_context is a module in same Android.bp",
moduleTypeUnderTest: "apex",
moduleTypeUnderTestFactory: apex.BundleFactory,
filesystem: map[string]string{},
blueprint: `
runApexTestCase(t, Bp2buildTestCase{
Description: "apex - example with all props, file_context is a module in same Android.bp",
ModuleTypeUnderTest: "apex",
ModuleTypeUnderTestFactory: apex.BundleFactory,
Filesystem: map[string]string{},
Blueprint: `
apex_key {
name: "com.android.apogee.key",
public_key: "com.android.apogee.avbpubkey",
@@ -140,8 +140,8 @@ apex {
logging_parent: "logging.parent",
}
`,
expectedBazelTargets: []string{
makeBazelTarget("apex", "com.android.apogee", attrNameToString{
ExpectedBazelTargets: []string{
makeBazelTarget("apex", "com.android.apogee", AttrNameToString{
"android_manifest": `"ApogeeAndroidManifest.xml"`,
"binaries": `[
":cc_binary_1",
@@ -181,11 +181,11 @@ apex {
}
func TestApexBundleSimple_fileContextsInAnotherAndroidBp(t *testing.T) {
runApexTestCase(t, bp2buildTestCase{
description: "apex - file contexts is a module in another Android.bp",
moduleTypeUnderTest: "apex",
moduleTypeUnderTestFactory: apex.BundleFactory,
filesystem: map[string]string{
runApexTestCase(t, Bp2buildTestCase{
Description: "apex - file contexts is a module in another Android.bp",
ModuleTypeUnderTest: "apex",
ModuleTypeUnderTestFactory: apex.BundleFactory,
Filesystem: map[string]string{
"a/b/Android.bp": `
filegroup {
name: "com.android.apogee-file_contexts",
@@ -196,14 +196,14 @@ filegroup {
}
`,
},
blueprint: `
Blueprint: `
apex {
name: "com.android.apogee",
file_contexts: ":com.android.apogee-file_contexts",
}
`,
expectedBazelTargets: []string{
makeBazelTarget("apex", "com.android.apogee", attrNameToString{
ExpectedBazelTargets: []string{
makeBazelTarget("apex", "com.android.apogee", AttrNameToString{
"file_contexts": `"//a/b:com.android.apogee-file_contexts"`,
"manifest": `"apex_manifest.json"`,
}),
@@ -211,19 +211,19 @@ apex {
}
func TestApexBundleSimple_fileContextsIsFile(t *testing.T) {
runApexTestCase(t, bp2buildTestCase{
description: "apex - file contexts is a file",
moduleTypeUnderTest: "apex",
moduleTypeUnderTestFactory: apex.BundleFactory,
filesystem: map[string]string{},
blueprint: `
runApexTestCase(t, Bp2buildTestCase{
Description: "apex - file contexts is a file",
ModuleTypeUnderTest: "apex",
ModuleTypeUnderTestFactory: apex.BundleFactory,
Filesystem: map[string]string{},
Blueprint: `
apex {
name: "com.android.apogee",
file_contexts: "file_contexts_file",
}
`,
expectedBazelTargets: []string{
makeBazelTarget("apex", "com.android.apogee", attrNameToString{
ExpectedBazelTargets: []string{
makeBazelTarget("apex", "com.android.apogee", AttrNameToString{
"file_contexts": `"file_contexts_file"`,
"manifest": `"apex_manifest.json"`,
}),
@@ -231,11 +231,11 @@ apex {
}
func TestApexBundleSimple_fileContextsIsNotSpecified(t *testing.T) {
runApexTestCase(t, bp2buildTestCase{
description: "apex - file contexts is not specified",
moduleTypeUnderTest: "apex",
moduleTypeUnderTestFactory: apex.BundleFactory,
filesystem: map[string]string{
runApexTestCase(t, Bp2buildTestCase{
Description: "apex - file contexts is not specified",
ModuleTypeUnderTest: "apex",
ModuleTypeUnderTestFactory: apex.BundleFactory,
Filesystem: map[string]string{
"system/sepolicy/apex/Android.bp": `
filegroup {
name: "com.android.apogee-file_contexts",
@@ -246,13 +246,13 @@ filegroup {
}
`,
},
blueprint: `
Blueprint: `
apex {
name: "com.android.apogee",
}
`,
expectedBazelTargets: []string{
makeBazelTarget("apex", "com.android.apogee", attrNameToString{
ExpectedBazelTargets: []string{
makeBazelTarget("apex", "com.android.apogee", AttrNameToString{
"file_contexts": `"//system/sepolicy/apex:com.android.apogee-file_contexts"`,
"manifest": `"apex_manifest.json"`,
}),
@@ -260,11 +260,11 @@ apex {
}
func TestApexBundleCompileMultilibBoth(t *testing.T) {
runApexTestCase(t, bp2buildTestCase{
description: "apex - example with compile_multilib=both",
moduleTypeUnderTest: "apex",
moduleTypeUnderTestFactory: apex.BundleFactory,
filesystem: map[string]string{
runApexTestCase(t, Bp2buildTestCase{
Description: "apex - example with compile_multilib=both",
ModuleTypeUnderTest: "apex",
ModuleTypeUnderTestFactory: apex.BundleFactory,
Filesystem: map[string]string{
"system/sepolicy/apex/Android.bp": `
filegroup {
name: "com.android.apogee-file_contexts",
@@ -273,9 +273,9 @@ filegroup {
}
`,
},
blueprint: createMultilibBlueprint("both"),
expectedBazelTargets: []string{
makeBazelTarget("apex", "com.android.apogee", attrNameToString{
Blueprint: createMultilibBlueprint("both"),
ExpectedBazelTargets: []string{
makeBazelTarget("apex", "com.android.apogee", AttrNameToString{
"native_shared_libs_32": `[
":native_shared_lib_1",
":native_shared_lib_3",
@@ -304,11 +304,11 @@ filegroup {
}
func TestApexBundleCompileMultilibFirst(t *testing.T) {
runApexTestCase(t, bp2buildTestCase{
description: "apex - example with compile_multilib=first",
moduleTypeUnderTest: "apex",
moduleTypeUnderTestFactory: apex.BundleFactory,
filesystem: map[string]string{
runApexTestCase(t, Bp2buildTestCase{
Description: "apex - example with compile_multilib=first",
ModuleTypeUnderTest: "apex",
ModuleTypeUnderTestFactory: apex.BundleFactory,
Filesystem: map[string]string{
"system/sepolicy/apex/Android.bp": `
filegroup {
name: "com.android.apogee-file_contexts",
@@ -317,9 +317,9 @@ filegroup {
}
`,
},
blueprint: createMultilibBlueprint("first"),
expectedBazelTargets: []string{
makeBazelTarget("apex", "com.android.apogee", attrNameToString{
Blueprint: createMultilibBlueprint("first"),
ExpectedBazelTargets: []string{
makeBazelTarget("apex", "com.android.apogee", AttrNameToString{
"native_shared_libs_32": `select({
"//build/bazel/platforms/arch:arm": [
":native_shared_lib_1",
@@ -353,11 +353,11 @@ filegroup {
}
func TestApexBundleCompileMultilib32(t *testing.T) {
runApexTestCase(t, bp2buildTestCase{
description: "apex - example with compile_multilib=32",
moduleTypeUnderTest: "apex",
moduleTypeUnderTestFactory: apex.BundleFactory,
filesystem: map[string]string{
runApexTestCase(t, Bp2buildTestCase{
Description: "apex - example with compile_multilib=32",
ModuleTypeUnderTest: "apex",
ModuleTypeUnderTestFactory: apex.BundleFactory,
Filesystem: map[string]string{
"system/sepolicy/apex/Android.bp": `
filegroup {
name: "com.android.apogee-file_contexts",
@@ -366,9 +366,9 @@ filegroup {
}
`,
},
blueprint: createMultilibBlueprint("32"),
expectedBazelTargets: []string{
makeBazelTarget("apex", "com.android.apogee", attrNameToString{
Blueprint: createMultilibBlueprint("32"),
ExpectedBazelTargets: []string{
makeBazelTarget("apex", "com.android.apogee", AttrNameToString{
"native_shared_libs_32": `[
":native_shared_lib_1",
":native_shared_lib_3",
@@ -384,11 +384,11 @@ filegroup {
}
func TestApexBundleCompileMultilib64(t *testing.T) {
runApexTestCase(t, bp2buildTestCase{
description: "apex - example with compile_multilib=64",
moduleTypeUnderTest: "apex",
moduleTypeUnderTestFactory: apex.BundleFactory,
filesystem: map[string]string{
runApexTestCase(t, Bp2buildTestCase{
Description: "apex - example with compile_multilib=64",
ModuleTypeUnderTest: "apex",
ModuleTypeUnderTestFactory: apex.BundleFactory,
Filesystem: map[string]string{
"system/sepolicy/apex/Android.bp": `
filegroup {
name: "com.android.apogee-file_contexts",
@@ -397,9 +397,9 @@ filegroup {
}
`,
},
blueprint: createMultilibBlueprint("64"),
expectedBazelTargets: []string{
makeBazelTarget("apex", "com.android.apogee", attrNameToString{
Blueprint: createMultilibBlueprint("64"),
ExpectedBazelTargets: []string{
makeBazelTarget("apex", "com.android.apogee", AttrNameToString{
"native_shared_libs_64": `select({
"//build/bazel/platforms/arch:arm64": [
":native_shared_lib_1",
@@ -420,11 +420,11 @@ filegroup {
}
func TestApexBundleDefaultPropertyValues(t *testing.T) {
runApexTestCase(t, bp2buildTestCase{
description: "apex - default property values",
moduleTypeUnderTest: "apex",
moduleTypeUnderTestFactory: apex.BundleFactory,
filesystem: map[string]string{
runApexTestCase(t, Bp2buildTestCase{
Description: "apex - default property values",
ModuleTypeUnderTest: "apex",
ModuleTypeUnderTestFactory: apex.BundleFactory,
Filesystem: map[string]string{
"system/sepolicy/apex/Android.bp": `
filegroup {
name: "com.android.apogee-file_contexts",
@@ -433,13 +433,13 @@ filegroup {
}
`,
},
blueprint: `
Blueprint: `
apex {
name: "com.android.apogee",
manifest: "apogee_manifest.json",
}
`,
expectedBazelTargets: []string{makeBazelTarget("apex", "com.android.apogee", attrNameToString{
ExpectedBazelTargets: []string{makeBazelTarget("apex", "com.android.apogee", AttrNameToString{
"manifest": `"apogee_manifest.json"`,
"file_contexts": `"//system/sepolicy/apex:com.android.apogee-file_contexts"`,
}),
@@ -447,11 +447,11 @@ apex {
}
func TestApexBundleHasBazelModuleProps(t *testing.T) {
runApexTestCase(t, bp2buildTestCase{
description: "apex - has bazel module props",
moduleTypeUnderTest: "apex",
moduleTypeUnderTestFactory: apex.BundleFactory,
filesystem: map[string]string{
runApexTestCase(t, Bp2buildTestCase{
Description: "apex - has bazel module props",
ModuleTypeUnderTest: "apex",
ModuleTypeUnderTestFactory: apex.BundleFactory,
Filesystem: map[string]string{
"system/sepolicy/apex/Android.bp": `
filegroup {
name: "apogee-file_contexts",
@@ -460,14 +460,14 @@ filegroup {
}
`,
},
blueprint: `
Blueprint: `
apex {
name: "apogee",
manifest: "manifest.json",
bazel_module: { bp2build_available: true },
}
`,
expectedBazelTargets: []string{makeBazelTarget("apex", "apogee", attrNameToString{
ExpectedBazelTargets: []string{makeBazelTarget("apex", "apogee", AttrNameToString{
"manifest": `"manifest.json"`,
"file_contexts": `"//system/sepolicy/apex:apogee-file_contexts"`,
}),
@@ -525,12 +525,12 @@ apex {
}
func TestBp2BuildOverrideApex(t *testing.T) {
runOverrideApexTestCase(t, bp2buildTestCase{
description: "override_apex",
moduleTypeUnderTest: "override_apex",
moduleTypeUnderTestFactory: apex.OverrideApexFactory,
filesystem: map[string]string{},
blueprint: `
runOverrideApexTestCase(t, Bp2buildTestCase{
Description: "override_apex",
ModuleTypeUnderTest: "override_apex",
ModuleTypeUnderTestFactory: apex.OverrideApexFactory,
Filesystem: map[string]string{},
Blueprint: `
apex_key {
name: "com.android.apogee.key",
public_key: "com.android.apogee.avbpubkey",
@@ -623,8 +623,8 @@ override_apex {
compressible: true,
}
`,
expectedBazelTargets: []string{
makeBazelTarget("apex", "com.google.android.apogee", attrNameToString{
ExpectedBazelTargets: []string{
makeBazelTarget("apex", "com.google.android.apogee", AttrNameToString{
"android_manifest": `"ApogeeAndroidManifest.xml"`,
"binaries": `[
":cc_binary_1",
@@ -659,11 +659,11 @@ override_apex {
}
func TestApexBundleSimple_manifestIsEmpty_baseApexOverrideApexInDifferentAndroidBp(t *testing.T) {
runOverrideApexTestCase(t, bp2buildTestCase{
description: "override_apex - manifest of base apex is empty, base apex and override_apex is in different Android.bp",
moduleTypeUnderTest: "override_apex",
moduleTypeUnderTestFactory: apex.OverrideApexFactory,
filesystem: map[string]string{
runOverrideApexTestCase(t, Bp2buildTestCase{
Description: "override_apex - manifest of base apex is empty, base apex and override_apex is in different Android.bp",
ModuleTypeUnderTest: "override_apex",
ModuleTypeUnderTestFactory: apex.OverrideApexFactory,
Filesystem: map[string]string{
"system/sepolicy/apex/Android.bp": `
filegroup {
name: "com.android.apogee-file_contexts",
@@ -677,14 +677,14 @@ apex {
}
`,
},
blueprint: `
Blueprint: `
override_apex {
name: "com.google.android.apogee",
base: ":com.android.apogee",
}
`,
expectedBazelTargets: []string{
makeBazelTarget("apex", "com.google.android.apogee", attrNameToString{
ExpectedBazelTargets: []string{
makeBazelTarget("apex", "com.google.android.apogee", AttrNameToString{
"file_contexts": `"//system/sepolicy/apex:com.android.apogee-file_contexts"`,
"manifest": `"//a/b:apex_manifest.json"`,
}),
@@ -692,11 +692,11 @@ override_apex {
}
func TestApexBundleSimple_manifestIsSet_baseApexOverrideApexInDifferentAndroidBp(t *testing.T) {
runOverrideApexTestCase(t, bp2buildTestCase{
description: "override_apex - manifest of base apex is set, base apex and override_apex is in different Android.bp",
moduleTypeUnderTest: "override_apex",
moduleTypeUnderTestFactory: apex.OverrideApexFactory,
filesystem: map[string]string{
runOverrideApexTestCase(t, Bp2buildTestCase{
Description: "override_apex - manifest of base apex is set, base apex and override_apex is in different Android.bp",
ModuleTypeUnderTest: "override_apex",
ModuleTypeUnderTestFactory: apex.OverrideApexFactory,
Filesystem: map[string]string{
"system/sepolicy/apex/Android.bp": `
filegroup {
name: "com.android.apogee-file_contexts",
@@ -711,14 +711,14 @@ apex {
}
`,
},
blueprint: `
Blueprint: `
override_apex {
name: "com.google.android.apogee",
base: ":com.android.apogee",
}
`,
expectedBazelTargets: []string{
makeBazelTarget("apex", "com.google.android.apogee", attrNameToString{
ExpectedBazelTargets: []string{
makeBazelTarget("apex", "com.google.android.apogee", AttrNameToString{
"file_contexts": `"//system/sepolicy/apex:com.android.apogee-file_contexts"`,
"manifest": `"//a/b:apogee_manifest.json"`,
}),
@@ -726,11 +726,11 @@ override_apex {
}
func TestApexBundleSimple_manifestIsEmpty_baseApexOverrideApexInSameAndroidBp(t *testing.T) {
runOverrideApexTestCase(t, bp2buildTestCase{
description: "override_apex - manifest of base apex is empty, base apex and override_apex is in same Android.bp",
moduleTypeUnderTest: "override_apex",
moduleTypeUnderTestFactory: apex.OverrideApexFactory,
filesystem: map[string]string{
runOverrideApexTestCase(t, Bp2buildTestCase{
Description: "override_apex - manifest of base apex is empty, base apex and override_apex is in same Android.bp",
ModuleTypeUnderTest: "override_apex",
ModuleTypeUnderTestFactory: apex.OverrideApexFactory,
Filesystem: map[string]string{
"system/sepolicy/apex/Android.bp": `
filegroup {
name: "com.android.apogee-file_contexts",
@@ -738,7 +738,7 @@ filegroup {
bazel_module: { bp2build_available: false },
}`,
},
blueprint: `
Blueprint: `
apex {
name: "com.android.apogee",
bazel_module: { bp2build_available: false },
@@ -749,8 +749,8 @@ override_apex {
base: ":com.android.apogee",
}
`,
expectedBazelTargets: []string{
makeBazelTarget("apex", "com.google.android.apogee", attrNameToString{
ExpectedBazelTargets: []string{
makeBazelTarget("apex", "com.google.android.apogee", AttrNameToString{
"file_contexts": `"//system/sepolicy/apex:com.android.apogee-file_contexts"`,
"manifest": `"apex_manifest.json"`,
}),
@@ -758,11 +758,11 @@ override_apex {
}
func TestApexBundleSimple_manifestIsSet_baseApexOverrideApexInSameAndroidBp(t *testing.T) {
runOverrideApexTestCase(t, bp2buildTestCase{
description: "override_apex - manifest of base apex is set, base apex and override_apex is in same Android.bp",
moduleTypeUnderTest: "override_apex",
moduleTypeUnderTestFactory: apex.OverrideApexFactory,
filesystem: map[string]string{
runOverrideApexTestCase(t, Bp2buildTestCase{
Description: "override_apex - manifest of base apex is set, base apex and override_apex is in same Android.bp",
ModuleTypeUnderTest: "override_apex",
ModuleTypeUnderTestFactory: apex.OverrideApexFactory,
Filesystem: map[string]string{
"system/sepolicy/apex/Android.bp": `
filegroup {
name: "com.android.apogee-file_contexts",
@@ -770,7 +770,7 @@ filegroup {
bazel_module: { bp2build_available: false },
}`,
},
blueprint: `
Blueprint: `
apex {
name: "com.android.apogee",
manifest: "apogee_manifest.json",
@@ -782,8 +782,8 @@ override_apex {
base: ":com.android.apogee",
}
`,
expectedBazelTargets: []string{
makeBazelTarget("apex", "com.google.android.apogee", attrNameToString{
ExpectedBazelTargets: []string{
makeBazelTarget("apex", "com.google.android.apogee", AttrNameToString{
"file_contexts": `"//system/sepolicy/apex:com.android.apogee-file_contexts"`,
"manifest": `"apogee_manifest.json"`,
}),
@@ -791,11 +791,11 @@ override_apex {
}
func TestApexBundleSimple_packageNameOverride(t *testing.T) {
runOverrideApexTestCase(t, bp2buildTestCase{
description: "override_apex - override package name",
moduleTypeUnderTest: "override_apex",
moduleTypeUnderTestFactory: apex.OverrideApexFactory,
filesystem: map[string]string{
runOverrideApexTestCase(t, Bp2buildTestCase{
Description: "override_apex - override package name",
ModuleTypeUnderTest: "override_apex",
ModuleTypeUnderTestFactory: apex.OverrideApexFactory,
Filesystem: map[string]string{
"system/sepolicy/apex/Android.bp": `
filegroup {
name: "com.android.apogee-file_contexts",
@@ -803,7 +803,7 @@ filegroup {
bazel_module: { bp2build_available: false },
}`,
},
blueprint: `
Blueprint: `
apex {
name: "com.android.apogee",
bazel_module: { bp2build_available: false },
@@ -815,8 +815,8 @@ override_apex {
package_name: "com.google.android.apogee",
}
`,
expectedBazelTargets: []string{
makeBazelTarget("apex", "com.google.android.apogee", attrNameToString{
ExpectedBazelTargets: []string{
makeBazelTarget("apex", "com.google.android.apogee", AttrNameToString{
"file_contexts": `"//system/sepolicy/apex:com.android.apogee-file_contexts"`,
"manifest": `"apex_manifest.json"`,
"package_name": `"com.google.android.apogee"`,
@@ -825,11 +825,11 @@ override_apex {
}
func TestApexBundleSimple_NoPrebuiltsOverride(t *testing.T) {
runOverrideApexTestCase(t, bp2buildTestCase{
description: "override_apex - no override",
moduleTypeUnderTest: "override_apex",
moduleTypeUnderTestFactory: apex.OverrideApexFactory,
filesystem: map[string]string{
runOverrideApexTestCase(t, Bp2buildTestCase{
Description: "override_apex - no override",
ModuleTypeUnderTest: "override_apex",
ModuleTypeUnderTestFactory: apex.OverrideApexFactory,
Filesystem: map[string]string{
"system/sepolicy/apex/Android.bp": `
filegroup {
name: "com.android.apogee-file_contexts",
@@ -837,7 +837,7 @@ filegroup {
bazel_module: { bp2build_available: false },
}`,
},
blueprint: `
Blueprint: `
prebuilt_etc {
name: "prebuilt_file",
bazel_module: { bp2build_available: false },
@@ -854,8 +854,8 @@ override_apex {
base: ":com.android.apogee",
}
`,
expectedBazelTargets: []string{
makeBazelTarget("apex", "com.google.android.apogee", attrNameToString{
ExpectedBazelTargets: []string{
makeBazelTarget("apex", "com.google.android.apogee", AttrNameToString{
"file_contexts": `"//system/sepolicy/apex:com.android.apogee-file_contexts"`,
"manifest": `"apex_manifest.json"`,
"prebuilts": `[":prebuilt_file"]`,
@@ -864,11 +864,11 @@ override_apex {
}
func TestApexBundleSimple_PrebuiltsOverride(t *testing.T) {
runOverrideApexTestCase(t, bp2buildTestCase{
description: "override_apex - ooverride",
moduleTypeUnderTest: "override_apex",
moduleTypeUnderTestFactory: apex.OverrideApexFactory,
filesystem: map[string]string{
runOverrideApexTestCase(t, Bp2buildTestCase{
Description: "override_apex - ooverride",
ModuleTypeUnderTest: "override_apex",
ModuleTypeUnderTestFactory: apex.OverrideApexFactory,
Filesystem: map[string]string{
"system/sepolicy/apex/Android.bp": `
filegroup {
name: "com.android.apogee-file_contexts",
@@ -876,7 +876,7 @@ filegroup {
bazel_module: { bp2build_available: false },
}`,
},
blueprint: `
Blueprint: `
prebuilt_etc {
name: "prebuilt_file",
bazel_module: { bp2build_available: false },
@@ -899,8 +899,8 @@ override_apex {
prebuilts: ["prebuilt_file2"]
}
`,
expectedBazelTargets: []string{
makeBazelTarget("apex", "com.google.android.apogee", attrNameToString{
ExpectedBazelTargets: []string{
makeBazelTarget("apex", "com.google.android.apogee", AttrNameToString{
"file_contexts": `"//system/sepolicy/apex:com.android.apogee-file_contexts"`,
"manifest": `"apex_manifest.json"`,
"prebuilts": `[":prebuilt_file2"]`,
@@ -909,11 +909,11 @@ override_apex {
}
func TestApexBundleSimple_PrebuiltsOverrideEmptyList(t *testing.T) {
runOverrideApexTestCase(t, bp2buildTestCase{
description: "override_apex - override with empty list",
moduleTypeUnderTest: "override_apex",
moduleTypeUnderTestFactory: apex.OverrideApexFactory,
filesystem: map[string]string{
runOverrideApexTestCase(t, Bp2buildTestCase{
Description: "override_apex - override with empty list",
ModuleTypeUnderTest: "override_apex",
ModuleTypeUnderTestFactory: apex.OverrideApexFactory,
Filesystem: map[string]string{
"system/sepolicy/apex/Android.bp": `
filegroup {
name: "com.android.apogee-file_contexts",
@@ -921,7 +921,7 @@ filegroup {
bazel_module: { bp2build_available: false },
}`,
},
blueprint: `
Blueprint: `
prebuilt_etc {
name: "prebuilt_file",
bazel_module: { bp2build_available: false },
@@ -939,8 +939,8 @@ override_apex {
prebuilts: [],
}
`,
expectedBazelTargets: []string{
makeBazelTarget("apex", "com.google.android.apogee", attrNameToString{
ExpectedBazelTargets: []string{
makeBazelTarget("apex", "com.google.android.apogee", AttrNameToString{
"file_contexts": `"//system/sepolicy/apex:com.android.apogee-file_contexts"`,
"manifest": `"apex_manifest.json"`,
"prebuilts": `[]`,
@@ -949,11 +949,11 @@ override_apex {
}
func TestApexBundleSimple_NoLoggingParentOverride(t *testing.T) {
runOverrideApexTestCase(t, bp2buildTestCase{
description: "override_apex - logging_parent - no override",
moduleTypeUnderTest: "override_apex",
moduleTypeUnderTestFactory: apex.OverrideApexFactory,
filesystem: map[string]string{
runOverrideApexTestCase(t, Bp2buildTestCase{
Description: "override_apex - logging_parent - no override",
ModuleTypeUnderTest: "override_apex",
ModuleTypeUnderTestFactory: apex.OverrideApexFactory,
Filesystem: map[string]string{
"system/sepolicy/apex/Android.bp": `
filegroup {
name: "com.android.apogee-file_contexts",
@@ -961,7 +961,7 @@ filegroup {
bazel_module: { bp2build_available: false },
}`,
},
blueprint: `
Blueprint: `
apex {
name: "com.android.apogee",
bazel_module: { bp2build_available: false },
@@ -973,8 +973,8 @@ override_apex {
base: ":com.android.apogee",
}
`,
expectedBazelTargets: []string{
makeBazelTarget("apex", "com.google.android.apogee", attrNameToString{
ExpectedBazelTargets: []string{
makeBazelTarget("apex", "com.google.android.apogee", AttrNameToString{
"file_contexts": `"//system/sepolicy/apex:com.android.apogee-file_contexts"`,
"manifest": `"apex_manifest.json"`,
"logging_parent": `"foo.bar.baz"`,
@@ -983,11 +983,11 @@ override_apex {
}
func TestApexBundleSimple_LoggingParentOverride(t *testing.T) {
runOverrideApexTestCase(t, bp2buildTestCase{
description: "override_apex - logging_parent - override",
moduleTypeUnderTest: "override_apex",
moduleTypeUnderTestFactory: apex.OverrideApexFactory,
filesystem: map[string]string{
runOverrideApexTestCase(t, Bp2buildTestCase{
Description: "override_apex - logging_parent - override",
ModuleTypeUnderTest: "override_apex",
ModuleTypeUnderTestFactory: apex.OverrideApexFactory,
Filesystem: map[string]string{
"system/sepolicy/apex/Android.bp": `
filegroup {
name: "com.android.apogee-file_contexts",
@@ -995,7 +995,7 @@ filegroup {
bazel_module: { bp2build_available: false },
}`,
},
blueprint: `
Blueprint: `
apex {
name: "com.android.apogee",
bazel_module: { bp2build_available: false },
@@ -1008,8 +1008,8 @@ override_apex {
logging_parent: "foo.bar.baz.override",
}
`,
expectedBazelTargets: []string{
makeBazelTarget("apex", "com.google.android.apogee", attrNameToString{
ExpectedBazelTargets: []string{
makeBazelTarget("apex", "com.google.android.apogee", AttrNameToString{
"file_contexts": `"//system/sepolicy/apex:com.android.apogee-file_contexts"`,
"manifest": `"apex_manifest.json"`,
"logging_parent": `"foo.bar.baz.override"`,

View File

@@ -21,28 +21,28 @@ import (
"testing"
)
func runApexKeyTestCase(t *testing.T, tc bp2buildTestCase) {
func runApexKeyTestCase(t *testing.T, tc Bp2buildTestCase) {
t.Helper()
runBp2BuildTestCase(t, registerApexKeyModuleTypes, tc)
RunBp2BuildTestCase(t, registerApexKeyModuleTypes, tc)
}
func registerApexKeyModuleTypes(ctx android.RegistrationContext) {
}
func TestApexKeySimple(t *testing.T) {
runApexKeyTestCase(t, bp2buildTestCase{
description: "apex key - simple example",
moduleTypeUnderTest: "apex_key",
moduleTypeUnderTestFactory: apex.ApexKeyFactory,
filesystem: map[string]string{},
blueprint: `
runApexKeyTestCase(t, Bp2buildTestCase{
Description: "apex key - simple example",
ModuleTypeUnderTest: "apex_key",
ModuleTypeUnderTestFactory: apex.ApexKeyFactory,
Filesystem: map[string]string{},
Blueprint: `
apex_key {
name: "com.android.apogee.key",
public_key: "com.android.apogee.avbpubkey",
private_key: "com.android.apogee.pem",
}
`,
expectedBazelTargets: []string{makeBazelTargetNoRestrictions("apex_key", "com.android.apogee.key", attrNameToString{
ExpectedBazelTargets: []string{MakeBazelTargetNoRestrictions("apex_key", "com.android.apogee.key", AttrNameToString{
"private_key": `"com.android.apogee.pem"`,
"public_key": `"com.android.apogee.avbpubkey"`,
}),

File diff suppressed because it is too large Load Diff

View File

@@ -31,7 +31,7 @@ const (
type testBazelTarget struct {
typ string
name string
attrs attrNameToString
attrs AttrNameToString
}
func generateBazelTargetsForTest(targets []testBazelTarget, hod android.HostOrDeviceSupported) []string {
@@ -73,12 +73,12 @@ func runCcBinaryTestCase(t *testing.T, testCase ccBinaryBp2buildTestCase) {
description := fmt.Sprintf("%s %s", moduleTypeUnderTest, testCase.description)
t.Run(description, func(t *testing.T) {
t.Helper()
runBp2BuildTestCase(t, registerCcBinaryModuleTypes, bp2buildTestCase{
expectedBazelTargets: generateBazelTargetsForTest(testCase.targets, android.DeviceSupported),
moduleTypeUnderTest: moduleTypeUnderTest,
moduleTypeUnderTestFactory: cc.BinaryFactory,
description: description,
blueprint: binaryReplacer.Replace(testCase.blueprint),
RunBp2BuildTestCase(t, registerCcBinaryModuleTypes, Bp2buildTestCase{
ExpectedBazelTargets: generateBazelTargetsForTest(testCase.targets, android.DeviceSupported),
ModuleTypeUnderTest: moduleTypeUnderTest,
ModuleTypeUnderTestFactory: cc.BinaryFactory,
Description: description,
Blueprint: binaryReplacer.Replace(testCase.blueprint),
})
})
}
@@ -88,12 +88,12 @@ func runCcHostBinaryTestCase(t *testing.T, testCase ccBinaryBp2buildTestCase) {
moduleTypeUnderTest := "cc_binary_host"
description := fmt.Sprintf("%s %s", moduleTypeUnderTest, testCase.description)
t.Run(description, func(t *testing.T) {
runBp2BuildTestCase(t, registerCcBinaryModuleTypes, bp2buildTestCase{
expectedBazelTargets: generateBazelTargetsForTest(testCase.targets, android.HostSupported),
moduleTypeUnderTest: moduleTypeUnderTest,
moduleTypeUnderTestFactory: cc.BinaryHostFactory,
description: description,
blueprint: hostBinaryReplacer.Replace(testCase.blueprint),
RunBp2BuildTestCase(t, registerCcBinaryModuleTypes, Bp2buildTestCase{
ExpectedBazelTargets: generateBazelTargetsForTest(testCase.targets, android.HostSupported),
ModuleTypeUnderTest: moduleTypeUnderTest,
ModuleTypeUnderTestFactory: cc.BinaryHostFactory,
Description: description,
Blueprint: hostBinaryReplacer.Replace(testCase.blueprint),
})
})
}
@@ -126,7 +126,7 @@ func TestBasicCcBinary(t *testing.T) {
}
`,
targets: []testBazelTarget{
{"cc_binary", "foo", attrNameToString{
{"cc_binary", "foo", AttrNameToString{
"absolute_includes": `["absolute_dir"]`,
"asflags": `["-Dasflag"]`,
"conlyflags": `["-Dconlyflag"]`,
@@ -166,7 +166,7 @@ func TestCcBinaryWithSharedLdflagDisableFeature(t *testing.T) {
}
`,
targets: []testBazelTarget{
{"cc_binary", "foo", attrNameToString{
{"cc_binary", "foo", AttrNameToString{
"features": `["-static_flag"]`,
"linkopts": `["-shared"]`,
},
@@ -186,7 +186,7 @@ func TestCcBinaryWithLinkStatic(t *testing.T) {
}
`,
targets: []testBazelTarget{
{"cc_binary", "foo", attrNameToString{
{"cc_binary", "foo", AttrNameToString{
"linkshared": `False`,
},
},
@@ -205,7 +205,7 @@ func TestCcBinaryVersionScript(t *testing.T) {
}
`,
targets: []testBazelTarget{
{"cc_binary", "foo", attrNameToString{
{"cc_binary", "foo", AttrNameToString{
"additional_linker_inputs": `["vs"]`,
"linkopts": `["-Wl,--version-script,$(location vs)"]`,
},
@@ -230,7 +230,7 @@ func TestCcBinarySplitSrcsByLang(t *testing.T) {
}
` + simpleModuleDoNotConvertBp2build("filegroup", "fg_foo"),
targets: []testBazelTarget{
{"cc_binary", "foo", attrNameToString{
{"cc_binary", "foo", AttrNameToString{
"srcs": `[
"cpponly.cpp",
":fg_foo_cpp_srcs",
@@ -285,7 +285,7 @@ genrule {
simpleModuleDoNotConvertBp2build("cc_library", "shared_dep") +
simpleModuleDoNotConvertBp2build("cc_library", "implementation_shared_dep"),
targets: []testBazelTarget{
{"cc_binary", "foo", attrNameToString{
{"cc_binary", "foo", AttrNameToString{
"deps": `[
":implementation_static_dep",
":static_dep",
@@ -314,21 +314,21 @@ func TestCcBinaryNocrtTests(t *testing.T) {
baseTestCases := []struct {
description string
soongProperty string
bazelAttr attrNameToString
bazelAttr AttrNameToString
}{
{
description: "nocrt: true",
soongProperty: `nocrt: true,`,
bazelAttr: attrNameToString{"link_crt": `False`},
bazelAttr: AttrNameToString{"link_crt": `False`},
},
{
description: "nocrt: false",
soongProperty: `nocrt: false,`,
bazelAttr: attrNameToString{},
bazelAttr: AttrNameToString{},
},
{
description: "nocrt: not set",
bazelAttr: attrNameToString{},
bazelAttr: AttrNameToString{},
},
}
@@ -357,21 +357,21 @@ func TestCcBinaryNo_libcrtTests(t *testing.T) {
baseTestCases := []struct {
description string
soongProperty string
bazelAttr attrNameToString
bazelAttr AttrNameToString
}{
{
description: "no_libcrt: true",
soongProperty: `no_libcrt: true,`,
bazelAttr: attrNameToString{"use_libcrt": `False`},
bazelAttr: AttrNameToString{"use_libcrt": `False`},
},
{
description: "no_libcrt: false",
soongProperty: `no_libcrt: false,`,
bazelAttr: attrNameToString{"use_libcrt": `True`},
bazelAttr: AttrNameToString{"use_libcrt": `True`},
},
{
description: "no_libcrt: not set",
bazelAttr: attrNameToString{},
bazelAttr: AttrNameToString{},
},
}
@@ -400,35 +400,35 @@ func TestCcBinaryPropertiesToFeatures(t *testing.T) {
baseTestCases := []struct {
description string
soongProperty string
bazelAttr attrNameToString
bazelAttr AttrNameToString
}{
{
description: "pack_relocation: true",
soongProperty: `pack_relocations: true,`,
bazelAttr: attrNameToString{},
bazelAttr: AttrNameToString{},
},
{
description: "pack_relocations: false",
soongProperty: `pack_relocations: false,`,
bazelAttr: attrNameToString{"features": `["disable_pack_relocations"]`},
bazelAttr: AttrNameToString{"features": `["disable_pack_relocations"]`},
},
{
description: "pack_relocations: not set",
bazelAttr: attrNameToString{},
bazelAttr: AttrNameToString{},
},
{
description: "pack_relocation: true",
soongProperty: `allow_undefined_symbols: true,`,
bazelAttr: attrNameToString{"features": `["-no_undefined_symbols"]`},
bazelAttr: AttrNameToString{"features": `["-no_undefined_symbols"]`},
},
{
description: "allow_undefined_symbols: false",
soongProperty: `allow_undefined_symbols: false,`,
bazelAttr: attrNameToString{},
bazelAttr: AttrNameToString{},
},
{
description: "allow_undefined_symbols: not set",
bazelAttr: attrNameToString{},
bazelAttr: AttrNameToString{},
},
}
@@ -462,11 +462,11 @@ func TestCcBinarySharedProto(t *testing.T) {
include_build_directory: false,
}`,
targets: []testBazelTarget{
{"proto_library", "foo_proto", attrNameToString{
{"proto_library", "foo_proto", AttrNameToString{
"srcs": `["foo.proto"]`,
}}, {"cc_lite_proto_library", "foo_cc_proto_lite", attrNameToString{
}}, {"cc_lite_proto_library", "foo_cc_proto_lite", AttrNameToString{
"deps": `[":foo_proto"]`,
}}, {"cc_binary", "foo", attrNameToString{
}}, {"cc_binary", "foo", AttrNameToString{
"dynamic_deps": `[":libprotobuf-cpp-lite"]`,
"whole_archive_deps": `[":foo_cc_proto_lite"]`,
}},
@@ -485,11 +485,11 @@ func TestCcBinaryStaticProto(t *testing.T) {
include_build_directory: false,
}`,
targets: []testBazelTarget{
{"proto_library", "foo_proto", attrNameToString{
{"proto_library", "foo_proto", AttrNameToString{
"srcs": `["foo.proto"]`,
}}, {"cc_lite_proto_library", "foo_cc_proto_lite", attrNameToString{
}}, {"cc_lite_proto_library", "foo_cc_proto_lite", AttrNameToString{
"deps": `[":foo_proto"]`,
}}, {"cc_binary", "foo", attrNameToString{
}}, {"cc_binary", "foo", AttrNameToString{
"deps": `[":libprotobuf-cpp-lite"]`,
"whole_archive_deps": `[":foo_cc_proto_lite"]`,
"linkshared": `False`,
@@ -510,7 +510,7 @@ func TestCcBinaryConvertLex(t *testing.T) {
}
`,
targets: []testBazelTarget{
{"genlex", "foo_genlex_l", attrNameToString{
{"genlex", "foo_genlex_l", AttrNameToString{
"srcs": `[
"foo1.l",
"foo2.l",
@@ -520,7 +520,7 @@ func TestCcBinaryConvertLex(t *testing.T) {
"--bar_opt",
]`,
}},
{"genlex", "foo_genlex_ll", attrNameToString{
{"genlex", "foo_genlex_ll", AttrNameToString{
"srcs": `[
"bar1.ll",
"bar2.ll",
@@ -530,7 +530,7 @@ func TestCcBinaryConvertLex(t *testing.T) {
"--bar_opt",
]`,
}},
{"cc_binary", "foo", attrNameToString{
{"cc_binary", "foo", AttrNameToString{
"srcs": `[
"bar.cc",
":foo_genlex_ll",

File diff suppressed because it is too large Load Diff

View File

@@ -59,17 +59,17 @@ func registerCcLibraryHeadersModuleTypes(ctx android.RegistrationContext) {
cc.RegisterCCBuildComponents(ctx)
}
func runCcLibraryHeadersTestCase(t *testing.T, tc bp2buildTestCase) {
func runCcLibraryHeadersTestCase(t *testing.T, tc Bp2buildTestCase) {
t.Helper()
runBp2BuildTestCase(t, registerCcLibraryHeadersModuleTypes, tc)
RunBp2BuildTestCase(t, registerCcLibraryHeadersModuleTypes, tc)
}
func TestCcLibraryHeadersSimple(t *testing.T) {
runCcLibraryHeadersTestCase(t, bp2buildTestCase{
description: "cc_library_headers test",
moduleTypeUnderTest: "cc_library_headers",
moduleTypeUnderTestFactory: cc.LibraryHeaderFactory,
filesystem: map[string]string{
runCcLibraryHeadersTestCase(t, Bp2buildTestCase{
Description: "cc_library_headers test",
ModuleTypeUnderTest: "cc_library_headers",
ModuleTypeUnderTestFactory: cc.LibraryHeaderFactory,
Filesystem: map[string]string{
"lib-1/lib1a.h": "",
"lib-1/lib1b.h": "",
"lib-2/lib2a.h": "",
@@ -82,7 +82,7 @@ func TestCcLibraryHeadersSimple(t *testing.T) {
"arch_x86_exported_include_dir/b.h": "",
"arch_x86_64_exported_include_dir/c.h": "",
},
blueprint: soongCcLibraryHeadersPreamble + `
Blueprint: soongCcLibraryHeadersPreamble + `
cc_library_headers {
name: "foo_headers",
export_include_dirs: ["dir-1", "dir-2"],
@@ -105,8 +105,8 @@ cc_library_headers {
// TODO: Also support export_header_lib_headers
}`,
expectedBazelTargets: []string{
makeBazelTarget("cc_library_headers", "foo_headers", attrNameToString{
ExpectedBazelTargets: []string{
makeBazelTarget("cc_library_headers", "foo_headers", AttrNameToString{
"export_includes": `[
"dir-1",
"dir-2",
@@ -124,12 +124,12 @@ cc_library_headers {
}
func TestCcLibraryHeadersOsSpecificHeader(t *testing.T) {
runCcLibraryHeadersTestCase(t, bp2buildTestCase{
description: "cc_library_headers test with os-specific header_libs props",
moduleTypeUnderTest: "cc_library_headers",
moduleTypeUnderTestFactory: cc.LibraryHeaderFactory,
filesystem: map[string]string{},
blueprint: soongCcLibraryPreamble + `
runCcLibraryHeadersTestCase(t, Bp2buildTestCase{
Description: "cc_library_headers test with os-specific header_libs props",
ModuleTypeUnderTest: "cc_library_headers",
ModuleTypeUnderTestFactory: cc.LibraryHeaderFactory,
Filesystem: map[string]string{},
Blueprint: soongCcLibraryPreamble + `
cc_library_headers {
name: "android-lib",
bazel_module: { bp2build_available: false },
@@ -182,8 +182,8 @@ cc_library_headers {
},
include_build_directory: false,
}`,
expectedBazelTargets: []string{
makeBazelTarget("cc_library_headers", "foo_headers", attrNameToString{
ExpectedBazelTargets: []string{
makeBazelTarget("cc_library_headers", "foo_headers", AttrNameToString{
"deps": `[":base-lib"] + select({
"//build/bazel/platforms/os:android": [":android-lib"],
"//build/bazel/platforms/os:darwin": [":darwin-lib"],
@@ -198,12 +198,12 @@ cc_library_headers {
}
func TestCcLibraryHeadersOsSpecficHeaderLibsExportHeaderLibHeaders(t *testing.T) {
runCcLibraryHeadersTestCase(t, bp2buildTestCase{
description: "cc_library_headers test with os-specific header_libs and export_header_lib_headers props",
moduleTypeUnderTest: "cc_library_headers",
moduleTypeUnderTestFactory: cc.LibraryHeaderFactory,
filesystem: map[string]string{},
blueprint: soongCcLibraryPreamble + `
runCcLibraryHeadersTestCase(t, Bp2buildTestCase{
Description: "cc_library_headers test with os-specific header_libs and export_header_lib_headers props",
ModuleTypeUnderTest: "cc_library_headers",
ModuleTypeUnderTestFactory: cc.LibraryHeaderFactory,
Filesystem: map[string]string{},
Blueprint: soongCcLibraryPreamble + `
cc_library_headers {
name: "android-lib",
bazel_module: { bp2build_available: false },
@@ -222,8 +222,8 @@ cc_library_headers {
},
include_build_directory: false,
}`,
expectedBazelTargets: []string{
makeBazelTarget("cc_library_headers", "foo_headers", attrNameToString{
ExpectedBazelTargets: []string{
makeBazelTarget("cc_library_headers", "foo_headers", AttrNameToString{
"deps": `select({
"//build/bazel/platforms/os:android": [":exported-lib"],
"//conditions:default": [],
@@ -234,12 +234,12 @@ cc_library_headers {
}
func TestCcLibraryHeadersArchAndTargetExportSystemIncludes(t *testing.T) {
runCcLibraryHeadersTestCase(t, bp2buildTestCase{
description: "cc_library_headers test with arch-specific and target-specific export_system_include_dirs props",
moduleTypeUnderTest: "cc_library_headers",
moduleTypeUnderTestFactory: cc.LibraryHeaderFactory,
filesystem: map[string]string{},
blueprint: soongCcLibraryPreamble + `cc_library_headers {
runCcLibraryHeadersTestCase(t, Bp2buildTestCase{
Description: "cc_library_headers test with arch-specific and target-specific export_system_include_dirs props",
ModuleTypeUnderTest: "cc_library_headers",
ModuleTypeUnderTestFactory: cc.LibraryHeaderFactory,
Filesystem: map[string]string{},
Blueprint: soongCcLibraryPreamble + `cc_library_headers {
name: "foo_headers",
export_system_include_dirs: [
"shared_include_dir",
@@ -275,8 +275,8 @@ func TestCcLibraryHeadersArchAndTargetExportSystemIncludes(t *testing.T) {
},
include_build_directory: false,
}`,
expectedBazelTargets: []string{
makeBazelTarget("cc_library_headers", "foo_headers", attrNameToString{
ExpectedBazelTargets: []string{
makeBazelTarget("cc_library_headers", "foo_headers", AttrNameToString{
"export_system_includes": `["shared_include_dir"] + select({
"//build/bazel/platforms/arch:arm": ["arm_include_dir"],
"//build/bazel/platforms/arch:x86_64": ["x86_64_include_dir"],
@@ -293,11 +293,11 @@ func TestCcLibraryHeadersArchAndTargetExportSystemIncludes(t *testing.T) {
}
func TestCcLibraryHeadersNoCrtIgnored(t *testing.T) {
runCcLibraryHeadersTestCase(t, bp2buildTestCase{
description: "cc_library_headers test",
moduleTypeUnderTest: "cc_library_headers",
moduleTypeUnderTestFactory: cc.LibraryHeaderFactory,
filesystem: map[string]string{
runCcLibraryHeadersTestCase(t, Bp2buildTestCase{
Description: "cc_library_headers test",
ModuleTypeUnderTest: "cc_library_headers",
ModuleTypeUnderTestFactory: cc.LibraryHeaderFactory,
Filesystem: map[string]string{
"lib-1/lib1a.h": "",
"lib-1/lib1b.h": "",
"lib-2/lib2a.h": "",
@@ -310,15 +310,15 @@ func TestCcLibraryHeadersNoCrtIgnored(t *testing.T) {
"arch_x86_exported_include_dir/b.h": "",
"arch_x86_64_exported_include_dir/c.h": "",
},
blueprint: soongCcLibraryHeadersPreamble + `
Blueprint: soongCcLibraryHeadersPreamble + `
cc_library_headers {
name: "lib-1",
export_include_dirs: ["lib-1"],
no_libcrt: true,
include_build_directory: false,
}`,
expectedBazelTargets: []string{
makeBazelTarget("cc_library_headers", "lib-1", attrNameToString{
ExpectedBazelTargets: []string{
makeBazelTarget("cc_library_headers", "lib-1", AttrNameToString{
"export_includes": `["lib-1"]`,
}),
},
@@ -326,12 +326,12 @@ cc_library_headers {
}
func TestCcLibraryHeadersExportedStaticLibHeadersReexported(t *testing.T) {
runCcLibraryHeadersTestCase(t, bp2buildTestCase{
description: "cc_library_headers exported_static_lib_headers is reexported",
moduleTypeUnderTest: "cc_library_headers",
moduleTypeUnderTestFactory: cc.LibraryHeaderFactory,
filesystem: map[string]string{},
blueprint: soongCcLibraryHeadersPreamble + `
runCcLibraryHeadersTestCase(t, Bp2buildTestCase{
Description: "cc_library_headers exported_static_lib_headers is reexported",
ModuleTypeUnderTest: "cc_library_headers",
ModuleTypeUnderTestFactory: cc.LibraryHeaderFactory,
Filesystem: map[string]string{},
Blueprint: soongCcLibraryHeadersPreamble + `
cc_library_headers {
name: "foo_headers",
export_static_lib_headers: ["foo_export"],
@@ -339,8 +339,8 @@ cc_library_headers {
bazel_module: { bp2build_available: true },
}
` + simpleModuleDoNotConvertBp2build("cc_library_headers", "foo_export"),
expectedBazelTargets: []string{
makeBazelTarget("cc_library_headers", "foo_headers", attrNameToString{
ExpectedBazelTargets: []string{
makeBazelTarget("cc_library_headers", "foo_headers", AttrNameToString{
"deps": `[":foo_export"]`,
}),
},
@@ -348,12 +348,12 @@ cc_library_headers {
}
func TestCcLibraryHeadersExportedSharedLibHeadersReexported(t *testing.T) {
runCcLibraryHeadersTestCase(t, bp2buildTestCase{
description: "cc_library_headers exported_shared_lib_headers is reexported",
moduleTypeUnderTest: "cc_library_headers",
moduleTypeUnderTestFactory: cc.LibraryHeaderFactory,
filesystem: map[string]string{},
blueprint: soongCcLibraryHeadersPreamble + `
runCcLibraryHeadersTestCase(t, Bp2buildTestCase{
Description: "cc_library_headers exported_shared_lib_headers is reexported",
ModuleTypeUnderTest: "cc_library_headers",
ModuleTypeUnderTestFactory: cc.LibraryHeaderFactory,
Filesystem: map[string]string{},
Blueprint: soongCcLibraryHeadersPreamble + `
cc_library_headers {
name: "foo_headers",
export_shared_lib_headers: ["foo_export"],
@@ -361,8 +361,8 @@ cc_library_headers {
bazel_module: { bp2build_available: true },
}
` + simpleModuleDoNotConvertBp2build("cc_library_headers", "foo_export"),
expectedBazelTargets: []string{
makeBazelTarget("cc_library_headers", "foo_headers", attrNameToString{
ExpectedBazelTargets: []string{
makeBazelTarget("cc_library_headers", "foo_headers", AttrNameToString{
"deps": `[":foo_export"]`,
}),
},
@@ -370,12 +370,12 @@ cc_library_headers {
}
func TestCcLibraryHeadersExportedHeaderLibHeadersReexported(t *testing.T) {
runCcLibraryHeadersTestCase(t, bp2buildTestCase{
description: "cc_library_headers exported_header_lib_headers is reexported",
moduleTypeUnderTest: "cc_library_headers",
moduleTypeUnderTestFactory: cc.LibraryHeaderFactory,
filesystem: map[string]string{},
blueprint: soongCcLibraryHeadersPreamble + `
runCcLibraryHeadersTestCase(t, Bp2buildTestCase{
Description: "cc_library_headers exported_header_lib_headers is reexported",
ModuleTypeUnderTest: "cc_library_headers",
ModuleTypeUnderTestFactory: cc.LibraryHeaderFactory,
Filesystem: map[string]string{},
Blueprint: soongCcLibraryHeadersPreamble + `
cc_library_headers {
name: "foo_headers",
export_header_lib_headers: ["foo_export"],
@@ -383,8 +383,8 @@ cc_library_headers {
bazel_module: { bp2build_available: true },
}
` + simpleModuleDoNotConvertBp2build("cc_library_headers", "foo_export"),
expectedBazelTargets: []string{
makeBazelTarget("cc_library_headers", "foo_headers", attrNameToString{
ExpectedBazelTargets: []string{
makeBazelTarget("cc_library_headers", "foo_headers", AttrNameToString{
"deps": `[":foo_export"]`,
}),
},

View File

@@ -35,17 +35,17 @@ func registerCcLibrarySharedModuleTypes(ctx android.RegistrationContext) {
ctx.RegisterModuleType("cc_library", cc.LibraryFactory)
}
func runCcLibrarySharedTestCase(t *testing.T, tc bp2buildTestCase) {
func runCcLibrarySharedTestCase(t *testing.T, tc Bp2buildTestCase) {
t.Helper()
(&tc).moduleTypeUnderTest = "cc_library_shared"
(&tc).moduleTypeUnderTestFactory = cc.LibrarySharedFactory
runBp2BuildTestCase(t, registerCcLibrarySharedModuleTypes, tc)
(&tc).ModuleTypeUnderTest = "cc_library_shared"
(&tc).ModuleTypeUnderTestFactory = cc.LibrarySharedFactory
RunBp2BuildTestCase(t, registerCcLibrarySharedModuleTypes, tc)
}
func TestCcLibrarySharedSimple(t *testing.T) {
runCcLibrarySharedTestCase(t, bp2buildTestCase{
description: "cc_library_shared simple overall test",
filesystem: map[string]string{
runCcLibrarySharedTestCase(t, Bp2buildTestCase{
Description: "cc_library_shared simple overall test",
Filesystem: map[string]string{
// NOTE: include_dir headers *should not* appear in Bazel hdrs later (?)
"include_dir_1/include_dir_1_a.h": "",
"include_dir_1/include_dir_1_b.h": "",
@@ -65,7 +65,7 @@ func TestCcLibrarySharedSimple(t *testing.T) {
"implicit_include_1.h": "",
"implicit_include_2.h": "",
},
blueprint: soongCcLibrarySharedPreamble + `
Blueprint: soongCcLibrarySharedPreamble + `
cc_library_headers {
name: "header_lib_1",
export_include_dirs: ["header_lib_1"],
@@ -141,8 +141,8 @@ cc_library_shared {
// TODO: Also support export_header_lib_headers
}`,
expectedBazelTargets: []string{
makeBazelTarget("cc_library_shared", "foo_shared", attrNameToString{
ExpectedBazelTargets: []string{
makeBazelTarget("cc_library_shared", "foo_shared", AttrNameToString{
"absolute_includes": `[
"include_dir_1",
"include_dir_2",
@@ -184,10 +184,10 @@ 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{},
blueprint: soongCcLibrarySharedPreamble + `
runCcLibrarySharedTestCase(t, Bp2buildTestCase{
Description: "cc_library_shared arch-specific shared_libs with whole_static_libs",
Filesystem: map[string]string{},
Blueprint: soongCcLibrarySharedPreamble + `
cc_library_static {
name: "static_dep",
bazel_module: { bp2build_available: false },
@@ -201,8 +201,8 @@ cc_library_shared {
arch: { arm64: { shared_libs: ["shared_dep"], whole_static_libs: ["static_dep"] } },
include_build_directory: false,
}`,
expectedBazelTargets: []string{
makeBazelTarget("cc_library_shared", "foo_shared", attrNameToString{
ExpectedBazelTargets: []string{
makeBazelTarget("cc_library_shared", "foo_shared", AttrNameToString{
"implementation_dynamic_deps": `select({
"//build/bazel/platforms/arch:arm64": [":shared_dep"],
"//conditions:default": [],
@@ -217,10 +217,10 @@ cc_library_shared {
}
func TestCcLibrarySharedOsSpecificSharedLib(t *testing.T) {
runCcLibrarySharedTestCase(t, bp2buildTestCase{
description: "cc_library_shared os-specific shared_libs",
filesystem: map[string]string{},
blueprint: soongCcLibrarySharedPreamble + `
runCcLibrarySharedTestCase(t, Bp2buildTestCase{
Description: "cc_library_shared os-specific shared_libs",
Filesystem: map[string]string{},
Blueprint: soongCcLibrarySharedPreamble + `
cc_library_shared {
name: "shared_dep",
bazel_module: { bp2build_available: false },
@@ -230,8 +230,8 @@ cc_library_shared {
target: { android: { shared_libs: ["shared_dep"], } },
include_build_directory: false,
}`,
expectedBazelTargets: []string{
makeBazelTarget("cc_library_shared", "foo_shared", attrNameToString{
ExpectedBazelTargets: []string{
makeBazelTarget("cc_library_shared", "foo_shared", AttrNameToString{
"implementation_dynamic_deps": `select({
"//build/bazel/platforms/os:android": [":shared_dep"],
"//conditions:default": [],
@@ -242,10 +242,10 @@ cc_library_shared {
}
func TestCcLibrarySharedBaseArchOsSpecificSharedLib(t *testing.T) {
runCcLibrarySharedTestCase(t, bp2buildTestCase{
description: "cc_library_shared base, arch, and os-specific shared_libs",
filesystem: map[string]string{},
blueprint: soongCcLibrarySharedPreamble + `
runCcLibrarySharedTestCase(t, Bp2buildTestCase{
Description: "cc_library_shared base, arch, and os-specific shared_libs",
Filesystem: map[string]string{},
Blueprint: soongCcLibrarySharedPreamble + `
cc_library_shared {
name: "shared_dep",
bazel_module: { bp2build_available: false },
@@ -265,8 +265,8 @@ cc_library_shared {
arch: { arm64: { shared_libs: ["shared_dep3"] } },
include_build_directory: false,
}`,
expectedBazelTargets: []string{
makeBazelTarget("cc_library_shared", "foo_shared", attrNameToString{
ExpectedBazelTargets: []string{
makeBazelTarget("cc_library_shared", "foo_shared", AttrNameToString{
"implementation_dynamic_deps": `[":shared_dep"] + select({
"//build/bazel/platforms/arch:arm64": [":shared_dep3"],
"//conditions:default": [],
@@ -280,22 +280,22 @@ cc_library_shared {
}
func TestCcLibrarySharedSimpleExcludeSrcs(t *testing.T) {
runCcLibrarySharedTestCase(t, bp2buildTestCase{
description: "cc_library_shared simple exclude_srcs",
filesystem: map[string]string{
runCcLibrarySharedTestCase(t, Bp2buildTestCase{
Description: "cc_library_shared simple exclude_srcs",
Filesystem: map[string]string{
"common.c": "",
"foo-a.c": "",
"foo-excluded.c": "",
},
blueprint: soongCcLibrarySharedPreamble + `
Blueprint: soongCcLibrarySharedPreamble + `
cc_library_shared {
name: "foo_shared",
srcs: ["common.c", "foo-*.c"],
exclude_srcs: ["foo-excluded.c"],
include_build_directory: false,
}`,
expectedBazelTargets: []string{
makeBazelTarget("cc_library_shared", "foo_shared", attrNameToString{
ExpectedBazelTargets: []string{
makeBazelTarget("cc_library_shared", "foo_shared", AttrNameToString{
"srcs_c": `[
"common.c",
"foo-a.c",
@@ -306,10 +306,10 @@ cc_library_shared {
}
func TestCcLibrarySharedStrip(t *testing.T) {
runCcLibrarySharedTestCase(t, bp2buildTestCase{
description: "cc_library_shared stripping",
filesystem: map[string]string{},
blueprint: soongCcLibrarySharedPreamble + `
runCcLibrarySharedTestCase(t, Bp2buildTestCase{
Description: "cc_library_shared stripping",
Filesystem: map[string]string{},
Blueprint: soongCcLibrarySharedPreamble + `
cc_library_shared {
name: "foo_shared",
strip: {
@@ -321,8 +321,8 @@ cc_library_shared {
},
include_build_directory: false,
}`,
expectedBazelTargets: []string{
makeBazelTarget("cc_library_shared", "foo_shared", attrNameToString{
ExpectedBazelTargets: []string{
makeBazelTarget("cc_library_shared", "foo_shared", AttrNameToString{
"strip": `{
"all": True,
"keep_symbols": False,
@@ -339,19 +339,19 @@ cc_library_shared {
}
func TestCcLibrarySharedVersionScript(t *testing.T) {
runCcLibrarySharedTestCase(t, bp2buildTestCase{
description: "cc_library_shared version script",
filesystem: map[string]string{
runCcLibrarySharedTestCase(t, Bp2buildTestCase{
Description: "cc_library_shared version script",
Filesystem: map[string]string{
"version_script": "",
},
blueprint: soongCcLibrarySharedPreamble + `
Blueprint: soongCcLibrarySharedPreamble + `
cc_library_shared {
name: "foo_shared",
version_script: "version_script",
include_build_directory: false,
}`,
expectedBazelTargets: []string{
makeBazelTarget("cc_library_shared", "foo_shared", attrNameToString{
ExpectedBazelTargets: []string{
makeBazelTarget("cc_library_shared", "foo_shared", AttrNameToString{
"additional_linker_inputs": `["version_script"]`,
"linkopts": `["-Wl,--version-script,$(location version_script)"]`,
}),
@@ -360,12 +360,12 @@ cc_library_shared {
}
func TestCcLibrarySharedNoCrtTrue(t *testing.T) {
runCcLibrarySharedTestCase(t, bp2buildTestCase{
description: "cc_library_shared - nocrt: true emits attribute",
filesystem: map[string]string{
runCcLibrarySharedTestCase(t, Bp2buildTestCase{
Description: "cc_library_shared - nocrt: true emits attribute",
Filesystem: map[string]string{
"impl.cpp": "",
},
blueprint: soongCcLibraryPreamble + `
Blueprint: soongCcLibraryPreamble + `
cc_library_shared {
name: "foo_shared",
srcs: ["impl.cpp"],
@@ -373,8 +373,8 @@ cc_library_shared {
include_build_directory: false,
}
`,
expectedBazelTargets: []string{
makeBazelTarget("cc_library_shared", "foo_shared", attrNameToString{
ExpectedBazelTargets: []string{
makeBazelTarget("cc_library_shared", "foo_shared", AttrNameToString{
"link_crt": `False`,
"srcs": `["impl.cpp"]`,
}),
@@ -383,12 +383,12 @@ cc_library_shared {
}
func TestCcLibrarySharedNoCrtFalse(t *testing.T) {
runCcLibrarySharedTestCase(t, bp2buildTestCase{
description: "cc_library_shared - nocrt: false doesn't emit attribute",
filesystem: map[string]string{
runCcLibrarySharedTestCase(t, Bp2buildTestCase{
Description: "cc_library_shared - nocrt: false doesn't emit attribute",
Filesystem: map[string]string{
"impl.cpp": "",
},
blueprint: soongCcLibraryPreamble + `
Blueprint: soongCcLibraryPreamble + `
cc_library_shared {
name: "foo_shared",
srcs: ["impl.cpp"],
@@ -396,8 +396,8 @@ cc_library_shared {
include_build_directory: false,
}
`,
expectedBazelTargets: []string{
makeBazelTarget("cc_library_shared", "foo_shared", attrNameToString{
ExpectedBazelTargets: []string{
makeBazelTarget("cc_library_shared", "foo_shared", AttrNameToString{
"srcs": `["impl.cpp"]`,
}),
},
@@ -405,12 +405,12 @@ cc_library_shared {
}
func TestCcLibrarySharedNoCrtArchVariant(t *testing.T) {
runCcLibrarySharedTestCase(t, bp2buildTestCase{
description: "cc_library_shared - nocrt in select",
filesystem: map[string]string{
runCcLibrarySharedTestCase(t, Bp2buildTestCase{
Description: "cc_library_shared - nocrt in select",
Filesystem: map[string]string{
"impl.cpp": "",
},
blueprint: soongCcLibraryPreamble + `
Blueprint: soongCcLibraryPreamble + `
cc_library_shared {
name: "foo_shared",
srcs: ["impl.cpp"],
@@ -425,13 +425,13 @@ cc_library_shared {
include_build_directory: false,
}
`,
expectedErr: fmt.Errorf("module \"foo_shared\": nocrt is not supported for arch variants"),
ExpectedErr: fmt.Errorf("module \"foo_shared\": nocrt is not supported for arch variants"),
})
}
func TestCcLibrarySharedProto(t *testing.T) {
runCcLibrarySharedTestCase(t, bp2buildTestCase{
blueprint: soongCcProtoPreamble + `cc_library_shared {
runCcLibrarySharedTestCase(t, Bp2buildTestCase{
Blueprint: soongCcProtoPreamble + `cc_library_shared {
name: "foo",
srcs: ["foo.proto"],
proto: {
@@ -439,12 +439,12 @@ func TestCcLibrarySharedProto(t *testing.T) {
},
include_build_directory: false,
}`,
expectedBazelTargets: []string{
makeBazelTarget("proto_library", "foo_proto", attrNameToString{
ExpectedBazelTargets: []string{
makeBazelTarget("proto_library", "foo_proto", AttrNameToString{
"srcs": `["foo.proto"]`,
}), makeBazelTarget("cc_lite_proto_library", "foo_cc_proto_lite", attrNameToString{
}), makeBazelTarget("cc_lite_proto_library", "foo_cc_proto_lite", AttrNameToString{
"deps": `[":foo_proto"]`,
}), makeBazelTarget("cc_library_shared", "foo", attrNameToString{
}), makeBazelTarget("cc_library_shared", "foo", AttrNameToString{
"dynamic_deps": `[":libprotobuf-cpp-lite"]`,
"whole_archive_deps": `[":foo_cc_proto_lite"]`,
}),
@@ -453,14 +453,14 @@ func TestCcLibrarySharedProto(t *testing.T) {
}
func TestCcLibrarySharedUseVersionLib(t *testing.T) {
runCcLibrarySharedTestCase(t, bp2buildTestCase{
blueprint: soongCcProtoPreamble + `cc_library_shared {
runCcLibrarySharedTestCase(t, Bp2buildTestCase{
Blueprint: soongCcProtoPreamble + `cc_library_shared {
name: "foo",
use_version_lib: true,
include_build_directory: false,
}`,
expectedBazelTargets: []string{
makeBazelTarget("cc_library_shared", "foo", attrNameToString{
ExpectedBazelTargets: []string{
makeBazelTarget("cc_library_shared", "foo", AttrNameToString{
"use_version_lib": "True",
}),
},
@@ -468,12 +468,12 @@ func TestCcLibrarySharedUseVersionLib(t *testing.T) {
}
func TestCcLibrarySharedStubs(t *testing.T) {
runCcLibrarySharedTestCase(t, bp2buildTestCase{
description: "cc_library_shared stubs",
moduleTypeUnderTest: "cc_library_shared",
moduleTypeUnderTestFactory: cc.LibrarySharedFactory,
dir: "foo/bar",
filesystem: map[string]string{
runCcLibrarySharedTestCase(t, Bp2buildTestCase{
Description: "cc_library_shared stubs",
ModuleTypeUnderTest: "cc_library_shared",
ModuleTypeUnderTestFactory: cc.LibrarySharedFactory,
Dir: "foo/bar",
Filesystem: map[string]string{
"foo/bar/Android.bp": `
cc_library_shared {
name: "a",
@@ -483,8 +483,8 @@ cc_library_shared {
}
`,
},
blueprint: soongCcLibraryPreamble,
expectedBazelTargets: []string{makeBazelTarget("cc_library_shared", "a", attrNameToString{
Blueprint: soongCcLibraryPreamble,
ExpectedBazelTargets: []string{makeBazelTarget("cc_library_shared", "a", AttrNameToString{
"stubs_symbol_file": `"a.map.txt"`,
"stubs_versions": `[
"28",
@@ -498,11 +498,11 @@ cc_library_shared {
}
func TestCcLibrarySharedSystemSharedLibsSharedEmpty(t *testing.T) {
runCcLibrarySharedTestCase(t, bp2buildTestCase{
description: "cc_library_shared system_shared_libs empty shared default",
moduleTypeUnderTest: "cc_library_shared",
moduleTypeUnderTestFactory: cc.LibrarySharedFactory,
blueprint: soongCcLibrarySharedPreamble + `
runCcLibrarySharedTestCase(t, Bp2buildTestCase{
Description: "cc_library_shared system_shared_libs empty shared default",
ModuleTypeUnderTest: "cc_library_shared",
ModuleTypeUnderTestFactory: cc.LibrarySharedFactory,
Blueprint: soongCcLibrarySharedPreamble + `
cc_defaults {
name: "empty_defaults",
shared: {
@@ -515,18 +515,18 @@ cc_library_shared {
defaults: ["empty_defaults"],
}
`,
expectedBazelTargets: []string{makeBazelTarget("cc_library_shared", "empty", attrNameToString{
ExpectedBazelTargets: []string{makeBazelTarget("cc_library_shared", "empty", AttrNameToString{
"system_dynamic_deps": "[]",
})},
})
}
func TestCcLibrarySharedConvertLex(t *testing.T) {
runCcLibrarySharedTestCase(t, bp2buildTestCase{
description: "cc_library_shared with lex files",
moduleTypeUnderTest: "cc_library_shared",
moduleTypeUnderTestFactory: cc.LibrarySharedFactory,
filesystem: map[string]string{
runCcLibrarySharedTestCase(t, Bp2buildTestCase{
Description: "cc_library_shared with lex files",
ModuleTypeUnderTest: "cc_library_shared",
ModuleTypeUnderTestFactory: cc.LibrarySharedFactory,
Filesystem: map[string]string{
"foo.c": "",
"bar.cc": "",
"foo1.l": "",
@@ -534,29 +534,29 @@ func TestCcLibrarySharedConvertLex(t *testing.T) {
"foo2.l": "",
"bar2.ll": "",
},
blueprint: `cc_library_shared {
Blueprint: `cc_library_shared {
name: "foo_lib",
srcs: ["foo.c", "bar.cc", "foo1.l", "foo2.l", "bar1.ll", "bar2.ll"],
lex: { flags: ["--foo_flags"] },
include_build_directory: false,
bazel_module: { bp2build_available: true },
}`,
expectedBazelTargets: []string{
makeBazelTarget("genlex", "foo_lib_genlex_l", attrNameToString{
ExpectedBazelTargets: []string{
makeBazelTarget("genlex", "foo_lib_genlex_l", AttrNameToString{
"srcs": `[
"foo1.l",
"foo2.l",
]`,
"lexopts": `["--foo_flags"]`,
}),
makeBazelTarget("genlex", "foo_lib_genlex_ll", attrNameToString{
makeBazelTarget("genlex", "foo_lib_genlex_ll", AttrNameToString{
"srcs": `[
"bar1.ll",
"bar2.ll",
]`,
"lexopts": `["--foo_flags"]`,
}),
makeBazelTarget("cc_library_shared", "foo_lib", attrNameToString{
makeBazelTarget("cc_library_shared", "foo_lib", AttrNameToString{
"srcs": `[
"bar.cc",
":foo_lib_genlex_ll",
@@ -571,8 +571,8 @@ func TestCcLibrarySharedConvertLex(t *testing.T) {
}
func TestCcLibrarySharedClangUnknownFlags(t *testing.T) {
runCcLibrarySharedTestCase(t, bp2buildTestCase{
blueprint: soongCcProtoPreamble + `cc_library_shared {
runCcLibrarySharedTestCase(t, Bp2buildTestCase{
Blueprint: soongCcProtoPreamble + `cc_library_shared {
name: "foo",
conlyflags: ["-a", "-finline-functions"],
cflags: ["-b","-finline-functions"],
@@ -580,8 +580,8 @@ func TestCcLibrarySharedClangUnknownFlags(t *testing.T) {
ldflags: ["-d","-finline-functions", "-e"],
include_build_directory: false,
}`,
expectedBazelTargets: []string{
makeBazelTarget("cc_library_shared", "foo", attrNameToString{
ExpectedBazelTargets: []string{
makeBazelTarget("cc_library_shared", "foo", AttrNameToString{
"conlyflags": `["-a"]`,
"copts": `["-b"]`,
"cppflags": `["-c"]`,
@@ -595,8 +595,8 @@ func TestCcLibrarySharedClangUnknownFlags(t *testing.T) {
}
func TestCCLibraryFlagSpaceSplitting(t *testing.T) {
runCcLibrarySharedTestCase(t, bp2buildTestCase{
blueprint: soongCcProtoPreamble + `cc_library_shared {
runCcLibrarySharedTestCase(t, Bp2buildTestCase{
Blueprint: soongCcProtoPreamble + `cc_library_shared {
name: "foo",
conlyflags: [ "-include header.h"],
cflags: ["-include header.h"],
@@ -604,8 +604,8 @@ func TestCCLibraryFlagSpaceSplitting(t *testing.T) {
version_script: "version_script",
include_build_directory: false,
}`,
expectedBazelTargets: []string{
makeBazelTarget("cc_library_shared", "foo", attrNameToString{
ExpectedBazelTargets: []string{
makeBazelTarget("cc_library_shared", "foo", AttrNameToString{
"additional_linker_inputs": `["version_script"]`,
"conlyflags": `[
"-include",

File diff suppressed because it is too large Load Diff

View File

@@ -26,23 +26,23 @@ func registerCcObjectModuleTypes(ctx android.RegistrationContext) {
ctx.RegisterModuleType("cc_defaults", func() android.Module { return cc.DefaultsFactory() })
}
func runCcObjectTestCase(t *testing.T, tc bp2buildTestCase) {
func runCcObjectTestCase(t *testing.T, tc Bp2buildTestCase) {
t.Helper()
(&tc).moduleTypeUnderTest = "cc_object"
(&tc).moduleTypeUnderTestFactory = cc.ObjectFactory
runBp2BuildTestCase(t, registerCcObjectModuleTypes, tc)
(&tc).ModuleTypeUnderTest = "cc_object"
(&tc).ModuleTypeUnderTestFactory = cc.ObjectFactory
RunBp2BuildTestCase(t, registerCcObjectModuleTypes, tc)
}
func TestCcObjectSimple(t *testing.T) {
runCcObjectTestCase(t, bp2buildTestCase{
description: "simple cc_object generates cc_object with include header dep",
filesystem: map[string]string{
runCcObjectTestCase(t, Bp2buildTestCase{
Description: "simple cc_object generates cc_object with include header dep",
Filesystem: map[string]string{
"a/b/foo.h": "",
"a/b/bar.h": "",
"a/b/exclude.c": "",
"a/b/c.c": "",
},
blueprint: `cc_object {
Blueprint: `cc_object {
name: "foo",
local_include_dirs: ["include"],
system_shared_libs: [],
@@ -59,8 +59,8 @@ func TestCcObjectSimple(t *testing.T) {
min_sdk_version: "29",
}
`,
expectedBazelTargets: []string{
makeBazelTarget("cc_object", "foo", attrNameToString{
ExpectedBazelTargets: []string{
makeBazelTarget("cc_object", "foo", AttrNameToString{
"copts": `[
"-fno-addrsig",
"-Wno-gcc-compat",
@@ -73,16 +73,16 @@ func TestCcObjectSimple(t *testing.T) {
]`,
"srcs": `["a/b/c.c"]`,
"system_dynamic_deps": `[]`,
"sdk_version": `"current"`,
"min_sdk_version": `"29"`,
"sdk_version": `"current"`,
"min_sdk_version": `"29"`,
}),
},
})
}
func TestCcObjectDefaults(t *testing.T) {
runCcObjectTestCase(t, bp2buildTestCase{
blueprint: `cc_object {
runCcObjectTestCase(t, Bp2buildTestCase{
Blueprint: `cc_object {
name: "foo",
system_shared_libs: [],
srcs: [
@@ -105,8 +105,8 @@ cc_defaults {
],
}
`,
expectedBazelTargets: []string{
makeBazelTarget("cc_object", "foo", attrNameToString{
ExpectedBazelTargets: []string{
makeBazelTarget("cc_object", "foo", AttrNameToString{
"copts": `[
"-Werror",
"-fno-addrsig",
@@ -119,13 +119,13 @@ cc_defaults {
}
func TestCcObjectCcObjetDepsInObjs(t *testing.T) {
runCcObjectTestCase(t, bp2buildTestCase{
description: "cc_object with cc_object deps in objs props",
filesystem: map[string]string{
runCcObjectTestCase(t, Bp2buildTestCase{
Description: "cc_object with cc_object deps in objs props",
Filesystem: map[string]string{
"a/b/c.c": "",
"x/y/z.c": "",
},
blueprint: `cc_object {
Blueprint: `cc_object {
name: "foo",
system_shared_libs: [],
srcs: ["a/b/c.c"],
@@ -140,12 +140,12 @@ cc_object {
include_build_directory: false,
}
`,
expectedBazelTargets: []string{
makeBazelTarget("cc_object", "bar", attrNameToString{
ExpectedBazelTargets: []string{
makeBazelTarget("cc_object", "bar", AttrNameToString{
"copts": `["-fno-addrsig"]`,
"srcs": `["x/y/z.c"]`,
"system_dynamic_deps": `[]`,
}), makeBazelTarget("cc_object", "foo", attrNameToString{
}), makeBazelTarget("cc_object", "foo", AttrNameToString{
"copts": `["-fno-addrsig"]`,
"deps": `[":bar"]`,
"srcs": `["a/b/c.c"]`,
@@ -156,21 +156,21 @@ cc_object {
}
func TestCcObjectIncludeBuildDirFalse(t *testing.T) {
runCcObjectTestCase(t, bp2buildTestCase{
description: "cc_object with include_build_dir: false",
filesystem: map[string]string{
runCcObjectTestCase(t, Bp2buildTestCase{
Description: "cc_object with include_build_dir: false",
Filesystem: map[string]string{
"a/b/c.c": "",
"x/y/z.c": "",
},
blueprint: `cc_object {
Blueprint: `cc_object {
name: "foo",
system_shared_libs: [],
srcs: ["a/b/c.c"],
include_build_directory: false,
}
`,
expectedBazelTargets: []string{
makeBazelTarget("cc_object", "foo", attrNameToString{
ExpectedBazelTargets: []string{
makeBazelTarget("cc_object", "foo", AttrNameToString{
"copts": `["-fno-addrsig"]`,
"srcs": `["a/b/c.c"]`,
"system_dynamic_deps": `[]`,
@@ -180,9 +180,9 @@ func TestCcObjectIncludeBuildDirFalse(t *testing.T) {
}
func TestCcObjectProductVariable(t *testing.T) {
runCcObjectTestCase(t, bp2buildTestCase{
description: "cc_object with product variable",
blueprint: `cc_object {
runCcObjectTestCase(t, Bp2buildTestCase{
Description: "cc_object with product variable",
Blueprint: `cc_object {
name: "foo",
system_shared_libs: [],
include_build_directory: false,
@@ -194,8 +194,8 @@ func TestCcObjectProductVariable(t *testing.T) {
srcs: ["src.S"],
}
`,
expectedBazelTargets: []string{
makeBazelTarget("cc_object", "foo", attrNameToString{
ExpectedBazelTargets: []string{
makeBazelTarget("cc_object", "foo", AttrNameToString{
"asflags": `select({
"//build/bazel/product_variables:platform_sdk_version": ["-DPLATFORM_SDK_VERSION=$(Platform_sdk_version)"],
"//conditions:default": [],
@@ -209,9 +209,9 @@ func TestCcObjectProductVariable(t *testing.T) {
}
func TestCcObjectCflagsOneArch(t *testing.T) {
runCcObjectTestCase(t, bp2buildTestCase{
description: "cc_object setting cflags for one arch",
blueprint: `cc_object {
runCcObjectTestCase(t, Bp2buildTestCase{
Description: "cc_object setting cflags for one arch",
Blueprint: `cc_object {
name: "foo",
system_shared_libs: [],
srcs: ["a.cpp"],
@@ -226,8 +226,8 @@ func TestCcObjectCflagsOneArch(t *testing.T) {
include_build_directory: false,
}
`,
expectedBazelTargets: []string{
makeBazelTarget("cc_object", "foo", attrNameToString{
ExpectedBazelTargets: []string{
makeBazelTarget("cc_object", "foo", AttrNameToString{
"copts": `["-fno-addrsig"] + select({
"//build/bazel/platforms/arch:x86": ["-fPIC"],
"//conditions:default": [],
@@ -243,9 +243,9 @@ func TestCcObjectCflagsOneArch(t *testing.T) {
}
func TestCcObjectCflagsFourArch(t *testing.T) {
runCcObjectTestCase(t, bp2buildTestCase{
description: "cc_object setting cflags for 4 architectures",
blueprint: `cc_object {
runCcObjectTestCase(t, Bp2buildTestCase{
Description: "cc_object setting cflags for 4 architectures",
Blueprint: `cc_object {
name: "foo",
system_shared_libs: [],
srcs: ["base.cpp"],
@@ -270,8 +270,8 @@ func TestCcObjectCflagsFourArch(t *testing.T) {
include_build_directory: false,
}
`,
expectedBazelTargets: []string{
makeBazelTarget("cc_object", "foo", attrNameToString{
ExpectedBazelTargets: []string{
makeBazelTarget("cc_object", "foo", AttrNameToString{
"copts": `["-fno-addrsig"] + select({
"//build/bazel/platforms/arch:arm": ["-Wall"],
"//build/bazel/platforms/arch:arm64": ["-Wall"],
@@ -293,17 +293,17 @@ func TestCcObjectCflagsFourArch(t *testing.T) {
}
func TestCcObjectLinkerScript(t *testing.T) {
runCcObjectTestCase(t, bp2buildTestCase{
description: "cc_object setting linker_script",
blueprint: `cc_object {
runCcObjectTestCase(t, Bp2buildTestCase{
Description: "cc_object setting linker_script",
Blueprint: `cc_object {
name: "foo",
srcs: ["base.cpp"],
linker_script: "bunny.lds",
include_build_directory: false,
}
`,
expectedBazelTargets: []string{
makeBazelTarget("cc_object", "foo", attrNameToString{
ExpectedBazelTargets: []string{
makeBazelTarget("cc_object", "foo", AttrNameToString{
"copts": `["-fno-addrsig"]`,
"linker_script": `"bunny.lds"`,
"srcs": `["base.cpp"]`,
@@ -313,9 +313,9 @@ func TestCcObjectLinkerScript(t *testing.T) {
}
func TestCcObjectDepsAndLinkerScriptSelects(t *testing.T) {
runCcObjectTestCase(t, bp2buildTestCase{
description: "cc_object setting deps and linker_script across archs",
blueprint: `cc_object {
runCcObjectTestCase(t, Bp2buildTestCase{
Description: "cc_object setting deps and linker_script across archs",
Blueprint: `cc_object {
name: "foo",
srcs: ["base.cpp"],
arch: {
@@ -359,8 +359,8 @@ cc_object {
bazel_module: { bp2build_available: false },
}
`,
expectedBazelTargets: []string{
makeBazelTarget("cc_object", "foo", attrNameToString{
ExpectedBazelTargets: []string{
makeBazelTarget("cc_object", "foo", AttrNameToString{
"copts": `["-fno-addrsig"]`,
"deps": `select({
"//build/bazel/platforms/arch:arm": [":arm_obj"],
@@ -381,9 +381,9 @@ cc_object {
}
func TestCcObjectSelectOnLinuxAndBionicArchs(t *testing.T) {
runCcObjectTestCase(t, bp2buildTestCase{
description: "cc_object setting srcs based on linux and bionic archs",
blueprint: `cc_object {
runCcObjectTestCase(t, Bp2buildTestCase{
Description: "cc_object setting srcs based on linux and bionic archs",
Blueprint: `cc_object {
name: "foo",
srcs: ["base.cpp"],
target: {
@@ -400,8 +400,8 @@ func TestCcObjectSelectOnLinuxAndBionicArchs(t *testing.T) {
include_build_directory: false,
}
`,
expectedBazelTargets: []string{
makeBazelTarget("cc_object", "foo", attrNameToString{
ExpectedBazelTargets: []string{
makeBazelTarget("cc_object", "foo", AttrNameToString{
"copts": `["-fno-addrsig"]`,
"srcs": `["base.cpp"] + select({
"//build/bazel/platforms/os_arch:android_arm64": [

View File

@@ -22,24 +22,24 @@ import (
func TestPrebuiltLibraryStaticAndSharedSimple(t *testing.T) {
runBp2BuildTestCaseSimple(t,
bp2buildTestCase{
description: "prebuilt library static and shared simple",
moduleTypeUnderTest: "cc_prebuilt_library",
moduleTypeUnderTestFactory: cc.PrebuiltLibraryFactory,
filesystem: map[string]string{
Bp2buildTestCase{
Description: "prebuilt library static and shared simple",
ModuleTypeUnderTest: "cc_prebuilt_library",
ModuleTypeUnderTestFactory: cc.PrebuiltLibraryFactory,
Filesystem: map[string]string{
"libf.so": "",
},
blueprint: `
Blueprint: `
cc_prebuilt_library {
name: "libtest",
srcs: ["libf.so"],
bazel_module: { bp2build_available: true },
}`,
expectedBazelTargets: []string{
makeBazelTarget("prebuilt_library_static", "libtest_bp2build_cc_library_static", attrNameToString{
ExpectedBazelTargets: []string{
makeBazelTarget("prebuilt_library_static", "libtest_bp2build_cc_library_static", AttrNameToString{
"static_library": `"libf.so"`,
}),
makeBazelTarget("prebuilt_library_shared", "libtest", attrNameToString{
makeBazelTarget("prebuilt_library_shared", "libtest", AttrNameToString{
"shared_library": `"libf.so"`,
}),
},
@@ -48,15 +48,15 @@ cc_prebuilt_library {
func TestPrebuiltLibraryWithArchVariance(t *testing.T) {
runBp2BuildTestCaseSimple(t,
bp2buildTestCase{
description: "prebuilt library with arch variance",
moduleTypeUnderTest: "cc_prebuilt_library",
moduleTypeUnderTestFactory: cc.PrebuiltLibraryFactory,
filesystem: map[string]string{
Bp2buildTestCase{
Description: "prebuilt library with arch variance",
ModuleTypeUnderTest: "cc_prebuilt_library",
ModuleTypeUnderTestFactory: cc.PrebuiltLibraryFactory,
Filesystem: map[string]string{
"libf.so": "",
"libg.so": "",
},
blueprint: `
Blueprint: `
cc_prebuilt_library {
name: "libtest",
arch: {
@@ -65,15 +65,15 @@ cc_prebuilt_library {
},
bazel_module: { bp2build_available: true },
}`,
expectedBazelTargets: []string{
makeBazelTarget("prebuilt_library_static", "libtest_bp2build_cc_library_static", attrNameToString{
ExpectedBazelTargets: []string{
makeBazelTarget("prebuilt_library_static", "libtest_bp2build_cc_library_static", AttrNameToString{
"static_library": `select({
"//build/bazel/platforms/arch:arm": "libg.so",
"//build/bazel/platforms/arch:arm64": "libf.so",
"//conditions:default": None,
})`,
}),
makeBazelTarget("prebuilt_library_shared", "libtest", attrNameToString{
makeBazelTarget("prebuilt_library_shared", "libtest", AttrNameToString{
"shared_library": `select({
"//build/bazel/platforms/arch:arm": "libg.so",
"//build/bazel/platforms/arch:arm64": "libf.so",
@@ -86,16 +86,16 @@ cc_prebuilt_library {
func TestPrebuiltLibraryAdditionalAttrs(t *testing.T) {
runBp2BuildTestCaseSimple(t,
bp2buildTestCase{
description: "prebuilt library additional attributes",
moduleTypeUnderTest: "cc_prebuilt_library",
moduleTypeUnderTestFactory: cc.PrebuiltLibraryFactory,
filesystem: map[string]string{
Bp2buildTestCase{
Description: "prebuilt library additional attributes",
ModuleTypeUnderTest: "cc_prebuilt_library",
ModuleTypeUnderTestFactory: cc.PrebuiltLibraryFactory,
Filesystem: map[string]string{
"libf.so": "",
"testdir/1/": "",
"testdir/2/": "",
},
blueprint: `
Blueprint: `
cc_prebuilt_library {
name: "libtest",
srcs: ["libf.so"],
@@ -103,14 +103,14 @@ cc_prebuilt_library {
export_system_include_dirs: ["testdir/2/"],
bazel_module: { bp2build_available: true },
}`,
expectedBazelTargets: []string{
makeBazelTarget("prebuilt_library_static", "libtest_bp2build_cc_library_static", attrNameToString{
ExpectedBazelTargets: []string{
makeBazelTarget("prebuilt_library_static", "libtest_bp2build_cc_library_static", AttrNameToString{
"static_library": `"libf.so"`,
"export_includes": `["testdir/1/"]`,
"export_system_includes": `["testdir/2/"]`,
}),
// TODO(b/229374533): When fixed, update this test
makeBazelTarget("prebuilt_library_shared", "libtest", attrNameToString{
makeBazelTarget("prebuilt_library_shared", "libtest", AttrNameToString{
"shared_library": `"libf.so"`,
}),
},
@@ -119,15 +119,15 @@ cc_prebuilt_library {
func TestPrebuiltLibrarySharedStanzaFails(t *testing.T) {
runBp2BuildTestCaseSimple(t,
bp2buildTestCase{
description: "prebuilt library with shared stanza fails because multiple sources",
moduleTypeUnderTest: "cc_prebuilt_library",
moduleTypeUnderTestFactory: cc.PrebuiltLibraryFactory,
filesystem: map[string]string{
Bp2buildTestCase{
Description: "prebuilt library with shared stanza fails because multiple sources",
ModuleTypeUnderTest: "cc_prebuilt_library",
ModuleTypeUnderTestFactory: cc.PrebuiltLibraryFactory,
Filesystem: map[string]string{
"libf.so": "",
"libg.so": "",
},
blueprint: `
Blueprint: `
cc_prebuilt_library {
name: "libtest",
srcs: ["libf.so"],
@@ -136,21 +136,21 @@ cc_prebuilt_library {
},
bazel_module: { bp2build_available: true },
}`,
expectedErr: fmt.Errorf("Expected at most one source file"),
ExpectedErr: fmt.Errorf("Expected at most one source file"),
})
}
func TestPrebuiltLibraryStaticStanzaFails(t *testing.T) {
runBp2BuildTestCaseSimple(t,
bp2buildTestCase{
description: "prebuilt library with static stanza fails because multiple sources",
moduleTypeUnderTest: "cc_prebuilt_library",
moduleTypeUnderTestFactory: cc.PrebuiltLibraryFactory,
filesystem: map[string]string{
Bp2buildTestCase{
Description: "prebuilt library with static stanza fails because multiple sources",
ModuleTypeUnderTest: "cc_prebuilt_library",
ModuleTypeUnderTestFactory: cc.PrebuiltLibraryFactory,
Filesystem: map[string]string{
"libf.so": "",
"libg.so": "",
},
blueprint: `
Blueprint: `
cc_prebuilt_library {
name: "libtest",
srcs: ["libf.so"],
@@ -159,21 +159,21 @@ cc_prebuilt_library {
},
bazel_module: { bp2build_available: true },
}`,
expectedErr: fmt.Errorf("Expected at most one source file"),
ExpectedErr: fmt.Errorf("Expected at most one source file"),
})
}
func TestPrebuiltLibrarySharedAndStaticStanzas(t *testing.T) {
runBp2BuildTestCaseSimple(t,
bp2buildTestCase{
description: "prebuilt library with both shared and static stanzas",
moduleTypeUnderTest: "cc_prebuilt_library",
moduleTypeUnderTestFactory: cc.PrebuiltLibraryFactory,
filesystem: map[string]string{
Bp2buildTestCase{
Description: "prebuilt library with both shared and static stanzas",
ModuleTypeUnderTest: "cc_prebuilt_library",
ModuleTypeUnderTestFactory: cc.PrebuiltLibraryFactory,
Filesystem: map[string]string{
"libf.so": "",
"libg.so": "",
},
blueprint: `
Blueprint: `
cc_prebuilt_library {
name: "libtest",
static: {
@@ -184,11 +184,11 @@ cc_prebuilt_library {
},
bazel_module: { bp2build_available: true },
}`,
expectedBazelTargets: []string{
makeBazelTarget("prebuilt_library_static", "libtest_bp2build_cc_library_static", attrNameToString{
ExpectedBazelTargets: []string{
makeBazelTarget("prebuilt_library_static", "libtest_bp2build_cc_library_static", AttrNameToString{
"static_library": `"libf.so"`,
}),
makeBazelTarget("prebuilt_library_shared", "libtest", attrNameToString{
makeBazelTarget("prebuilt_library_shared", "libtest", AttrNameToString{
"shared_library": `"libg.so"`,
}),
},

View File

@@ -9,21 +9,21 @@ import (
func TestSharedPrebuiltLibrary(t *testing.T) {
runBp2BuildTestCaseSimple(t,
bp2buildTestCase{
description: "prebuilt library shared simple",
moduleTypeUnderTest: "cc_prebuilt_library_shared",
moduleTypeUnderTestFactory: cc.PrebuiltSharedLibraryFactory,
filesystem: map[string]string{
Bp2buildTestCase{
Description: "prebuilt library shared simple",
ModuleTypeUnderTest: "cc_prebuilt_library_shared",
ModuleTypeUnderTestFactory: cc.PrebuiltSharedLibraryFactory,
Filesystem: map[string]string{
"libf.so": "",
},
blueprint: `
Blueprint: `
cc_prebuilt_library_shared {
name: "libtest",
srcs: ["libf.so"],
bazel_module: { bp2build_available: true },
}`,
expectedBazelTargets: []string{
makeBazelTarget("prebuilt_library_shared", "libtest", attrNameToString{
ExpectedBazelTargets: []string{
makeBazelTarget("prebuilt_library_shared", "libtest", AttrNameToString{
"shared_library": `"libf.so"`,
}),
},
@@ -32,15 +32,15 @@ cc_prebuilt_library_shared {
func TestSharedPrebuiltLibraryWithArchVariance(t *testing.T) {
runBp2BuildTestCaseSimple(t,
bp2buildTestCase{
description: "prebuilt library shared with arch variance",
moduleTypeUnderTest: "cc_prebuilt_library_shared",
moduleTypeUnderTestFactory: cc.PrebuiltSharedLibraryFactory,
filesystem: map[string]string{
Bp2buildTestCase{
Description: "prebuilt library shared with arch variance",
ModuleTypeUnderTest: "cc_prebuilt_library_shared",
ModuleTypeUnderTestFactory: cc.PrebuiltSharedLibraryFactory,
Filesystem: map[string]string{
"libf.so": "",
"libg.so": "",
},
blueprint: `
Blueprint: `
cc_prebuilt_library_shared {
name: "libtest",
arch: {
@@ -49,8 +49,8 @@ cc_prebuilt_library_shared {
},
bazel_module: { bp2build_available: true },
}`,
expectedBazelTargets: []string{
makeBazelTarget("prebuilt_library_shared", "libtest", attrNameToString{
ExpectedBazelTargets: []string{
makeBazelTarget("prebuilt_library_shared", "libtest", AttrNameToString{
"shared_library": `select({
"//build/bazel/platforms/arch:arm": "libg.so",
"//build/bazel/platforms/arch:arm64": "libf.so",
@@ -63,15 +63,15 @@ cc_prebuilt_library_shared {
func TestSharedPrebuiltLibrarySharedStanzaFails(t *testing.T) {
runBp2BuildTestCaseSimple(t,
bp2buildTestCase{
description: "prebuilt library shared with shared stanza fails because multiple sources",
moduleTypeUnderTest: "cc_prebuilt_library_shared",
moduleTypeUnderTestFactory: cc.PrebuiltSharedLibraryFactory,
filesystem: map[string]string{
Bp2buildTestCase{
Description: "prebuilt library shared with shared stanza fails because multiple sources",
ModuleTypeUnderTest: "cc_prebuilt_library_shared",
ModuleTypeUnderTestFactory: cc.PrebuiltSharedLibraryFactory,
Filesystem: map[string]string{
"libf.so": "",
"libg.so": "",
},
blueprint: `
Blueprint: `
cc_prebuilt_library_shared {
name: "libtest",
srcs: ["libf.so"],
@@ -80,6 +80,6 @@ cc_prebuilt_library_shared {
},
bazel_module: { bp2build_available: true},
}`,
expectedErr: fmt.Errorf("Expected at most one source file"),
ExpectedErr: fmt.Errorf("Expected at most one source file"),
})
}

View File

@@ -22,21 +22,21 @@ import (
func TestStaticPrebuiltLibrary(t *testing.T) {
runBp2BuildTestCaseSimple(t,
bp2buildTestCase{
description: "prebuilt library static simple",
moduleTypeUnderTest: "cc_prebuilt_library_static",
moduleTypeUnderTestFactory: cc.PrebuiltStaticLibraryFactory,
filesystem: map[string]string{
Bp2buildTestCase{
Description: "prebuilt library static simple",
ModuleTypeUnderTest: "cc_prebuilt_library_static",
ModuleTypeUnderTestFactory: cc.PrebuiltStaticLibraryFactory,
Filesystem: map[string]string{
"libf.so": "",
},
blueprint: `
Blueprint: `
cc_prebuilt_library_static {
name: "libtest",
srcs: ["libf.so"],
bazel_module: { bp2build_available: true },
}`,
expectedBazelTargets: []string{
makeBazelTarget("prebuilt_library_static", "libtest", attrNameToString{
ExpectedBazelTargets: []string{
makeBazelTarget("prebuilt_library_static", "libtest", AttrNameToString{
"static_library": `"libf.so"`,
}),
},
@@ -45,15 +45,15 @@ cc_prebuilt_library_static {
func TestStaticPrebuiltLibraryWithArchVariance(t *testing.T) {
runBp2BuildTestCaseSimple(t,
bp2buildTestCase{
description: "prebuilt library static with arch variance",
moduleTypeUnderTest: "cc_prebuilt_library_static",
moduleTypeUnderTestFactory: cc.PrebuiltStaticLibraryFactory,
filesystem: map[string]string{
Bp2buildTestCase{
Description: "prebuilt library static with arch variance",
ModuleTypeUnderTest: "cc_prebuilt_library_static",
ModuleTypeUnderTestFactory: cc.PrebuiltStaticLibraryFactory,
Filesystem: map[string]string{
"libf.so": "",
"libg.so": "",
},
blueprint: `
Blueprint: `
cc_prebuilt_library_static {
name: "libtest",
arch: {
@@ -62,8 +62,8 @@ cc_prebuilt_library_static {
},
bazel_module: { bp2build_available: true },
}`,
expectedBazelTargets: []string{
makeBazelTarget("prebuilt_library_static", "libtest", attrNameToString{
ExpectedBazelTargets: []string{
makeBazelTarget("prebuilt_library_static", "libtest", AttrNameToString{
"static_library": `select({
"//build/bazel/platforms/arch:arm": "libg.so",
"//build/bazel/platforms/arch:arm64": "libf.so",
@@ -76,15 +76,15 @@ cc_prebuilt_library_static {
func TestStaticPrebuiltLibraryStaticStanzaFails(t *testing.T) {
runBp2BuildTestCaseSimple(t,
bp2buildTestCase{
description: "prebuilt library with static stanza fails because multiple sources",
moduleTypeUnderTest: "cc_prebuilt_library_static",
moduleTypeUnderTestFactory: cc.PrebuiltStaticLibraryFactory,
filesystem: map[string]string{
Bp2buildTestCase{
Description: "prebuilt library with static stanza fails because multiple sources",
ModuleTypeUnderTest: "cc_prebuilt_library_static",
ModuleTypeUnderTestFactory: cc.PrebuiltStaticLibraryFactory,
Filesystem: map[string]string{
"libf.so": "",
"libg.so": "",
},
blueprint: `
Blueprint: `
cc_prebuilt_library_static {
name: "libtest",
srcs: ["libf.so"],
@@ -93,16 +93,16 @@ cc_prebuilt_library_static {
},
bazel_module: { bp2build_available: true },
}`,
expectedErr: fmt.Errorf("Expected at most one source file"),
ExpectedErr: fmt.Errorf("Expected at most one source file"),
})
}
func TestCcLibraryStaticConvertLex(t *testing.T) {
runCcLibrarySharedTestCase(t, bp2buildTestCase{
description: "cc_library_static with lex files",
moduleTypeUnderTest: "cc_library_static",
moduleTypeUnderTestFactory: cc.LibraryStaticFactory,
filesystem: map[string]string{
runCcLibrarySharedTestCase(t, Bp2buildTestCase{
Description: "cc_library_static with lex files",
ModuleTypeUnderTest: "cc_library_static",
ModuleTypeUnderTestFactory: cc.LibraryStaticFactory,
Filesystem: map[string]string{
"foo.c": "",
"bar.cc": "",
"foo1.l": "",
@@ -110,29 +110,29 @@ func TestCcLibraryStaticConvertLex(t *testing.T) {
"foo2.l": "",
"bar2.ll": "",
},
blueprint: `cc_library_static {
Blueprint: `cc_library_static {
name: "foo_lib",
srcs: ["foo.c", "bar.cc", "foo1.l", "foo2.l", "bar1.ll", "bar2.ll"],
lex: { flags: ["--foo_flags"] },
include_build_directory: false,
bazel_module: { bp2build_available: true },
}`,
expectedBazelTargets: []string{
makeBazelTarget("genlex", "foo_lib_genlex_l", attrNameToString{
ExpectedBazelTargets: []string{
makeBazelTarget("genlex", "foo_lib_genlex_l", AttrNameToString{
"srcs": `[
"foo1.l",
"foo2.l",
]`,
"lexopts": `["--foo_flags"]`,
}),
makeBazelTarget("genlex", "foo_lib_genlex_ll", attrNameToString{
makeBazelTarget("genlex", "foo_lib_genlex_ll", AttrNameToString{
"srcs": `[
"bar1.ll",
"bar2.ll",
]`,
"lexopts": `["--foo_flags"]`,
}),
makeBazelTarget("cc_library_static", "foo_lib", attrNameToString{
makeBazelTarget("cc_library_static", "foo_lib", AttrNameToString{
"srcs": `[
"bar.cc",
":foo_lib_genlex_ll",

View File

@@ -21,38 +21,38 @@ import (
"testing"
)
func runFilegroupTestCase(t *testing.T, tc bp2buildTestCase) {
func runFilegroupTestCase(t *testing.T, tc Bp2buildTestCase) {
t.Helper()
(&tc).moduleTypeUnderTest = "filegroup"
(&tc).moduleTypeUnderTestFactory = android.FileGroupFactory
runBp2BuildTestCase(t, registerFilegroupModuleTypes, tc)
(&tc).ModuleTypeUnderTest = "filegroup"
(&tc).ModuleTypeUnderTestFactory = android.FileGroupFactory
RunBp2BuildTestCase(t, registerFilegroupModuleTypes, tc)
}
func registerFilegroupModuleTypes(ctx android.RegistrationContext) {}
func TestFilegroupSameNameAsFile_OneFile(t *testing.T) {
runFilegroupTestCase(t, bp2buildTestCase{
description: "filegroup - same name as file, with one file",
filesystem: map[string]string{},
blueprint: `
runFilegroupTestCase(t, Bp2buildTestCase{
Description: "filegroup - same name as file, with one file",
Filesystem: map[string]string{},
Blueprint: `
filegroup {
name: "foo",
srcs: ["foo"],
}
`,
expectedBazelTargets: []string{}})
ExpectedBazelTargets: []string{}})
}
func TestFilegroupSameNameAsFile_MultipleFiles(t *testing.T) {
runFilegroupTestCase(t, bp2buildTestCase{
description: "filegroup - same name as file, with multiple files",
filesystem: map[string]string{},
blueprint: `
runFilegroupTestCase(t, Bp2buildTestCase{
Description: "filegroup - same name as file, with multiple files",
Filesystem: map[string]string{},
Blueprint: `
filegroup {
name: "foo",
srcs: ["foo", "bar"],
}
`,
expectedErr: fmt.Errorf("filegroup 'foo' cannot contain a file with the same name"),
ExpectedErr: fmt.Errorf("filegroup 'foo' cannot contain a file with the same name"),
})
}

View File

@@ -27,11 +27,11 @@ func registerGenruleModuleTypes(ctx android.RegistrationContext) {
ctx.RegisterModuleType("genrule_defaults", func() android.Module { return genrule.DefaultsFactory() })
}
func runGenruleTestCase(t *testing.T, tc bp2buildTestCase) {
func runGenruleTestCase(t *testing.T, tc Bp2buildTestCase) {
t.Helper()
(&tc).moduleTypeUnderTest = "genrule"
(&tc).moduleTypeUnderTestFactory = genrule.GenRuleFactory
runBp2BuildTestCase(t, registerGenruleModuleTypes, tc)
(&tc).ModuleTypeUnderTest = "genrule"
(&tc).ModuleTypeUnderTestFactory = genrule.GenRuleFactory
RunBp2BuildTestCase(t, registerGenruleModuleTypes, tc)
}
func otherGenruleBp(genruleTarget string) map[string]string {
@@ -101,7 +101,7 @@ func TestGenruleCliVariableReplacement(t *testing.T) {
}`
for _, tc := range testCases {
moduleAttrs := attrNameToString{
moduleAttrs := AttrNameToString{
"cmd": fmt.Sprintf(`"$(location :foo.tool) --genDir=%s arg $(SRCS) $(OUTS)"`, tc.genDir),
"outs": `["foo.out"]`,
"srcs": `["foo.in"]`,
@@ -113,12 +113,12 @@ func TestGenruleCliVariableReplacement(t *testing.T) {
}
t.Run(tc.moduleType, func(t *testing.T) {
runBp2BuildTestCase(t, func(ctx android.RegistrationContext) {},
bp2buildTestCase{
moduleTypeUnderTest: tc.moduleType,
moduleTypeUnderTestFactory: tc.factory,
blueprint: fmt.Sprintf(bp, tc.moduleType, tc.moduleType),
expectedBazelTargets: expectedBazelTargets,
RunBp2BuildTestCase(t, func(ctx android.RegistrationContext) {},
Bp2buildTestCase{
ModuleTypeUnderTest: tc.moduleType,
ModuleTypeUnderTestFactory: tc.factory,
Blueprint: fmt.Sprintf(bp, tc.moduleType, tc.moduleType),
ExpectedBazelTargets: expectedBazelTargets,
})
})
}
@@ -169,13 +169,13 @@ func TestGenruleLocationsLabel(t *testing.T) {
}`
for _, tc := range testCases {
fooAttrs := attrNameToString{
fooAttrs := AttrNameToString{
"cmd": `"$(locations :foo.tools) -s $(OUTS) $(SRCS)"`,
"outs": `["foo.out"]`,
"srcs": `["foo.in"]`,
"tools": `[":foo.tools"]`,
}
fooToolsAttrs := attrNameToString{
fooToolsAttrs := AttrNameToString{
"cmd": `"cp $(SRCS) $(OUTS)"`,
"outs": `[
"foo_tool.out",
@@ -190,12 +190,12 @@ func TestGenruleLocationsLabel(t *testing.T) {
}
t.Run(tc.moduleType, func(t *testing.T) {
runBp2BuildTestCase(t, func(ctx android.RegistrationContext) {},
bp2buildTestCase{
moduleTypeUnderTest: tc.moduleType,
moduleTypeUnderTestFactory: tc.factory,
blueprint: fmt.Sprintf(bp, tc.moduleType, tc.moduleType),
expectedBazelTargets: expectedBazelTargets,
RunBp2BuildTestCase(t, func(ctx android.RegistrationContext) {},
Bp2buildTestCase{
ModuleTypeUnderTest: tc.moduleType,
ModuleTypeUnderTestFactory: tc.factory,
Blueprint: fmt.Sprintf(bp, tc.moduleType, tc.moduleType),
ExpectedBazelTargets: expectedBazelTargets,
})
})
}
@@ -238,7 +238,7 @@ func TestGenruleLocationsAbsoluteLabel(t *testing.T) {
}`
for _, tc := range testCases {
moduleAttrs := attrNameToString{
moduleAttrs := AttrNameToString{
"cmd": `"$(locations //other:foo.tool) -s $(OUTS) $(SRCS)"`,
"outs": `["foo.out"]`,
"srcs": `["foo.in"]`,
@@ -250,13 +250,13 @@ func TestGenruleLocationsAbsoluteLabel(t *testing.T) {
}
t.Run(tc.moduleType, func(t *testing.T) {
runBp2BuildTestCase(t, func(ctx android.RegistrationContext) {},
bp2buildTestCase{
moduleTypeUnderTest: tc.moduleType,
moduleTypeUnderTestFactory: tc.factory,
blueprint: fmt.Sprintf(bp, tc.moduleType),
expectedBazelTargets: expectedBazelTargets,
filesystem: otherGenruleBp(tc.moduleType),
RunBp2BuildTestCase(t, func(ctx android.RegistrationContext) {},
Bp2buildTestCase{
ModuleTypeUnderTest: tc.moduleType,
ModuleTypeUnderTestFactory: tc.factory,
Blueprint: fmt.Sprintf(bp, tc.moduleType),
ExpectedBazelTargets: expectedBazelTargets,
Filesystem: otherGenruleBp(tc.moduleType),
})
})
}
@@ -299,7 +299,7 @@ func TestGenruleSrcsLocationsAbsoluteLabel(t *testing.T) {
}`
for _, tc := range testCases {
moduleAttrs := attrNameToString{
moduleAttrs := AttrNameToString{
"cmd": `"$(locations //other:foo.tool) -s $(OUTS) $(location //other:other.tool)"`,
"outs": `["foo.out"]`,
"srcs": `["//other:other.tool"]`,
@@ -311,13 +311,13 @@ func TestGenruleSrcsLocationsAbsoluteLabel(t *testing.T) {
}
t.Run(tc.moduleType, func(t *testing.T) {
runBp2BuildTestCase(t, func(ctx android.RegistrationContext) {},
bp2buildTestCase{
moduleTypeUnderTest: tc.moduleType,
moduleTypeUnderTestFactory: tc.factory,
blueprint: fmt.Sprintf(bp, tc.moduleType),
expectedBazelTargets: expectedBazelTargets,
filesystem: otherGenruleBp(tc.moduleType),
RunBp2BuildTestCase(t, func(ctx android.RegistrationContext) {},
Bp2buildTestCase{
ModuleTypeUnderTest: tc.moduleType,
ModuleTypeUnderTestFactory: tc.factory,
Blueprint: fmt.Sprintf(bp, tc.moduleType),
ExpectedBazelTargets: expectedBazelTargets,
Filesystem: otherGenruleBp(tc.moduleType),
})
})
}
@@ -360,7 +360,7 @@ func TestGenruleLocationLabelShouldSubstituteFirstToolLabel(t *testing.T) {
}`
for _, tc := range testCases {
moduleAttrs := attrNameToString{
moduleAttrs := AttrNameToString{
"cmd": `"$(location //other:foo.tool) -s $(OUTS) $(SRCS)"`,
"outs": `["foo.out"]`,
"srcs": `["foo.in"]`,
@@ -375,13 +375,13 @@ func TestGenruleLocationLabelShouldSubstituteFirstToolLabel(t *testing.T) {
}
t.Run(tc.moduleType, func(t *testing.T) {
runBp2BuildTestCase(t, func(ctx android.RegistrationContext) {},
bp2buildTestCase{
moduleTypeUnderTest: tc.moduleType,
moduleTypeUnderTestFactory: tc.factory,
blueprint: fmt.Sprintf(bp, tc.moduleType),
expectedBazelTargets: expectedBazelTargets,
filesystem: otherGenruleBp(tc.moduleType),
RunBp2BuildTestCase(t, func(ctx android.RegistrationContext) {},
Bp2buildTestCase{
ModuleTypeUnderTest: tc.moduleType,
ModuleTypeUnderTestFactory: tc.factory,
Blueprint: fmt.Sprintf(bp, tc.moduleType),
ExpectedBazelTargets: expectedBazelTargets,
Filesystem: otherGenruleBp(tc.moduleType),
})
})
}
@@ -424,7 +424,7 @@ func TestGenruleLocationsLabelShouldSubstituteFirstToolLabel(t *testing.T) {
}`
for _, tc := range testCases {
moduleAttrs := attrNameToString{
moduleAttrs := AttrNameToString{
"cmd": `"$(locations //other:foo.tool) -s $(OUTS) $(SRCS)"`,
"outs": `["foo.out"]`,
"srcs": `["foo.in"]`,
@@ -439,13 +439,13 @@ func TestGenruleLocationsLabelShouldSubstituteFirstToolLabel(t *testing.T) {
}
t.Run(tc.moduleType, func(t *testing.T) {
runBp2BuildTestCase(t, func(ctx android.RegistrationContext) {},
bp2buildTestCase{
moduleTypeUnderTest: tc.moduleType,
moduleTypeUnderTestFactory: tc.factory,
blueprint: fmt.Sprintf(bp, tc.moduleType),
expectedBazelTargets: expectedBazelTargets,
filesystem: otherGenruleBp(tc.moduleType),
RunBp2BuildTestCase(t, func(ctx android.RegistrationContext) {},
Bp2buildTestCase{
ModuleTypeUnderTest: tc.moduleType,
ModuleTypeUnderTestFactory: tc.factory,
Blueprint: fmt.Sprintf(bp, tc.moduleType),
ExpectedBazelTargets: expectedBazelTargets,
Filesystem: otherGenruleBp(tc.moduleType),
})
})
}
@@ -487,7 +487,7 @@ func TestGenruleWithoutToolsOrToolFiles(t *testing.T) {
}`
for _, tc := range testCases {
moduleAttrs := attrNameToString{
moduleAttrs := AttrNameToString{
"cmd": `"cp $(SRCS) $(OUTS)"`,
"outs": `["foo.out"]`,
"srcs": `["foo.in"]`,
@@ -498,22 +498,22 @@ func TestGenruleWithoutToolsOrToolFiles(t *testing.T) {
}
t.Run(tc.moduleType, func(t *testing.T) {
runBp2BuildTestCase(t, func(ctx android.RegistrationContext) {},
bp2buildTestCase{
moduleTypeUnderTest: tc.moduleType,
moduleTypeUnderTestFactory: tc.factory,
blueprint: fmt.Sprintf(bp, tc.moduleType),
expectedBazelTargets: expectedBazelTargets,
RunBp2BuildTestCase(t, func(ctx android.RegistrationContext) {},
Bp2buildTestCase{
ModuleTypeUnderTest: tc.moduleType,
ModuleTypeUnderTestFactory: tc.factory,
Blueprint: fmt.Sprintf(bp, tc.moduleType),
ExpectedBazelTargets: expectedBazelTargets,
})
})
}
}
func TestGenruleBp2BuildInlinesDefaults(t *testing.T) {
testCases := []bp2buildTestCase{
testCases := []Bp2buildTestCase{
{
description: "genrule applies properties from a genrule_defaults dependency if not specified",
blueprint: `genrule_defaults {
Description: "genrule applies properties from a genrule_defaults dependency if not specified",
Blueprint: `genrule_defaults {
name: "gen_defaults",
cmd: "do-something $(in) $(out)",
}
@@ -525,8 +525,8 @@ genrule {
bazel_module: { bp2build_available: true },
}
`,
expectedBazelTargets: []string{
makeBazelTargetNoRestrictions("genrule", "gen", attrNameToString{
ExpectedBazelTargets: []string{
MakeBazelTargetNoRestrictions("genrule", "gen", AttrNameToString{
"cmd": `"do-something $(SRCS) $(OUTS)"`,
"outs": `["out"]`,
"srcs": `["in1"]`,
@@ -534,8 +534,8 @@ genrule {
},
},
{
description: "genrule does merges properties from a genrule_defaults dependency, latest-first",
blueprint: `genrule_defaults {
Description: "genrule does merges properties from a genrule_defaults dependency, latest-first",
Blueprint: `genrule_defaults {
name: "gen_defaults",
out: ["out-from-defaults"],
srcs: ["in-from-defaults"],
@@ -550,8 +550,8 @@ genrule {
bazel_module: { bp2build_available: true },
}
`,
expectedBazelTargets: []string{
makeBazelTargetNoRestrictions("genrule", "gen", attrNameToString{
ExpectedBazelTargets: []string{
MakeBazelTargetNoRestrictions("genrule", "gen", AttrNameToString{
"cmd": `"do-something $(SRCS) $(OUTS)"`,
"outs": `[
"out-from-defaults",
@@ -565,8 +565,8 @@ genrule {
},
},
{
description: "genrule applies properties from list of genrule_defaults",
blueprint: `genrule_defaults {
Description: "genrule applies properties from list of genrule_defaults",
Blueprint: `genrule_defaults {
name: "gen_defaults1",
cmd: "cp $(in) $(out)",
}
@@ -583,8 +583,8 @@ genrule {
bazel_module: { bp2build_available: true },
}
`,
expectedBazelTargets: []string{
makeBazelTargetNoRestrictions("genrule", "gen", attrNameToString{
ExpectedBazelTargets: []string{
MakeBazelTargetNoRestrictions("genrule", "gen", AttrNameToString{
"cmd": `"cp $(SRCS) $(OUTS)"`,
"outs": `["out"]`,
"srcs": `["in1"]`,
@@ -592,8 +592,8 @@ genrule {
},
},
{
description: "genrule applies properties from genrule_defaults transitively",
blueprint: `genrule_defaults {
Description: "genrule applies properties from genrule_defaults transitively",
Blueprint: `genrule_defaults {
name: "gen_defaults1",
defaults: ["gen_defaults2"],
cmd: "cmd1 $(in) $(out)", // overrides gen_defaults2's cmd property value.
@@ -620,8 +620,8 @@ genrule {
bazel_module: { bp2build_available: true },
}
`,
expectedBazelTargets: []string{
makeBazelTargetNoRestrictions("genrule", "gen", attrNameToString{
ExpectedBazelTargets: []string{
MakeBazelTargetNoRestrictions("genrule", "gen", AttrNameToString{
"cmd": `"cmd1 $(SRCS) $(OUTS)"`,
"outs": `[
"out-from-3",
@@ -638,7 +638,7 @@ genrule {
}
for _, testCase := range testCases {
t.Run(testCase.description, func(t *testing.T) {
t.Run(testCase.Description, func(t *testing.T) {
runGenruleTestCase(t, testCase)
})
}

View File

@@ -24,7 +24,7 @@ func TestGensrcs(t *testing.T) {
testcases := []struct {
name string
bp string
expectedBazelAttrs attrNameToString
expectedBazelAttrs AttrNameToString
}{
{
name: "gensrcs with common usage of properties",
@@ -37,7 +37,7 @@ func TestGensrcs(t *testing.T) {
output_extension: "out",
bazel_module: { bp2build_available: true },
}`,
expectedBazelAttrs: attrNameToString{
expectedBazelAttrs: AttrNameToString{
"srcs": `[
"test/input.txt",
":external_files__BP2BUILD__MISSING__DEP",
@@ -56,7 +56,7 @@ func TestGensrcs(t *testing.T) {
cmd: "cat $(in) > $(out)",
bazel_module: { bp2build_available: true },
}`,
expectedBazelAttrs: attrNameToString{
expectedBazelAttrs: AttrNameToString{
"srcs": `["input.txt"]`,
"cmd": `"cat $(SRC) > $(OUT)"`,
},
@@ -65,15 +65,15 @@ func TestGensrcs(t *testing.T) {
for _, test := range testcases {
expectedBazelTargets := []string{
makeBazelTargetNoRestrictions("gensrcs", "foo", test.expectedBazelAttrs),
MakeBazelTargetNoRestrictions("gensrcs", "foo", test.expectedBazelAttrs),
}
t.Run(test.name, func(t *testing.T) {
runBp2BuildTestCase(t, func(ctx android.RegistrationContext) {},
bp2buildTestCase{
moduleTypeUnderTest: "gensrcs",
moduleTypeUnderTestFactory: genrule.GenSrcsFactory,
blueprint: test.bp,
expectedBazelTargets: expectedBazelTargets,
RunBp2BuildTestCase(t, func(ctx android.RegistrationContext) {},
Bp2buildTestCase{
ModuleTypeUnderTest: "gensrcs",
ModuleTypeUnderTestFactory: genrule.GenSrcsFactory,
Blueprint: test.bp,
ExpectedBazelTargets: expectedBazelTargets,
})
})
}

View File

@@ -22,11 +22,11 @@ import (
"android/soong/java"
)
func runJavaBinaryHostTestCase(t *testing.T, tc bp2buildTestCase) {
func runJavaBinaryHostTestCase(t *testing.T, tc Bp2buildTestCase) {
t.Helper()
(&tc).moduleTypeUnderTest = "java_binary_host"
(&tc).moduleTypeUnderTestFactory = java.BinaryHostFactory
runBp2BuildTestCase(t, func(ctx android.RegistrationContext) {
(&tc).ModuleTypeUnderTest = "java_binary_host"
(&tc).ModuleTypeUnderTestFactory = java.BinaryHostFactory
RunBp2BuildTestCase(t, func(ctx android.RegistrationContext) {
ctx.RegisterModuleType("cc_library_host_shared", cc.LibraryHostSharedFactory)
ctx.RegisterModuleType("java_library", java.LibraryFactory)
}, tc)
@@ -41,10 +41,10 @@ var fs = map[string]string{
}
func TestJavaBinaryHost(t *testing.T) {
runJavaBinaryHostTestCase(t, bp2buildTestCase{
description: "java_binary_host with srcs, exclude_srcs, jni_libs, javacflags, and manifest.",
filesystem: fs,
blueprint: `java_binary_host {
runJavaBinaryHostTestCase(t, Bp2buildTestCase{
Description: "java_binary_host with srcs, exclude_srcs, jni_libs, javacflags, and manifest.",
Filesystem: fs,
Blueprint: `java_binary_host {
name: "java-binary-host-1",
srcs: ["a.java", "b.java"],
exclude_srcs: ["b.java"],
@@ -54,8 +54,8 @@ func TestJavaBinaryHost(t *testing.T) {
bazel_module: { bp2build_available: true },
java_version: "8",
}`,
expectedBazelTargets: []string{
makeBazelTarget("java_binary", "java-binary-host-1", attrNameToString{
ExpectedBazelTargets: []string{
makeBazelTarget("java_binary", "java-binary-host-1", AttrNameToString{
"srcs": `["a.java"]`,
"main_class": `"com.android.test.MainClass"`,
"deps": `["//other:jni-lib-1"]`,
@@ -74,10 +74,10 @@ 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: fs,
blueprint: `java_binary_host {
runJavaBinaryHostTestCase(t, Bp2buildTestCase{
Description: "java_binary_host with srcs, exclude_srcs, jni_libs, javacflags, and manifest.",
Filesystem: fs,
Blueprint: `java_binary_host {
name: "java-binary-host-1",
static_libs: ["java-dep-1"],
manifest: "test.mf",
@@ -90,8 +90,8 @@ java_library {
bazel_module: { bp2build_available: false },
}
`,
expectedBazelTargets: []string{
makeBazelTarget("java_binary", "java-binary-host-1", attrNameToString{
ExpectedBazelTargets: []string{
makeBazelTarget("java_binary", "java-binary-host-1", AttrNameToString{
"main_class": `"com.android.test.MainClass"`,
"runtime_deps": `[":java-dep-1"]`,
"target_compatible_with": `select({

View File

@@ -21,45 +21,45 @@ import (
"testing"
)
func runJavaImportTestCase(t *testing.T, tc bp2buildTestCase) {
func runJavaImportTestCase(t *testing.T, tc Bp2buildTestCase) {
t.Helper()
runBp2BuildTestCase(t, registerJavaImportModuleTypes, tc)
RunBp2BuildTestCase(t, registerJavaImportModuleTypes, tc)
}
func registerJavaImportModuleTypes(ctx android.RegistrationContext) {
}
func TestJavaImportMinimal(t *testing.T) {
runJavaImportTestCase(t, bp2buildTestCase{
description: "Java import - simple example",
moduleTypeUnderTest: "java_import",
moduleTypeUnderTestFactory: java.ImportFactory,
filesystem: map[string]string{
runJavaImportTestCase(t, Bp2buildTestCase{
Description: "Java import - simple example",
ModuleTypeUnderTest: "java_import",
ModuleTypeUnderTestFactory: java.ImportFactory,
Filesystem: map[string]string{
"import.jar": "",
},
blueprint: `
Blueprint: `
java_import {
name: "example_import",
jars: ["import.jar"],
bazel_module: { bp2build_available: true },
}
`,
expectedBazelTargets: []string{
makeBazelTarget("java_import", "example_import", attrNameToString{
ExpectedBazelTargets: []string{
makeBazelTarget("java_import", "example_import", AttrNameToString{
"jars": `["import.jar"]`,
}),
}})
}
func TestJavaImportArchVariant(t *testing.T) {
runJavaImportTestCase(t, bp2buildTestCase{
description: "Java import - simple example",
moduleTypeUnderTest: "java_import",
moduleTypeUnderTestFactory: java.ImportFactory,
filesystem: map[string]string{
runJavaImportTestCase(t, Bp2buildTestCase{
Description: "Java import - simple example",
ModuleTypeUnderTest: "java_import",
ModuleTypeUnderTestFactory: java.ImportFactory,
Filesystem: map[string]string{
"import.jar": "",
},
blueprint: `
Blueprint: `
java_import {
name: "example_import",
target: {
@@ -73,8 +73,8 @@ java_import {
bazel_module: { bp2build_available: true },
}
`,
expectedBazelTargets: []string{
makeBazelTarget("java_import", "example_import", attrNameToString{
ExpectedBazelTargets: []string{
makeBazelTarget("java_import", "example_import", AttrNameToString{
"jars": `select({
"//build/bazel/platforms/os:android": ["android.jar"],
"//build/bazel/platforms/os:linux": ["linux.jar"],

View File

@@ -22,22 +22,22 @@ import (
"android/soong/java"
)
func runJavaLibraryTestCaseWithRegistrationCtxFunc(t *testing.T, tc bp2buildTestCase, registrationCtxFunc func(ctx android.RegistrationContext)) {
func runJavaLibraryTestCaseWithRegistrationCtxFunc(t *testing.T, tc Bp2buildTestCase, registrationCtxFunc func(ctx android.RegistrationContext)) {
t.Helper()
(&tc).moduleTypeUnderTest = "java_library"
(&tc).moduleTypeUnderTestFactory = java.LibraryFactory
runBp2BuildTestCase(t, registrationCtxFunc, tc)
(&tc).ModuleTypeUnderTest = "java_library"
(&tc).ModuleTypeUnderTestFactory = java.LibraryFactory
RunBp2BuildTestCase(t, registrationCtxFunc, tc)
}
func runJavaLibraryTestCase(t *testing.T, tc bp2buildTestCase) {
func runJavaLibraryTestCase(t *testing.T, tc Bp2buildTestCase) {
t.Helper()
runJavaLibraryTestCaseWithRegistrationCtxFunc(t, tc, func(ctx android.RegistrationContext) {})
}
func TestJavaLibrary(t *testing.T) {
runJavaLibraryTestCase(t, bp2buildTestCase{
description: "java_library with srcs, exclude_srcs and libs",
blueprint: `java_library {
runJavaLibraryTestCase(t, Bp2buildTestCase{
Description: "java_library with srcs, exclude_srcs and libs",
Blueprint: `java_library {
name: "java-lib-1",
srcs: ["a.java", "b.java"],
exclude_srcs: ["b.java"],
@@ -50,12 +50,12 @@ java_library {
srcs: ["b.java"],
bazel_module: { bp2build_available: true },
}`,
expectedBazelTargets: []string{
makeBazelTarget("java_library", "java-lib-1", attrNameToString{
ExpectedBazelTargets: []string{
makeBazelTarget("java_library", "java-lib-1", AttrNameToString{
"srcs": `["a.java"]`,
"deps": `[":java-lib-2"]`,
}),
makeBazelTarget("java_library", "java-lib-2", attrNameToString{
makeBazelTarget("java_library", "java-lib-2", AttrNameToString{
"srcs": `["b.java"]`,
}),
},
@@ -63,8 +63,8 @@ java_library {
}
func TestJavaLibraryConvertsStaticLibsToDepsAndExports(t *testing.T) {
runJavaLibraryTestCase(t, bp2buildTestCase{
blueprint: `java_library {
runJavaLibraryTestCase(t, Bp2buildTestCase{
Blueprint: `java_library {
name: "java-lib-1",
srcs: ["a.java"],
libs: ["java-lib-2"],
@@ -83,8 +83,8 @@ java_library {
srcs: ["c.java"],
bazel_module: { bp2build_available: false },
}`,
expectedBazelTargets: []string{
makeBazelTarget("java_library", "java-lib-1", attrNameToString{
ExpectedBazelTargets: []string{
makeBazelTarget("java_library", "java-lib-1", AttrNameToString{
"srcs": `["a.java"]`,
"deps": `[
":java-lib-2",
@@ -97,8 +97,8 @@ java_library {
}
func TestJavaLibraryConvertsStaticLibsToExportsIfNoSrcs(t *testing.T) {
runJavaLibraryTestCase(t, bp2buildTestCase{
blueprint: `java_library {
runJavaLibraryTestCase(t, Bp2buildTestCase{
Blueprint: `java_library {
name: "java-lib-1",
static_libs: ["java-lib-2"],
bazel_module: { bp2build_available: true },
@@ -109,8 +109,8 @@ java_library {
srcs: ["a.java"],
bazel_module: { bp2build_available: false },
}`,
expectedBazelTargets: []string{
makeBazelTarget("java_library", "java-lib-1", attrNameToString{
ExpectedBazelTargets: []string{
makeBazelTarget("java_library", "java-lib-1", AttrNameToString{
"exports": `[":java-lib-2"]`,
}),
},
@@ -118,9 +118,9 @@ java_library {
}
func TestJavaLibraryFailsToConvertLibsWithNoSrcs(t *testing.T) {
runJavaLibraryTestCase(t, bp2buildTestCase{
expectedErr: fmt.Errorf("Module has direct dependencies but no sources. Bazel will not allow this."),
blueprint: `java_library {
runJavaLibraryTestCase(t, Bp2buildTestCase{
ExpectedErr: fmt.Errorf("Module has direct dependencies but no sources. Bazel will not allow this."),
Blueprint: `java_library {
name: "java-lib-1",
libs: ["java-lib-2"],
bazel_module: { bp2build_available: true },
@@ -131,13 +131,13 @@ java_library {
srcs: ["a.java"],
bazel_module: { bp2build_available: false },
}`,
expectedBazelTargets: []string{},
ExpectedBazelTargets: []string{},
})
}
func TestJavaLibraryPlugins(t *testing.T) {
runJavaLibraryTestCaseWithRegistrationCtxFunc(t, bp2buildTestCase{
blueprint: `java_library {
runJavaLibraryTestCaseWithRegistrationCtxFunc(t, Bp2buildTestCase{
Blueprint: `java_library {
name: "java-lib-1",
plugins: ["java-plugin-1"],
bazel_module: { bp2build_available: true },
@@ -148,8 +148,8 @@ java_plugin {
srcs: ["a.java"],
bazel_module: { bp2build_available: false },
}`,
expectedBazelTargets: []string{
makeBazelTarget("java_library", "java-lib-1", attrNameToString{
ExpectedBazelTargets: []string{
makeBazelTarget("java_library", "java-lib-1", AttrNameToString{
"plugins": `[":java-plugin-1"]`,
}),
},
@@ -159,14 +159,14 @@ java_plugin {
}
func TestJavaLibraryJavaVersion(t *testing.T) {
runJavaLibraryTestCase(t, bp2buildTestCase{
blueprint: `java_library {
runJavaLibraryTestCase(t, Bp2buildTestCase{
Blueprint: `java_library {
name: "java-lib-1",
srcs: ["a.java"],
java_version: "11",
}`,
expectedBazelTargets: []string{
makeBazelTarget("java_library", "java-lib-1", attrNameToString{
ExpectedBazelTargets: []string{
makeBazelTarget("java_library", "java-lib-1", AttrNameToString{
"srcs": `["a.java"]`,
"javacopts": `["-source 11 -target 11"]`,
}),
@@ -175,8 +175,8 @@ func TestJavaLibraryJavaVersion(t *testing.T) {
}
func TestJavaLibraryErrorproneJavacflagsEnabledManually(t *testing.T) {
runJavaLibraryTestCase(t, bp2buildTestCase{
blueprint: `java_library {
runJavaLibraryTestCase(t, Bp2buildTestCase{
Blueprint: `java_library {
name: "java-lib-1",
srcs: ["a.java"],
javacflags: ["-Xsuper-fast"],
@@ -185,8 +185,8 @@ func TestJavaLibraryErrorproneJavacflagsEnabledManually(t *testing.T) {
javacflags: ["-Xep:SpeedLimit:OFF"],
},
}`,
expectedBazelTargets: []string{
makeBazelTarget("java_library", "java-lib-1", attrNameToString{
ExpectedBazelTargets: []string{
makeBazelTarget("java_library", "java-lib-1", AttrNameToString{
"javacopts": `[
"-Xsuper-fast",
"-Xep:SpeedLimit:OFF",
@@ -198,8 +198,8 @@ func TestJavaLibraryErrorproneJavacflagsEnabledManually(t *testing.T) {
}
func TestJavaLibraryErrorproneJavacflagsErrorproneDisabledByDefault(t *testing.T) {
runJavaLibraryTestCase(t, bp2buildTestCase{
blueprint: `java_library {
runJavaLibraryTestCase(t, Bp2buildTestCase{
Blueprint: `java_library {
name: "java-lib-1",
srcs: ["a.java"],
javacflags: ["-Xsuper-fast"],
@@ -207,8 +207,8 @@ func TestJavaLibraryErrorproneJavacflagsErrorproneDisabledByDefault(t *testing.T
javacflags: ["-Xep:SpeedLimit:OFF"],
},
}`,
expectedBazelTargets: []string{
makeBazelTarget("java_library", "java-lib-1", attrNameToString{
ExpectedBazelTargets: []string{
makeBazelTarget("java_library", "java-lib-1", AttrNameToString{
"javacopts": `["-Xsuper-fast"]`,
"srcs": `["a.java"]`,
}),
@@ -217,8 +217,8 @@ func TestJavaLibraryErrorproneJavacflagsErrorproneDisabledByDefault(t *testing.T
}
func TestJavaLibraryErrorproneJavacflagsErrorproneDisabledManually(t *testing.T) {
runJavaLibraryTestCase(t, bp2buildTestCase{
blueprint: `java_library {
runJavaLibraryTestCase(t, Bp2buildTestCase{
Blueprint: `java_library {
name: "java-lib-1",
srcs: ["a.java"],
javacflags: ["-Xsuper-fast"],
@@ -227,8 +227,8 @@ func TestJavaLibraryErrorproneJavacflagsErrorproneDisabledManually(t *testing.T)
javacflags: ["-Xep:SpeedLimit:OFF"],
},
}`,
expectedBazelTargets: []string{
makeBazelTarget("java_library", "java-lib-1", attrNameToString{
ExpectedBazelTargets: []string{
makeBazelTarget("java_library", "java-lib-1", AttrNameToString{
"javacopts": `["-Xsuper-fast"]`,
"srcs": `["a.java"]`,
}),
@@ -237,11 +237,11 @@ func TestJavaLibraryErrorproneJavacflagsErrorproneDisabledManually(t *testing.T)
}
func TestJavaLibraryLogTags(t *testing.T) {
runJavaLibraryTestCase(t, bp2buildTestCase{
description: "Java library - logtags creates separate dependency",
moduleTypeUnderTest: "java_library",
moduleTypeUnderTestFactory: java.LibraryFactory,
blueprint: `java_library {
runJavaLibraryTestCase(t, Bp2buildTestCase{
Description: "Java library - logtags creates separate dependency",
ModuleTypeUnderTest: "java_library",
ModuleTypeUnderTestFactory: java.LibraryFactory,
Blueprint: `java_library {
name: "example_lib",
srcs: [
"a.java",
@@ -251,14 +251,14 @@ func TestJavaLibraryLogTags(t *testing.T) {
],
bazel_module: { bp2build_available: true },
}`,
expectedBazelTargets: []string{
makeBazelTarget("event_log_tags", "example_lib_logtags", attrNameToString{
ExpectedBazelTargets: []string{
makeBazelTarget("event_log_tags", "example_lib_logtags", AttrNameToString{
"srcs": `[
"a.logtag",
"b.logtag",
]`,
}),
makeBazelTarget("java_library", "example_lib", attrNameToString{
makeBazelTarget("java_library", "example_lib", AttrNameToString{
"srcs": `[
"a.java",
"b.java",
@@ -269,18 +269,18 @@ func TestJavaLibraryLogTags(t *testing.T) {
}
func TestJavaLibraryResources(t *testing.T) {
runJavaLibraryTestCase(t, bp2buildTestCase{
filesystem: map[string]string{
runJavaLibraryTestCase(t, Bp2buildTestCase{
Filesystem: map[string]string{
"res/a.res": "",
"res/b.res": "",
"res/dir1/b.res": "",
},
blueprint: `java_library {
Blueprint: `java_library {
name: "java-lib-1",
java_resources: ["res/a.res", "res/b.res"],
}`,
expectedBazelTargets: []string{
makeBazelTarget("java_library", "java-lib-1", attrNameToString{
ExpectedBazelTargets: []string{
makeBazelTarget("java_library", "java-lib-1", AttrNameToString{
"resources": `[
"res/a.res",
"res/b.res",
@@ -291,18 +291,18 @@ func TestJavaLibraryResources(t *testing.T) {
}
func TestJavaLibraryResourceDirs(t *testing.T) {
runJavaLibraryTestCase(t, bp2buildTestCase{
filesystem: map[string]string{
runJavaLibraryTestCase(t, Bp2buildTestCase{
Filesystem: map[string]string{
"res/a.res": "",
"res/b.res": "",
"res/dir1/b.res": "",
},
blueprint: `java_library {
Blueprint: `java_library {
name: "java-lib-1",
java_resource_dirs: ["res"],
}`,
expectedBazelTargets: []string{
makeBazelTarget("java_library", "java-lib-1", attrNameToString{
ExpectedBazelTargets: []string{
makeBazelTarget("java_library", "java-lib-1", AttrNameToString{
"resource_strip_prefix": `"res"`,
"resources": `[
"res/a.res",
@@ -315,18 +315,18 @@ func TestJavaLibraryResourceDirs(t *testing.T) {
}
func TestJavaLibraryResourcesExcludeDir(t *testing.T) {
runJavaLibraryTestCase(t, bp2buildTestCase{
filesystem: map[string]string{
runJavaLibraryTestCase(t, Bp2buildTestCase{
Filesystem: map[string]string{
"res/a.res": "",
"res/exclude/b.res": "",
},
blueprint: `java_library {
Blueprint: `java_library {
name: "java-lib-1",
java_resource_dirs: ["res"],
exclude_java_resource_dirs: ["res/exclude"],
}`,
expectedBazelTargets: []string{
makeBazelTarget("java_library", "java-lib-1", attrNameToString{
ExpectedBazelTargets: []string{
makeBazelTarget("java_library", "java-lib-1", AttrNameToString{
"resource_strip_prefix": `"res"`,
"resources": `["res/a.res"]`,
}),
@@ -335,19 +335,19 @@ func TestJavaLibraryResourcesExcludeDir(t *testing.T) {
}
func TestJavaLibraryResourcesExcludeFile(t *testing.T) {
runJavaLibraryTestCase(t, bp2buildTestCase{
filesystem: map[string]string{
runJavaLibraryTestCase(t, Bp2buildTestCase{
Filesystem: map[string]string{
"res/a.res": "",
"res/dir1/b.res": "",
"res/dir1/exclude.res": "",
},
blueprint: `java_library {
Blueprint: `java_library {
name: "java-lib-1",
java_resource_dirs: ["res"],
exclude_java_resources: ["res/dir1/exclude.res"],
}`,
expectedBazelTargets: []string{
makeBazelTarget("java_library", "java-lib-1", attrNameToString{
ExpectedBazelTargets: []string{
makeBazelTarget("java_library", "java-lib-1", AttrNameToString{
"resource_strip_prefix": `"res"`,
"resources": `[
"res/a.res",
@@ -359,16 +359,16 @@ func TestJavaLibraryResourcesExcludeFile(t *testing.T) {
}
func TestJavaLibraryResourcesFailsWithMultipleDirs(t *testing.T) {
runJavaLibraryTestCase(t, bp2buildTestCase{
filesystem: map[string]string{
runJavaLibraryTestCase(t, Bp2buildTestCase{
Filesystem: map[string]string{
"res/a.res": "",
"res1/a.res": "",
},
blueprint: `java_library {
Blueprint: `java_library {
name: "java-lib-1",
java_resource_dirs: ["res", "res1"],
}`,
expectedErr: fmt.Errorf("bp2build does not support more than one directory in java_resource_dirs (b/226423379)"),
expectedBazelTargets: []string{},
ExpectedErr: fmt.Errorf("bp2build does not support more than one directory in java_resource_dirs (b/226423379)"),
ExpectedBazelTargets: []string{},
})
}

View File

@@ -21,17 +21,17 @@ import (
"android/soong/java"
)
func runJavaLibraryHostTestCase(t *testing.T, tc bp2buildTestCase) {
func runJavaLibraryHostTestCase(t *testing.T, tc Bp2buildTestCase) {
t.Helper()
(&tc).moduleTypeUnderTest = "java_library_host"
(&tc).moduleTypeUnderTestFactory = java.LibraryHostFactory
runBp2BuildTestCase(t, func(ctx android.RegistrationContext) {}, tc)
(&tc).ModuleTypeUnderTest = "java_library_host"
(&tc).ModuleTypeUnderTestFactory = java.LibraryHostFactory
RunBp2BuildTestCase(t, func(ctx android.RegistrationContext) {}, tc)
}
func TestJavaLibraryHost(t *testing.T) {
runJavaLibraryHostTestCase(t, bp2buildTestCase{
description: "java_library_host with srcs, exclude_srcs and libs",
blueprint: `java_library_host {
runJavaLibraryHostTestCase(t, Bp2buildTestCase{
Description: "java_library_host with srcs, exclude_srcs and libs",
Blueprint: `java_library_host {
name: "java-lib-host-1",
srcs: ["a.java", "b.java"],
exclude_srcs: ["b.java"],
@@ -45,8 +45,8 @@ java_library_host {
bazel_module: { bp2build_available: true },
java_version: "9",
}`,
expectedBazelTargets: []string{
makeBazelTarget("java_library", "java-lib-host-1", attrNameToString{
ExpectedBazelTargets: []string{
makeBazelTarget("java_library", "java-lib-host-1", AttrNameToString{
"srcs": `["a.java"]`,
"deps": `[":java-lib-host-2"]`,
"target_compatible_with": `select({
@@ -54,7 +54,7 @@ java_library_host {
"//conditions:default": [],
})`,
}),
makeBazelTarget("java_library", "java-lib-host-2", attrNameToString{
makeBazelTarget("java_library", "java-lib-host-2", AttrNameToString{
"javacopts": `["-source 1.9 -target 1.9"]`,
"srcs": `["c.java"]`,
"target_compatible_with": `select({

View File

@@ -21,19 +21,19 @@ import (
"android/soong/java"
)
func runJavaPluginTestCase(t *testing.T, tc bp2buildTestCase) {
func runJavaPluginTestCase(t *testing.T, tc Bp2buildTestCase) {
t.Helper()
(&tc).moduleTypeUnderTest = "java_plugin"
(&tc).moduleTypeUnderTestFactory = java.PluginFactory
runBp2BuildTestCase(t, func(ctx android.RegistrationContext) {
(&tc).ModuleTypeUnderTest = "java_plugin"
(&tc).ModuleTypeUnderTestFactory = java.PluginFactory
RunBp2BuildTestCase(t, func(ctx android.RegistrationContext) {
ctx.RegisterModuleType("java_library", java.LibraryFactory)
}, tc)
}
func TestJavaPlugin(t *testing.T) {
runJavaPluginTestCase(t, bp2buildTestCase{
description: "java_plugin with srcs, libs, static_libs",
blueprint: `java_plugin {
runJavaPluginTestCase(t, Bp2buildTestCase{
Description: "java_plugin with srcs, libs, static_libs",
Blueprint: `java_plugin {
name: "java-plug-1",
srcs: ["a.java", "b.java"],
libs: ["java-lib-1"],
@@ -53,8 +53,8 @@ java_library {
srcs: ["c.java"],
bazel_module: { bp2build_available: false },
}`,
expectedBazelTargets: []string{
makeBazelTarget("java_plugin", "java-plug-1", attrNameToString{
ExpectedBazelTargets: []string{
makeBazelTarget("java_plugin", "java-plug-1", AttrNameToString{
"target_compatible_with": `select({
"//build/bazel/platforms/os:android": ["@platforms//:incompatible"],
"//conditions:default": [],
@@ -74,9 +74,9 @@ java_library {
}
func TestJavaPluginNoSrcs(t *testing.T) {
runJavaPluginTestCase(t, bp2buildTestCase{
description: "java_plugin without srcs converts (static) libs to deps",
blueprint: `java_plugin {
runJavaPluginTestCase(t, Bp2buildTestCase{
Description: "java_plugin without srcs converts (static) libs to deps",
Blueprint: `java_plugin {
name: "java-plug-1",
libs: ["java-lib-1"],
static_libs: ["java-lib-2"],
@@ -94,8 +94,8 @@ java_library {
srcs: ["c.java"],
bazel_module: { bp2build_available: false },
}`,
expectedBazelTargets: []string{
makeBazelTarget("java_plugin", "java-plug-1", attrNameToString{
ExpectedBazelTargets: []string{
makeBazelTarget("java_plugin", "java-plug-1", AttrNameToString{
"target_compatible_with": `select({
"//build/bazel/platforms/os:android": ["@platforms//:incompatible"],
"//conditions:default": [],

View File

@@ -22,11 +22,11 @@ import (
"android/soong/java"
)
func runJavaProtoTestCase(t *testing.T, tc bp2buildTestCase) {
func runJavaProtoTestCase(t *testing.T, tc Bp2buildTestCase) {
t.Helper()
(&tc).moduleTypeUnderTest = "java_library_static"
(&tc).moduleTypeUnderTestFactory = java.LibraryFactory
runBp2BuildTestCase(t, func(ctx android.RegistrationContext) {}, tc)
(&tc).ModuleTypeUnderTest = "java_library_static"
(&tc).ModuleTypeUnderTestFactory = java.LibraryFactory
RunBp2BuildTestCase(t, func(ctx android.RegistrationContext) {}, tc)
}
func TestJavaProto(t *testing.T) {
@@ -70,25 +70,25 @@ func TestJavaProto(t *testing.T) {
srcs: ["a.proto"],
}`
protoLibrary := makeBazelTarget("proto_library", "java-protos_proto", attrNameToString{
protoLibrary := makeBazelTarget("proto_library", "java-protos_proto", AttrNameToString{
"srcs": `["a.proto"]`,
})
for _, tc := range testCases {
javaLibraryName := fmt.Sprintf("java-protos_%s", tc.javaLibraryNameExtension)
runJavaProtoTestCase(t, bp2buildTestCase{
description: fmt.Sprintf("java_proto %s", tc.protoType),
blueprint: fmt.Sprintf(bp, tc.protoType),
expectedBazelTargets: []string{
runJavaProtoTestCase(t, Bp2buildTestCase{
Description: fmt.Sprintf("java_proto %s", tc.protoType),
Blueprint: fmt.Sprintf(bp, tc.protoType),
ExpectedBazelTargets: []string{
protoLibrary,
makeBazelTarget(
tc.javaLibraryType,
javaLibraryName,
attrNameToString{
AttrNameToString{
"deps": `[":java-protos_proto"]`,
}),
makeBazelTarget("java_library", "java-protos", attrNameToString{
makeBazelTarget("java_library", "java-protos", AttrNameToString{
"exports": fmt.Sprintf(`[":%s"]`, javaLibraryName),
}),
},
@@ -97,25 +97,25 @@ func TestJavaProto(t *testing.T) {
}
func TestJavaProtoDefault(t *testing.T) {
runJavaProtoTestCase(t, bp2buildTestCase{
description: "java_library proto default",
blueprint: `java_library_static {
runJavaProtoTestCase(t, Bp2buildTestCase{
Description: "java_library proto default",
Blueprint: `java_library_static {
name: "java-protos",
srcs: ["a.proto"],
java_version: "7",
}
`,
expectedBazelTargets: []string{
makeBazelTarget("proto_library", "java-protos_proto", attrNameToString{
ExpectedBazelTargets: []string{
makeBazelTarget("proto_library", "java-protos_proto", AttrNameToString{
"srcs": `["a.proto"]`,
}),
makeBazelTarget(
"java_lite_proto_library",
"java-protos_java_proto_lite",
attrNameToString{
AttrNameToString{
"deps": `[":java-protos_proto"]`,
}),
makeBazelTarget("java_library", "java-protos", attrNameToString{
makeBazelTarget("java_library", "java-protos", AttrNameToString{
"exports": `[":java-protos_java_proto_lite"]`,
"javacopts": `["-source 1.7 -target 1.7"]`,
}),

View File

@@ -21,23 +21,23 @@ import (
"android/soong/linkerconfig"
)
func runLinkerConfigTestCase(t *testing.T, tc bp2buildTestCase) {
func runLinkerConfigTestCase(t *testing.T, tc Bp2buildTestCase) {
t.Helper()
(&tc).moduleTypeUnderTest = "linker_config"
(&tc).moduleTypeUnderTestFactory = linkerconfig.LinkerConfigFactory
(&tc).ModuleTypeUnderTest = "linker_config"
(&tc).ModuleTypeUnderTestFactory = linkerconfig.LinkerConfigFactory
runBp2BuildTestCaseSimple(t, tc)
}
func TestLinkerConfigConvertsSrc(t *testing.T) {
runLinkerConfigTestCase(t,
bp2buildTestCase{
blueprint: `
Bp2buildTestCase{
Blueprint: `
linker_config {
name: "foo",
src: "a.json",
}
`,
expectedBazelTargets: []string{makeBazelTarget("linker_config", "foo", attrNameToString{
ExpectedBazelTargets: []string{makeBazelTarget("linker_config", "foo", AttrNameToString{
"src": `"a.json"`,
})},
})
@@ -46,14 +46,14 @@ linker_config {
func TestLinkerConfigNoSrc(t *testing.T) {
runLinkerConfigTestCase(t,
bp2buildTestCase{
blueprint: `
Bp2buildTestCase{
Blueprint: `
linker_config {
name: "foo",
}
`,
expectedBazelTargets: []string{},
expectedErr: fmt.Errorf("Android.bp:2:1: module \"foo\": src: empty src is not supported"),
ExpectedBazelTargets: []string{},
ExpectedErr: fmt.Errorf("Android.bp:2:1: module \"foo\": src: empty src is not supported"),
})
}

View File

@@ -21,21 +21,21 @@ import (
"testing"
)
func runPrebuiltEtcTestCase(t *testing.T, tc bp2buildTestCase) {
func runPrebuiltEtcTestCase(t *testing.T, tc Bp2buildTestCase) {
t.Helper()
(&tc).moduleTypeUnderTest = "prebuilt_etc"
(&tc).moduleTypeUnderTestFactory = etc.PrebuiltEtcFactory
runBp2BuildTestCase(t, registerPrebuiltEtcModuleTypes, tc)
(&tc).ModuleTypeUnderTest = "prebuilt_etc"
(&tc).ModuleTypeUnderTestFactory = etc.PrebuiltEtcFactory
RunBp2BuildTestCase(t, registerPrebuiltEtcModuleTypes, tc)
}
func registerPrebuiltEtcModuleTypes(ctx android.RegistrationContext) {
}
func TestPrebuiltEtcSimple(t *testing.T) {
runPrebuiltEtcTestCase(t, bp2buildTestCase{
description: "prebuilt_etc - simple example",
filesystem: map[string]string{},
blueprint: `
runPrebuiltEtcTestCase(t, Bp2buildTestCase{
Description: "prebuilt_etc - simple example",
Filesystem: map[string]string{},
Blueprint: `
prebuilt_etc {
name: "apex_tz_version",
src: "version/tz_version",
@@ -44,8 +44,8 @@ prebuilt_etc {
installable: false,
}
`,
expectedBazelTargets: []string{
makeBazelTarget("prebuilt_file", "apex_tz_version", attrNameToString{
ExpectedBazelTargets: []string{
makeBazelTarget("prebuilt_file", "apex_tz_version", AttrNameToString{
"filename": `"tz_version"`,
"installable": `False`,
"src": `"version/tz_version"`,
@@ -54,10 +54,10 @@ prebuilt_etc {
}
func TestPrebuiltEtcArchVariant(t *testing.T) {
runPrebuiltEtcTestCase(t, bp2buildTestCase{
description: "prebuilt_etc - arch variant",
filesystem: map[string]string{},
blueprint: `
runPrebuiltEtcTestCase(t, Bp2buildTestCase{
Description: "prebuilt_etc - arch variant",
Filesystem: map[string]string{},
Blueprint: `
prebuilt_etc {
name: "apex_tz_version",
src: "version/tz_version",
@@ -74,8 +74,8 @@ prebuilt_etc {
}
}
`,
expectedBazelTargets: []string{
makeBazelTarget("prebuilt_file", "apex_tz_version", attrNameToString{
ExpectedBazelTargets: []string{
makeBazelTarget("prebuilt_file", "apex_tz_version", AttrNameToString{
"filename": `"tz_version"`,
"installable": `False`,
"src": `select({
@@ -88,10 +88,10 @@ prebuilt_etc {
}
func TestPrebuiltEtcArchAndTargetVariant(t *testing.T) {
runPrebuiltEtcTestCase(t, bp2buildTestCase{
description: "prebuilt_etc - arch variant",
filesystem: map[string]string{},
blueprint: `
runPrebuiltEtcTestCase(t, Bp2buildTestCase{
Description: "prebuilt_etc - arch variant",
Filesystem: map[string]string{},
Blueprint: `
prebuilt_etc {
name: "apex_tz_version",
src: "version/tz_version",
@@ -113,8 +113,8 @@ prebuilt_etc {
},
}
`,
expectedBazelTargets: []string{
makeBazelTarget("prebuilt_file", "apex_tz_version", attrNameToString{
ExpectedBazelTargets: []string{
makeBazelTarget("prebuilt_file", "apex_tz_version", AttrNameToString{
"filename": `"tz_version"`,
"installable": `False`,
"src": `select({
@@ -129,21 +129,21 @@ prebuilt_etc {
})}})
}
func runPrebuiltUsrShareTestCase(t *testing.T, tc bp2buildTestCase) {
func runPrebuiltUsrShareTestCase(t *testing.T, tc Bp2buildTestCase) {
t.Helper()
(&tc).moduleTypeUnderTest = "prebuilt_usr_share"
(&tc).moduleTypeUnderTestFactory = etc.PrebuiltUserShareFactory
runBp2BuildTestCase(t, registerPrebuiltEtcModuleTypes, tc)
(&tc).ModuleTypeUnderTest = "prebuilt_usr_share"
(&tc).ModuleTypeUnderTestFactory = etc.PrebuiltUserShareFactory
RunBp2BuildTestCase(t, registerPrebuiltEtcModuleTypes, tc)
}
func registerPrebuiltUsrShareModuleTypes(ctx android.RegistrationContext) {
}
func TestPrebuiltUsrShareSimple(t *testing.T) {
runPrebuiltUsrShareTestCase(t, bp2buildTestCase{
description: "prebuilt_usr_share - simple example",
filesystem: map[string]string{},
blueprint: `
runPrebuiltUsrShareTestCase(t, Bp2buildTestCase{
Description: "prebuilt_usr_share - simple example",
Filesystem: map[string]string{},
Blueprint: `
prebuilt_usr_share {
name: "apex_tz_version",
src: "version/tz_version",
@@ -152,8 +152,8 @@ prebuilt_usr_share {
installable: false,
}
`,
expectedBazelTargets: []string{
makeBazelTarget("prebuilt_file", "apex_tz_version", attrNameToString{
ExpectedBazelTargets: []string{
makeBazelTarget("prebuilt_file", "apex_tz_version", AttrNameToString{
"filename": `"tz_version"`,
"installable": `False`,
"src": `"version/tz_version"`,
@@ -162,10 +162,10 @@ prebuilt_usr_share {
}
func TestPrebuiltEtcNoSubdir(t *testing.T) {
runPrebuiltEtcTestCase(t, bp2buildTestCase{
description: "prebuilt_etc - no subdir",
filesystem: map[string]string{},
blueprint: `
runPrebuiltEtcTestCase(t, Bp2buildTestCase{
Description: "prebuilt_etc - no subdir",
Filesystem: map[string]string{},
Blueprint: `
prebuilt_etc {
name: "apex_tz_version",
src: "version/tz_version",
@@ -173,8 +173,8 @@ prebuilt_etc {
installable: false,
}
`,
expectedBazelTargets: []string{
makeBazelTarget("prebuilt_file", "apex_tz_version", attrNameToString{
ExpectedBazelTargets: []string{
makeBazelTarget("prebuilt_file", "apex_tz_version", AttrNameToString{
"filename": `"tz_version"`,
"installable": `False`,
"src": `"version/tz_version"`,

View File

@@ -7,27 +7,27 @@ import (
"android/soong/python"
)
func runBp2BuildTestCaseWithPythonLibraries(t *testing.T, tc bp2buildTestCase) {
func runBp2BuildTestCaseWithPythonLibraries(t *testing.T, tc Bp2buildTestCase) {
t.Helper()
runBp2BuildTestCase(t, func(ctx android.RegistrationContext) {
RunBp2BuildTestCase(t, func(ctx android.RegistrationContext) {
ctx.RegisterModuleType("python_library", python.PythonLibraryFactory)
ctx.RegisterModuleType("python_library_host", python.PythonLibraryHostFactory)
}, tc)
}
func TestPythonBinaryHostSimple(t *testing.T) {
runBp2BuildTestCaseWithPythonLibraries(t, bp2buildTestCase{
description: "simple python_binary_host converts to a native py_binary",
moduleTypeUnderTest: "python_binary_host",
moduleTypeUnderTestFactory: python.PythonBinaryHostFactory,
filesystem: map[string]string{
runBp2BuildTestCaseWithPythonLibraries(t, Bp2buildTestCase{
Description: "simple python_binary_host converts to a native py_binary",
ModuleTypeUnderTest: "python_binary_host",
ModuleTypeUnderTestFactory: python.PythonBinaryHostFactory,
Filesystem: map[string]string{
"a.py": "",
"b/c.py": "",
"b/d.py": "",
"b/e.py": "",
"files/data.txt": "",
},
blueprint: `python_binary_host {
Blueprint: `python_binary_host {
name: "foo",
main: "a.py",
srcs: ["**/*.py"],
@@ -41,8 +41,8 @@ func TestPythonBinaryHostSimple(t *testing.T) {
srcs: ["b/e.py"],
bazel_module: { bp2build_available: false },
}`,
expectedBazelTargets: []string{
makeBazelTarget("py_binary", "foo", attrNameToString{
ExpectedBazelTargets: []string{
makeBazelTarget("py_binary", "foo", AttrNameToString{
"data": `["files/data.txt"]`,
"deps": `[":bar"]`,
"main": `"a.py"`,
@@ -62,11 +62,11 @@ func TestPythonBinaryHostSimple(t *testing.T) {
}
func TestPythonBinaryHostPy2(t *testing.T) {
runBp2BuildTestCaseSimple(t, bp2buildTestCase{
description: "py2 python_binary_host",
moduleTypeUnderTest: "python_binary_host",
moduleTypeUnderTestFactory: python.PythonBinaryHostFactory,
blueprint: `python_binary_host {
runBp2BuildTestCaseSimple(t, Bp2buildTestCase{
Description: "py2 python_binary_host",
ModuleTypeUnderTest: "python_binary_host",
ModuleTypeUnderTestFactory: python.PythonBinaryHostFactory,
Blueprint: `python_binary_host {
name: "foo",
srcs: ["a.py"],
version: {
@@ -81,8 +81,8 @@ func TestPythonBinaryHostPy2(t *testing.T) {
bazel_module: { bp2build_available: true },
}
`,
expectedBazelTargets: []string{
makeBazelTarget("py_binary", "foo", attrNameToString{
ExpectedBazelTargets: []string{
makeBazelTarget("py_binary", "foo", AttrNameToString{
"python_version": `"PY2"`,
"imports": `["."]`,
"srcs": `["a.py"]`,
@@ -96,11 +96,11 @@ func TestPythonBinaryHostPy2(t *testing.T) {
}
func TestPythonBinaryHostPy3(t *testing.T) {
runBp2BuildTestCaseSimple(t, bp2buildTestCase{
description: "py3 python_binary_host",
moduleTypeUnderTest: "python_binary_host",
moduleTypeUnderTestFactory: python.PythonBinaryHostFactory,
blueprint: `python_binary_host {
runBp2BuildTestCaseSimple(t, Bp2buildTestCase{
Description: "py3 python_binary_host",
ModuleTypeUnderTest: "python_binary_host",
ModuleTypeUnderTestFactory: python.PythonBinaryHostFactory,
Blueprint: `python_binary_host {
name: "foo",
srcs: ["a.py"],
version: {
@@ -115,9 +115,9 @@ func TestPythonBinaryHostPy3(t *testing.T) {
bazel_module: { bp2build_available: true },
}
`,
expectedBazelTargets: []string{
ExpectedBazelTargets: []string{
// python_version is PY3 by default.
makeBazelTarget("py_binary", "foo", attrNameToString{
makeBazelTarget("py_binary", "foo", AttrNameToString{
"imports": `["."]`,
"srcs": `["a.py"]`,
"target_compatible_with": `select({
@@ -130,15 +130,15 @@ func TestPythonBinaryHostPy3(t *testing.T) {
}
func TestPythonBinaryHostArchVariance(t *testing.T) {
runBp2BuildTestCaseSimple(t, bp2buildTestCase{
description: "test arch variants",
moduleTypeUnderTest: "python_binary_host",
moduleTypeUnderTestFactory: python.PythonBinaryHostFactory,
filesystem: map[string]string{
runBp2BuildTestCaseSimple(t, Bp2buildTestCase{
Description: "test arch variants",
ModuleTypeUnderTest: "python_binary_host",
ModuleTypeUnderTestFactory: python.PythonBinaryHostFactory,
Filesystem: map[string]string{
"dir/arm.py": "",
"dir/x86.py": "",
},
blueprint: `python_binary_host {
Blueprint: `python_binary_host {
name: "foo-arm",
arch: {
arm: {
@@ -149,8 +149,8 @@ func TestPythonBinaryHostArchVariance(t *testing.T) {
},
},
}`,
expectedBazelTargets: []string{
makeBazelTarget("py_binary", "foo-arm", attrNameToString{
ExpectedBazelTargets: []string{
makeBazelTarget("py_binary", "foo-arm", AttrNameToString{
"imports": `["."]`,
"srcs": `select({
"//build/bazel/platforms/arch:arm": ["arm.py"],

View File

@@ -21,7 +21,7 @@ type pythonLibBp2BuildTestCase struct {
expectedError error
}
func convertPythonLibTestCaseToBp2build_Host(tc pythonLibBp2BuildTestCase) bp2buildTestCase {
func convertPythonLibTestCaseToBp2build_Host(tc pythonLibBp2BuildTestCase) Bp2buildTestCase {
for i := range tc.expectedBazelTargets {
tc.expectedBazelTargets[i].attrs["target_compatible_with"] = `select({
"//build/bazel/platforms/os:android": ["@platforms//:incompatible"],
@@ -32,7 +32,7 @@ func convertPythonLibTestCaseToBp2build_Host(tc pythonLibBp2BuildTestCase) bp2bu
return convertPythonLibTestCaseToBp2build(tc)
}
func convertPythonLibTestCaseToBp2build(tc pythonLibBp2BuildTestCase) bp2buildTestCase {
func convertPythonLibTestCaseToBp2build(tc pythonLibBp2BuildTestCase) Bp2buildTestCase {
var bp2BuildTargets []string
for _, t := range tc.expectedBazelTargets {
bp2BuildTargets = append(bp2BuildTargets, makeBazelTarget(t.typ, t.name, t.attrs))
@@ -43,28 +43,28 @@ func convertPythonLibTestCaseToBp2build(tc pythonLibBp2BuildTestCase) bp2buildTe
for k, v := range tc.filesystem {
filesystemCopy[k] = v
}
return bp2buildTestCase{
description: tc.description,
filesystem: filesystemCopy,
blueprint: tc.blueprint,
expectedBazelTargets: bp2BuildTargets,
dir: tc.dir,
expectedErr: tc.expectedError,
return Bp2buildTestCase{
Description: tc.description,
Filesystem: filesystemCopy,
Blueprint: tc.blueprint,
ExpectedBazelTargets: bp2BuildTargets,
Dir: tc.dir,
ExpectedErr: tc.expectedError,
}
}
func runPythonLibraryTestCase(t *testing.T, tc pythonLibBp2BuildTestCase) {
t.Helper()
testCase := convertPythonLibTestCaseToBp2build(tc)
testCase.description = fmt.Sprintf(testCase.description, "python_library")
testCase.blueprint = fmt.Sprintf(testCase.blueprint, "python_library")
for name, contents := range testCase.filesystem {
testCase.Description = fmt.Sprintf(testCase.Description, "python_library")
testCase.Blueprint = fmt.Sprintf(testCase.Blueprint, "python_library")
for name, contents := range testCase.Filesystem {
if strings.HasSuffix(name, "Android.bp") {
testCase.filesystem[name] = fmt.Sprintf(contents, "python_library")
testCase.Filesystem[name] = fmt.Sprintf(contents, "python_library")
}
}
testCase.moduleTypeUnderTest = "python_library"
testCase.moduleTypeUnderTestFactory = python.PythonLibraryFactory
testCase.ModuleTypeUnderTest = "python_library"
testCase.ModuleTypeUnderTestFactory = python.PythonLibraryFactory
runBp2BuildTestCaseSimple(t, testCase)
}
@@ -72,16 +72,16 @@ func runPythonLibraryTestCase(t *testing.T, tc pythonLibBp2BuildTestCase) {
func runPythonLibraryHostTestCase(t *testing.T, tc pythonLibBp2BuildTestCase) {
t.Helper()
testCase := convertPythonLibTestCaseToBp2build_Host(tc)
testCase.description = fmt.Sprintf(testCase.description, "python_library_host")
testCase.blueprint = fmt.Sprintf(testCase.blueprint, "python_library_host")
for name, contents := range testCase.filesystem {
testCase.Description = fmt.Sprintf(testCase.Description, "python_library_host")
testCase.Blueprint = fmt.Sprintf(testCase.Blueprint, "python_library_host")
for name, contents := range testCase.Filesystem {
if strings.HasSuffix(name, "Android.bp") {
testCase.filesystem[name] = fmt.Sprintf(contents, "python_library_host")
testCase.Filesystem[name] = fmt.Sprintf(contents, "python_library_host")
}
}
testCase.moduleTypeUnderTest = "python_library_host"
testCase.moduleTypeUnderTestFactory = python.PythonLibraryHostFactory
runBp2BuildTestCase(t, func(ctx android.RegistrationContext) {
testCase.ModuleTypeUnderTest = "python_library_host"
testCase.ModuleTypeUnderTestFactory = python.PythonLibraryHostFactory
RunBp2BuildTestCase(t, func(ctx android.RegistrationContext) {
ctx.RegisterModuleType("python_library", python.PythonLibraryFactory)
},
testCase)
@@ -121,7 +121,7 @@ func TestSimplePythonLib(t *testing.T) {
{
typ: "py_library",
name: "foo",
attrs: attrNameToString{
attrs: AttrNameToString{
"data": `["files/data.txt"]`,
"deps": `[":bar"]`,
"srcs": `[
@@ -155,7 +155,7 @@ func TestSimplePythonLib(t *testing.T) {
{
typ: "py_library",
name: "foo",
attrs: attrNameToString{
attrs: AttrNameToString{
"srcs": `["a.py"]`,
"srcs_version": `"PY2"`,
"imports": `["."]`,
@@ -183,7 +183,7 @@ func TestSimplePythonLib(t *testing.T) {
{
typ: "py_library",
name: "foo",
attrs: attrNameToString{
attrs: AttrNameToString{
"srcs": `["a.py"]`,
"srcs_version": `"PY3"`,
"imports": `["."]`,
@@ -212,7 +212,7 @@ func TestSimplePythonLib(t *testing.T) {
// srcs_version is PY2ANDPY3 by default.
typ: "py_library",
name: "foo",
attrs: attrNameToString{
attrs: AttrNameToString{
"srcs": `["a.py"]`,
"imports": `["."]`,
},
@@ -238,7 +238,7 @@ func TestSimplePythonLib(t *testing.T) {
// srcs_version is PY2ANDPY3 by default.
typ: "py_library",
name: "foo",
attrs: attrNameToString{
attrs: AttrNameToString{
"srcs": `["a.py"]`,
"imports": `["../.."]`,
"srcs_version": `"PY3"`,
@@ -292,7 +292,7 @@ func TestPythonArchVariance(t *testing.T) {
{
typ: "py_library",
name: "foo",
attrs: attrNameToString{
attrs: AttrNameToString{
"srcs": `select({
"//build/bazel/platforms/arch:arm": ["arm.py"],
"//build/bazel/platforms/arch:x86": ["x86.py"],
@@ -324,21 +324,21 @@ func TestPythonLibraryWithProtobufs(t *testing.T) {
{
typ: "proto_library",
name: "foo_proto",
attrs: attrNameToString{
attrs: AttrNameToString{
"srcs": `["dir/myproto.proto"]`,
},
},
{
typ: "py_proto_library",
name: "foo_py_proto",
attrs: attrNameToString{
attrs: AttrNameToString{
"deps": `[":foo_proto"]`,
},
},
{
typ: "py_library",
name: "foo",
attrs: attrNameToString{
attrs: AttrNameToString{
"srcs": `["dir/mylib.py"]`,
"srcs_version": `"PY3"`,
"imports": `["."]`,

View File

@@ -48,25 +48,25 @@ func TestShBinaryLoadStatement(t *testing.T) {
}
}
func runShBinaryTestCase(t *testing.T, tc bp2buildTestCase) {
func runShBinaryTestCase(t *testing.T, tc Bp2buildTestCase) {
t.Helper()
runBp2BuildTestCase(t, func(ctx android.RegistrationContext) {}, tc)
RunBp2BuildTestCase(t, func(ctx android.RegistrationContext) {}, tc)
}
func TestShBinarySimple(t *testing.T) {
runShBinaryTestCase(t, bp2buildTestCase{
description: "sh_binary test",
moduleTypeUnderTest: "sh_binary",
moduleTypeUnderTestFactory: sh.ShBinaryFactory,
blueprint: `sh_binary {
runShBinaryTestCase(t, Bp2buildTestCase{
Description: "sh_binary test",
ModuleTypeUnderTest: "sh_binary",
ModuleTypeUnderTestFactory: sh.ShBinaryFactory,
Blueprint: `sh_binary {
name: "foo",
src: "foo.sh",
filename: "foo.exe",
sub_dir: "sub",
bazel_module: { bp2build_available: true },
}`,
expectedBazelTargets: []string{
makeBazelTarget("sh_binary", "foo", attrNameToString{
ExpectedBazelTargets: []string{
makeBazelTarget("sh_binary", "foo", AttrNameToString{
"srcs": `["foo.sh"]`,
"filename": `"foo.exe"`,
"sub_dir": `"sub"`,
@@ -75,17 +75,17 @@ func TestShBinarySimple(t *testing.T) {
}
func TestShBinaryDefaults(t *testing.T) {
runShBinaryTestCase(t, bp2buildTestCase{
description: "sh_binary test",
moduleTypeUnderTest: "sh_binary",
moduleTypeUnderTestFactory: sh.ShBinaryFactory,
blueprint: `sh_binary {
runShBinaryTestCase(t, Bp2buildTestCase{
Description: "sh_binary test",
ModuleTypeUnderTest: "sh_binary",
ModuleTypeUnderTestFactory: sh.ShBinaryFactory,
Blueprint: `sh_binary {
name: "foo",
src: "foo.sh",
bazel_module: { bp2build_available: true },
}`,
expectedBazelTargets: []string{
makeBazelTarget("sh_binary", "foo", attrNameToString{
ExpectedBazelTargets: []string{
makeBazelTarget("sh_binary", "foo", AttrNameToString{
"srcs": `["foo.sh"]`,
})},
})

View File

@@ -20,9 +20,9 @@ import (
"testing"
)
func runSoongConfigModuleTypeTest(t *testing.T, tc bp2buildTestCase) {
func runSoongConfigModuleTypeTest(t *testing.T, tc Bp2buildTestCase) {
t.Helper()
runBp2BuildTestCase(t, registerSoongConfigModuleTypes, tc)
RunBp2BuildTestCase(t, registerSoongConfigModuleTypes, tc)
}
func registerSoongConfigModuleTypes(ctx android.RegistrationContext) {
@@ -61,12 +61,12 @@ custom_cc_library_static {
}
`
runSoongConfigModuleTypeTest(t, bp2buildTestCase{
description: "soong config variables - soong_config_module_type is supported in bp2build",
moduleTypeUnderTest: "cc_library_static",
moduleTypeUnderTestFactory: cc.LibraryStaticFactory,
blueprint: bp,
expectedBazelTargets: []string{`cc_library_static(
runSoongConfigModuleTypeTest(t, Bp2buildTestCase{
Description: "soong config variables - soong_config_module_type is supported in bp2build",
ModuleTypeUnderTest: "cc_library_static",
ModuleTypeUnderTestFactory: cc.LibraryStaticFactory,
Blueprint: bp,
ExpectedBazelTargets: []string{`cc_library_static(
name = "foo",
copts = select({
"//build/bazel/product_variables:acme__feature1": ["-DFEATURE1"],
@@ -107,15 +107,15 @@ custom_cc_library_static {
}
`
runSoongConfigModuleTypeTest(t, bp2buildTestCase{
description: "soong config variables - soong_config_module_type_import is supported in bp2build",
moduleTypeUnderTest: "cc_library_static",
moduleTypeUnderTestFactory: cc.LibraryStaticFactory,
filesystem: map[string]string{
runSoongConfigModuleTypeTest(t, Bp2buildTestCase{
Description: "soong config variables - soong_config_module_type_import is supported in bp2build",
ModuleTypeUnderTest: "cc_library_static",
ModuleTypeUnderTestFactory: cc.LibraryStaticFactory,
Filesystem: map[string]string{
"foo/bar/SoongConfig.bp": configBp,
},
blueprint: bp,
expectedBazelTargets: []string{`cc_library_static(
Blueprint: bp,
ExpectedBazelTargets: []string{`cc_library_static(
name = "foo",
copts = select({
"//build/bazel/product_variables:acme__feature1": ["-DFEATURE1"],
@@ -161,12 +161,12 @@ custom_cc_library_static {
}
`
runSoongConfigModuleTypeTest(t, bp2buildTestCase{
description: "soong config variables - generates selects for string vars",
moduleTypeUnderTest: "cc_library_static",
moduleTypeUnderTestFactory: cc.LibraryStaticFactory,
blueprint: bp,
expectedBazelTargets: []string{`cc_library_static(
runSoongConfigModuleTypeTest(t, Bp2buildTestCase{
Description: "soong config variables - generates selects for string vars",
ModuleTypeUnderTest: "cc_library_static",
ModuleTypeUnderTestFactory: cc.LibraryStaticFactory,
Blueprint: bp,
ExpectedBazelTargets: []string{`cc_library_static(
name = "foo",
copts = select({
"//build/bazel/product_variables:acme__board__soc_a": ["-DSOC_A"],
@@ -232,12 +232,12 @@ custom_cc_library_static {
},
}`
runSoongConfigModuleTypeTest(t, bp2buildTestCase{
description: "soong config variables - generates selects for multiple variable types",
moduleTypeUnderTest: "cc_library_static",
moduleTypeUnderTestFactory: cc.LibraryStaticFactory,
blueprint: bp,
expectedBazelTargets: []string{`cc_library_static(
runSoongConfigModuleTypeTest(t, Bp2buildTestCase{
Description: "soong config variables - generates selects for multiple variable types",
ModuleTypeUnderTest: "cc_library_static",
ModuleTypeUnderTestFactory: cc.LibraryStaticFactory,
Blueprint: bp,
ExpectedBazelTargets: []string{`cc_library_static(
name = "foo",
copts = select({
"//build/bazel/product_variables:acme__board__soc_a": ["-DSOC_A"],
@@ -298,15 +298,15 @@ 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 } }
`
runSoongConfigModuleTypeTest(t, bp2buildTestCase{
description: "soong config variables - generates selects for label list attributes",
moduleTypeUnderTest: "cc_library_static",
moduleTypeUnderTestFactory: cc.LibraryStaticFactory,
blueprint: bp,
filesystem: map[string]string{
runSoongConfigModuleTypeTest(t, Bp2buildTestCase{
Description: "soong config variables - generates selects for label list attributes",
ModuleTypeUnderTest: "cc_library_static",
ModuleTypeUnderTestFactory: cc.LibraryStaticFactory,
Blueprint: bp,
Filesystem: map[string]string{
"foo/bar/Android.bp": otherDeps,
},
expectedBazelTargets: []string{`cc_library_static(
ExpectedBazelTargets: []string{`cc_library_static(
name = "foo",
copts = select({
"//build/bazel/product_variables:acme__board__soc_a": ["-DSOC_A"],
@@ -365,12 +365,12 @@ cc_library_static {
}
`
runSoongConfigModuleTypeTest(t, bp2buildTestCase{
description: "soong config variables - defaults with a single namespace",
moduleTypeUnderTest: "cc_library_static",
moduleTypeUnderTestFactory: cc.LibraryStaticFactory,
blueprint: bp,
expectedBazelTargets: []string{`cc_library_static(
runSoongConfigModuleTypeTest(t, Bp2buildTestCase{
Description: "soong config variables - defaults with a single namespace",
ModuleTypeUnderTest: "cc_library_static",
ModuleTypeUnderTestFactory: cc.LibraryStaticFactory,
Blueprint: bp,
ExpectedBazelTargets: []string{`cc_library_static(
name = "lib",
copts = select({
"//build/bazel/product_variables:vendor_foo__feature": [
@@ -446,12 +446,12 @@ cc_library_static {
}
`
runSoongConfigModuleTypeTest(t, bp2buildTestCase{
description: "soong config variables - multiple defaults with a single namespace",
moduleTypeUnderTest: "cc_library_static",
moduleTypeUnderTestFactory: cc.LibraryStaticFactory,
blueprint: bp,
expectedBazelTargets: []string{`cc_library_static(
runSoongConfigModuleTypeTest(t, Bp2buildTestCase{
Description: "soong config variables - multiple defaults with a single namespace",
ModuleTypeUnderTest: "cc_library_static",
ModuleTypeUnderTestFactory: cc.LibraryStaticFactory,
Blueprint: bp,
ExpectedBazelTargets: []string{`cc_library_static(
name = "lib",
asflags = select({
"//build/bazel/product_variables:acme__feature": ["-asflag_bar"],
@@ -562,12 +562,12 @@ cc_library_static {
}
`
runSoongConfigModuleTypeTest(t, bp2buildTestCase{
description: "soong config variables - defaults with multiple namespaces",
moduleTypeUnderTest: "cc_library_static",
moduleTypeUnderTestFactory: cc.LibraryStaticFactory,
blueprint: bp,
expectedBazelTargets: []string{`cc_library_static(
runSoongConfigModuleTypeTest(t, Bp2buildTestCase{
Description: "soong config variables - defaults with multiple namespaces",
ModuleTypeUnderTest: "cc_library_static",
ModuleTypeUnderTestFactory: cc.LibraryStaticFactory,
Blueprint: bp,
ExpectedBazelTargets: []string{`cc_library_static(
name = "lib",
copts = select({
"//build/bazel/product_variables:vendor_bar__feature": ["-DVENDOR_BAR_FEATURE"],
@@ -653,15 +653,15 @@ cc_library { name: "lib_b", bazel_module: { bp2build_available: false } }
cc_library { name: "lib_default", bazel_module: { bp2build_available: false } }
`
runSoongConfigModuleTypeTest(t, bp2buildTestCase{
description: "soong config variables - generates selects for library_linking_strategy",
moduleTypeUnderTest: "cc_binary",
moduleTypeUnderTestFactory: cc.BinaryFactory,
blueprint: bp,
filesystem: map[string]string{
runSoongConfigModuleTypeTest(t, Bp2buildTestCase{
Description: "soong config variables - generates selects for library_linking_strategy",
ModuleTypeUnderTest: "cc_binary",
ModuleTypeUnderTestFactory: cc.BinaryFactory,
Blueprint: bp,
Filesystem: map[string]string{
"foo/bar/Android.bp": otherDeps,
},
expectedBazelTargets: []string{`cc_binary(
ExpectedBazelTargets: []string{`cc_binary(
name = "library_linking_strategy_sample_binary",
deps = select({
"//build/bazel/product_variables:android__library_linking_strategy__prefer_static": [
@@ -734,15 +734,15 @@ cc_library { name: "lib_a", bazel_module: { bp2build_available: false } }
cc_library { name: "lib_b", bazel_module: { bp2build_available: false } }
`
runSoongConfigModuleTypeTest(t, bp2buildTestCase{
description: "soong config variables - generates selects for library_linking_strategy",
moduleTypeUnderTest: "cc_binary",
moduleTypeUnderTestFactory: cc.BinaryFactory,
blueprint: bp,
filesystem: map[string]string{
runSoongConfigModuleTypeTest(t, Bp2buildTestCase{
Description: "soong config variables - generates selects for library_linking_strategy",
ModuleTypeUnderTest: "cc_binary",
ModuleTypeUnderTestFactory: cc.BinaryFactory,
Blueprint: bp,
Filesystem: map[string]string{
"foo/bar/Android.bp": otherDeps,
},
expectedBazelTargets: []string{`cc_binary(
ExpectedBazelTargets: []string{`cc_binary(
name = "library_linking_strategy_sample_binary",
deps = select({
"//build/bazel/product_variables:android__library_linking_strategy__prefer_static": [
@@ -822,15 +822,15 @@ cc_library { name: "lib_b", bazel_module: { bp2build_available: false } }
cc_library { name: "lib_default", bazel_module: { bp2build_available: false } }
`
runSoongConfigModuleTypeTest(t, bp2buildTestCase{
description: "soong config variables - generates selects for library_linking_strategy",
moduleTypeUnderTest: "cc_binary",
moduleTypeUnderTestFactory: cc.BinaryFactory,
blueprint: bp,
filesystem: map[string]string{
runSoongConfigModuleTypeTest(t, Bp2buildTestCase{
Description: "soong config variables - generates selects for library_linking_strategy",
ModuleTypeUnderTest: "cc_binary",
ModuleTypeUnderTestFactory: cc.BinaryFactory,
Blueprint: bp,
Filesystem: map[string]string{
"foo/bar/Android.bp": otherDeps,
},
expectedBazelTargets: []string{`cc_binary(
ExpectedBazelTargets: []string{`cc_binary(
name = "alphabet_binary",
deps = select({
"//build/bazel/product_variables:android__alphabet__a": [],
@@ -888,13 +888,13 @@ cc_binary {
},
}`
runSoongConfigModuleTypeTest(t, bp2buildTestCase{
description: "soong config variables - generates selects for library_linking_strategy",
moduleTypeUnderTest: "cc_binary",
moduleTypeUnderTestFactory: cc.BinaryFactory,
blueprint: bp,
filesystem: map[string]string{},
expectedBazelTargets: []string{`cc_binary(
runSoongConfigModuleTypeTest(t, Bp2buildTestCase{
Description: "soong config variables - generates selects for library_linking_strategy",
ModuleTypeUnderTest: "cc_binary",
ModuleTypeUnderTestFactory: cc.BinaryFactory,
Blueprint: bp,
Filesystem: map[string]string{},
ExpectedBazelTargets: []string{`cc_binary(
name = "alphabet_binary",
local_includes = ["."],
srcs = ["main.cc"],
@@ -941,13 +941,13 @@ cc_binary {
enabled: false,
}`
runSoongConfigModuleTypeTest(t, bp2buildTestCase{
description: "soong config variables - generates selects for library_linking_strategy",
moduleTypeUnderTest: "cc_binary",
moduleTypeUnderTestFactory: cc.BinaryFactory,
blueprint: bp,
filesystem: map[string]string{},
expectedBazelTargets: []string{`cc_binary(
runSoongConfigModuleTypeTest(t, Bp2buildTestCase{
Description: "soong config variables - generates selects for library_linking_strategy",
ModuleTypeUnderTest: "cc_binary",
ModuleTypeUnderTestFactory: cc.BinaryFactory,
Blueprint: bp,
Filesystem: map[string]string{},
ExpectedBazelTargets: []string{`cc_binary(
name = "alphabet_binary",
local_includes = ["."],
srcs = ["main.cc"],
@@ -985,13 +985,13 @@ cc_binary {
defaults: ["alphabet_sample_cc_defaults"],
}`
runSoongConfigModuleTypeTest(t, bp2buildTestCase{
description: "soong config variables - generates selects for library_linking_strategy",
moduleTypeUnderTest: "cc_binary",
moduleTypeUnderTestFactory: cc.BinaryFactory,
blueprint: bp,
filesystem: map[string]string{},
expectedBazelTargets: []string{`cc_binary(
runSoongConfigModuleTypeTest(t, Bp2buildTestCase{
Description: "soong config variables - generates selects for library_linking_strategy",
ModuleTypeUnderTest: "cc_binary",
ModuleTypeUnderTestFactory: cc.BinaryFactory,
Blueprint: bp,
Filesystem: map[string]string{},
ExpectedBazelTargets: []string{`cc_binary(
name = "alphabet_binary",
local_includes = ["."],
srcs = ["main.cc"],

View File

@@ -53,16 +53,16 @@ func checkError(t *testing.T, errs []error, expectedErr error) bool {
return false
}
func errored(t *testing.T, tc bp2buildTestCase, errs []error) bool {
func errored(t *testing.T, tc Bp2buildTestCase, errs []error) bool {
t.Helper()
if tc.expectedErr != nil {
if tc.ExpectedErr != nil {
// Rely on checkErrors, as this test case is expected to have an error.
return false
}
if len(errs) > 0 {
for _, err := range errs {
t.Errorf("%s: %s", tc.description, err)
t.Errorf("%s: %s", tc.Description, err)
}
return true
}
@@ -71,42 +71,42 @@ func errored(t *testing.T, tc bp2buildTestCase, errs []error) bool {
return false
}
func runBp2BuildTestCaseSimple(t *testing.T, tc bp2buildTestCase) {
func runBp2BuildTestCaseSimple(t *testing.T, tc Bp2buildTestCase) {
t.Helper()
runBp2BuildTestCase(t, func(ctx android.RegistrationContext) {}, tc)
RunBp2BuildTestCase(t, func(ctx android.RegistrationContext) {}, tc)
}
type bp2buildTestCase struct {
description string
moduleTypeUnderTest string
moduleTypeUnderTestFactory android.ModuleFactory
blueprint string
expectedBazelTargets []string
filesystem map[string]string
dir string
type Bp2buildTestCase struct {
Description string
ModuleTypeUnderTest string
ModuleTypeUnderTestFactory android.ModuleFactory
Blueprint string
ExpectedBazelTargets []string
Filesystem map[string]string
Dir string
// An error with a string contained within the string of the expected error
expectedErr error
unconvertedDepsMode unconvertedDepsMode
ExpectedErr error
UnconvertedDepsMode unconvertedDepsMode
}
func runBp2BuildTestCase(t *testing.T, registerModuleTypes func(ctx android.RegistrationContext), tc bp2buildTestCase) {
func RunBp2BuildTestCase(t *testing.T, registerModuleTypes func(ctx android.RegistrationContext), tc Bp2buildTestCase) {
t.Helper()
dir := "."
filesystem := make(map[string][]byte)
toParse := []string{
"Android.bp",
}
for f, content := range tc.filesystem {
for f, content := range tc.Filesystem {
if strings.HasSuffix(f, "Android.bp") {
toParse = append(toParse, f)
}
filesystem[f] = []byte(content)
}
config := android.TestConfig(buildDir, nil, tc.blueprint, filesystem)
config := android.TestConfig(buildDir, nil, tc.Blueprint, filesystem)
ctx := android.NewTestContext(config)
registerModuleTypes(ctx)
ctx.RegisterModuleType(tc.moduleTypeUnderTest, tc.moduleTypeUnderTestFactory)
ctx.RegisterModuleType(tc.ModuleTypeUnderTest, tc.ModuleTypeUnderTestFactory)
ctx.RegisterBp2BuildConfig(bp2buildConfig)
ctx.RegisterForBazelConversion()
@@ -120,35 +120,35 @@ func runBp2BuildTestCase(t *testing.T, registerModuleTypes func(ctx android.Regi
}
parseAndResolveErrs := append(parseErrs, resolveDepsErrs...)
if tc.expectedErr != nil && checkError(t, parseAndResolveErrs, tc.expectedErr) {
if tc.ExpectedErr != nil && checkError(t, parseAndResolveErrs, tc.ExpectedErr) {
return
}
checkDir := dir
if tc.dir != "" {
checkDir = tc.dir
if tc.Dir != "" {
checkDir = tc.Dir
}
codegenCtx := NewCodegenContext(config, *ctx.Context, Bp2Build)
codegenCtx.unconvertedDepMode = tc.unconvertedDepsMode
codegenCtx.unconvertedDepMode = tc.UnconvertedDepsMode
bazelTargets, errs := generateBazelTargetsForDir(codegenCtx, checkDir)
if tc.expectedErr != nil {
if checkError(t, errs, tc.expectedErr) {
if tc.ExpectedErr != nil {
if checkError(t, errs, tc.ExpectedErr) {
return
} else {
t.Errorf("Expected error: %q, got: %q and %q", tc.expectedErr, errs, parseAndResolveErrs)
t.Errorf("Expected error: %q, got: %q and %q", tc.ExpectedErr, errs, parseAndResolveErrs)
}
} else {
android.FailIfErrored(t, errs)
}
if actualCount, expectedCount := len(bazelTargets), len(tc.expectedBazelTargets); actualCount != expectedCount {
if actualCount, expectedCount := len(bazelTargets), len(tc.ExpectedBazelTargets); actualCount != expectedCount {
t.Errorf("%s: Expected %d bazel target (%s), got `%d`` (%s)",
tc.description, expectedCount, tc.expectedBazelTargets, actualCount, bazelTargets)
tc.Description, expectedCount, tc.ExpectedBazelTargets, actualCount, bazelTargets)
} else {
for i, target := range bazelTargets {
if w, g := tc.expectedBazelTargets[i], target.content; w != g {
if w, g := tc.ExpectedBazelTargets[i], target.content; w != g {
t.Errorf(
"%s: Expected generated Bazel target to be `%s`, got `%s`",
tc.description, w, g)
tc.Description, w, g)
}
}
}
@@ -391,10 +391,10 @@ func simpleModuleDoNotConvertBp2build(typ, name string) string {
}`, typ, name)
}
type attrNameToString map[string]string
type AttrNameToString map[string]string
func (a attrNameToString) clone() attrNameToString {
newAttrs := make(attrNameToString, len(a))
func (a AttrNameToString) clone() AttrNameToString {
newAttrs := make(AttrNameToString, len(a))
for k, v := range a {
newAttrs[k] = v
}
@@ -403,7 +403,7 @@ func (a attrNameToString) clone() attrNameToString {
// makeBazelTargetNoRestrictions returns bazel target build file definition that can be host or
// device specific, or independent of host/device.
func makeBazelTargetHostOrDevice(typ, name string, attrs attrNameToString, hod android.HostOrDeviceSupported) string {
func makeBazelTargetHostOrDevice(typ, name string, attrs AttrNameToString, hod android.HostOrDeviceSupported) string {
if _, ok := attrs["target_compatible_with"]; !ok {
switch hod {
case android.HostSupported:
@@ -426,15 +426,15 @@ func makeBazelTargetHostOrDevice(typ, name string, attrs attrNameToString, hod a
)`, typ, strings.Join(attrStrings, "\n"))
}
// makeBazelTargetNoRestrictions returns bazel target build file definition that does not add a
// MakeBazelTargetNoRestrictions returns bazel target build file definition that does not add a
// target_compatible_with. This is useful for module types like filegroup and genrule that arch not
// arch variant
func makeBazelTargetNoRestrictions(typ, name string, attrs attrNameToString) string {
func MakeBazelTargetNoRestrictions(typ, name string, attrs AttrNameToString) string {
return makeBazelTargetHostOrDevice(typ, name, attrs, android.HostAndDeviceDefault)
}
// makeBazelTargetNoRestrictions returns bazel target build file definition that is device specific
// as this is the most common default in Soong.
func makeBazelTarget(typ, name string, attrs attrNameToString) string {
func makeBazelTarget(typ, name string, attrs AttrNameToString) string {
return makeBazelTargetHostOrDevice(typ, name, attrs, android.DeviceSupported)
}