Test changes to prepare for allowlist v2

This implements a number of in-place unit test changes to prepare for
some fundamental changes to bp2build ("allowlist v2"). This will change
bp2build so that rdeps of unconverted or missing modules will not be
converted by bp2build.

Bug: 301312260
Test: Unit tests
Test: Unit tests, with a local copy of allowlist v2 on
Change-Id: I8c8c0a24ba173e213fffcb0f8d7e99845705f4a7
This commit is contained in:
Chris Parsons 2023-10-05 15:47:07 +00:00
parent 3fb5c15adf
commit d078337796
6 changed files with 56 additions and 53 deletions

View file

@ -102,6 +102,7 @@ android_library {
sdk_version: "current",
}
`,
StubbedBuildDefinitions: []string{"lib_dep"},
ExpectedBazelTargets: []string{
MakeBazelTarget(
"android_library",

View file

@ -348,19 +348,6 @@ custom {
}),
},
},
{
Description: "non-existent dep",
Blueprint: `custom {
name: "has_dep",
arch_paths: [":dep"],
bazel_module: { bp2build_available: true },
}`,
ExpectedBazelTargets: []string{
MakeBazelTarget("custom", "has_dep", AttrNameToString{
"arch_paths": `[":dep__BP2BUILD__MISSING__DEP"]`,
}),
},
},
{
Description: "arch-variant srcs",
Blueprint: `custom {

View file

@ -559,8 +559,8 @@ func TestCcLibraryWholeStaticLibsAlwaysLink(t *testing.T) {
ModuleTypeUnderTest: "cc_library",
ModuleTypeUnderTestFactory: cc.LibraryFactory,
Dir: "foo/bar",
StubbedBuildDefinitions: []string{"//foo/bar:prebuilt_whole_static_lib_for_shared", "//foo/bar:prebuilt_whole_static_lib_for_static",
"//foo/bar:prebuilt_whole_static_lib_for_both"},
StubbedBuildDefinitions: []string{"//foo/bar:whole_static_lib_for_shared", "//foo/bar:whole_static_lib_for_static",
"//foo/bar:whole_static_lib_for_both"},
Filesystem: map[string]string{
"foo/bar/Android.bp": `
cc_library {
@ -3355,6 +3355,7 @@ func TestCcLibraryWithTargetApex(t *testing.T) {
Description: "cc_library with target.apex",
ModuleTypeUnderTest: "cc_library",
ModuleTypeUnderTestFactory: cc.LibraryFactory,
StubbedBuildDefinitions: []string{"bar", "baz", "buh"},
Blueprint: `
cc_library {
name: "foo",
@ -3366,27 +3367,29 @@ cc_library {
exclude_static_libs: ["buh"],
}
}
}`,
}` + simpleModule("cc_library_static", "baz") +
simpleModule("cc_library_static", "buh") +
simpleModule("cc_library_static", "bar"),
ExpectedBazelTargets: []string{
MakeBazelTarget("cc_library_static", "foo_bp2build_cc_library_static", AttrNameToString{
"implementation_deps": `[":baz__BP2BUILD__MISSING__DEP"] + select({
"implementation_deps": `[":baz"] + select({
"//build/bazel/rules/apex:in_apex": [],
"//conditions:default": [":buh__BP2BUILD__MISSING__DEP"],
"//conditions:default": [":buh"],
})`,
"implementation_dynamic_deps": `[":baz__BP2BUILD__MISSING__DEP"] + select({
"implementation_dynamic_deps": `[":baz"] + select({
"//build/bazel/rules/apex:in_apex": [],
"//conditions:default": [":bar__BP2BUILD__MISSING__DEP"],
"//conditions:default": [":bar"],
})`,
"local_includes": `["."]`,
}),
MakeBazelTarget("cc_library_shared", "foo", AttrNameToString{
"implementation_deps": `[":baz__BP2BUILD__MISSING__DEP"] + select({
"implementation_deps": `[":baz"] + select({
"//build/bazel/rules/apex:in_apex": [],
"//conditions:default": [":buh__BP2BUILD__MISSING__DEP"],
"//conditions:default": [":buh"],
})`,
"implementation_dynamic_deps": `[":baz__BP2BUILD__MISSING__DEP"] + select({
"implementation_dynamic_deps": `[":baz"] + select({
"//build/bazel/rules/apex:in_apex": [],
"//conditions:default": [":bar__BP2BUILD__MISSING__DEP"],
"//conditions:default": [":bar"],
})`,
"local_includes": `["."]`,
}),
@ -3412,20 +3415,23 @@ cc_library_static {
exclude_static_libs: ["abc"],
}
}
}`,
}` + simpleModule("cc_library_static", "bar") +
simpleModule("cc_library_static", "baz") +
simpleModule("cc_library_static", "abc"),
StubbedBuildDefinitions: []string{"bar", "baz", "abc"},
ExpectedBazelTargets: []string{
MakeBazelTarget("cc_library_static", "foo", AttrNameToString{
"implementation_dynamic_deps": `select({
"//build/bazel/rules/apex:in_apex": [],
"//conditions:default": [":bar__BP2BUILD__MISSING__DEP"],
"//conditions:default": [":bar"],
})`,
"dynamic_deps": `select({
"//build/bazel/rules/apex:in_apex": [],
"//conditions:default": [":baz__BP2BUILD__MISSING__DEP"],
"//conditions:default": [":baz"],
})`,
"deps": `select({
"//build/bazel/rules/apex:in_apex": [],
"//conditions:default": [":abc__BP2BUILD__MISSING__DEP"],
"//conditions:default": [":abc"],
})`,
"local_includes": `["."]`,
}),
@ -5198,7 +5204,7 @@ ndk_headers {
name: "libfoo_headers",
from: "from",
to: "to",
srcs: ["from/foo.h", "from/foo_other.h"]
srcs: ["foo.h", "foo_other.h"]
}
`,
ExpectedBazelTargets: []string{
@ -5206,8 +5212,8 @@ ndk_headers {
"strip_import_prefix": `"from"`,
"import_prefix": `"to"`,
"hdrs": `[
"from/foo.h",
"from/foo_other.h",
"foo.h",
"foo_other.h",
]`,
}),
},

View file

@ -70,10 +70,6 @@ func TestCcLibraryHeadersSimple(t *testing.T) {
runCcLibraryHeadersTestCase(t, Bp2buildTestCase{
Description: "cc_library_headers test",
Filesystem: map[string]string{
"lib-1/lib1a.h": "",
"lib-1/lib1b.h": "",
"lib-2/lib2a.h": "",
"lib-2/lib2b.h": "",
"dir-1/dir1a.h": "",
"dir-1/dir1b.h": "",
"dir-2/dir2a.h": "",
@ -86,7 +82,6 @@ func TestCcLibraryHeadersSimple(t *testing.T) {
cc_library_headers {
name: "foo_headers",
export_include_dirs: ["dir-1", "dir-2"],
header_libs: ["lib-1", "lib-2"],
arch: {
arm64: {
@ -322,7 +317,7 @@ func TestCcLibraryHeadersExportedStaticLibHeadersReexported(t *testing.T) {
runCcLibraryHeadersTestCase(t, Bp2buildTestCase{
Description: "cc_library_headers exported_static_lib_headers is reexported",
Filesystem: map[string]string{},
StubbedBuildDefinitions: []string{"foo_export"},
StubbedBuildDefinitions: []string{"foo_export", "foo_no_reexport"},
Blueprint: soongCcLibraryHeadersPreamble + `
cc_library_headers {
name: "foo_headers",
@ -330,7 +325,8 @@ cc_library_headers {
static_libs: ["foo_export", "foo_no_reexport"],
bazel_module: { bp2build_available: true },
}
` + simpleModule("cc_library_headers", "foo_export"),
` + simpleModule("cc_library_headers", "foo_export") +
simpleModule("cc_library_headers", "foo_no_reexport"),
ExpectedBazelTargets: []string{
MakeBazelTarget("cc_library_headers", "foo_headers", AttrNameToString{
"deps": `[":foo_export"]`,
@ -343,7 +339,7 @@ func TestCcLibraryHeadersExportedSharedLibHeadersReexported(t *testing.T) {
runCcLibraryHeadersTestCase(t, Bp2buildTestCase{
Description: "cc_library_headers exported_shared_lib_headers is reexported",
Filesystem: map[string]string{},
StubbedBuildDefinitions: []string{"foo_export"},
StubbedBuildDefinitions: []string{"foo_export", "foo_no_reexport"},
Blueprint: soongCcLibraryHeadersPreamble + `
cc_library_headers {
name: "foo_headers",
@ -351,7 +347,8 @@ cc_library_headers {
shared_libs: ["foo_export", "foo_no_reexport"],
bazel_module: { bp2build_available: true },
}
` + simpleModule("cc_library_headers", "foo_export"),
` + simpleModule("cc_library_headers", "foo_export") +
simpleModule("cc_library_headers", "foo_no_reexport"),
ExpectedBazelTargets: []string{
MakeBazelTarget("cc_library_headers", "foo_headers", AttrNameToString{
"deps": `[":foo_export"]`,
@ -364,7 +361,7 @@ func TestCcLibraryHeadersExportedHeaderLibHeadersReexported(t *testing.T) {
runCcLibraryHeadersTestCase(t, Bp2buildTestCase{
Description: "cc_library_headers exported_header_lib_headers is reexported",
Filesystem: map[string]string{},
StubbedBuildDefinitions: []string{"foo_export"},
StubbedBuildDefinitions: []string{"foo_export", "foo_no_reexport"},
Blueprint: soongCcLibraryHeadersPreamble + `
cc_library_headers {
name: "foo_headers",
@ -372,7 +369,8 @@ cc_library_headers {
header_libs: ["foo_export", "foo_no_reexport"],
bazel_module: { bp2build_available: true },
}
` + simpleModule("cc_library_headers", "foo_export"),
` + simpleModule("cc_library_headers", "foo_export") +
simpleModule("cc_library_headers", "foo_no_reexport"),
ExpectedBazelTargets: []string{
MakeBazelTarget("cc_library_headers", "foo_headers", AttrNameToString{
"deps": `[":foo_export"]`,
@ -426,7 +424,7 @@ cc_prebuilt_library_headers {
func TestPrebuiltCcLibraryHeadersPreferredRdepUpdated(t *testing.T) {
runCcLibraryHeadersTestCase(t, Bp2buildTestCase{
Description: "cc_library_headers prebuilt preferred is used as rdep",
StubbedBuildDefinitions: []string{"foo_export"},
StubbedBuildDefinitions: []string{"foo_export", "//foo/bar:foo_headers"},
Filesystem: map[string]string{
"foo/bar/Android.bp": simpleModule("cc_library_headers", "foo_headers"),
},
@ -458,7 +456,7 @@ cc_library_shared {
func TestPrebuiltCcLibraryHeadersRdepUpdated(t *testing.T) {
runCcLibraryHeadersTestCase(t, Bp2buildTestCase{
Description: "cc_library_headers not preferred is not used for rdep",
StubbedBuildDefinitions: []string{"foo_export"},
StubbedBuildDefinitions: []string{"foo_export", "//foo/bar:foo_headers"},
Filesystem: map[string]string{
"foo/bar/Android.bp": simpleModule("cc_library_headers", "foo_headers"),
},

View file

@ -15,16 +15,22 @@
package bp2build
import (
"testing"
"android/soong/android"
"android/soong/genrule"
"testing"
)
func registerModulesForGensrcsTests(ctx android.RegistrationContext) {
ctx.RegisterModuleType("filegroup", android.FileGroupFactory)
}
func TestGensrcs(t *testing.T) {
testcases := []struct {
name string
bp string
expectedBazelAttrs AttrNameToString
name string
bp string
expectedBazelAttrs AttrNameToString
stubbedBuildDefinitions []string
}{
{
name: "gensrcs with common usage of properties",
@ -37,18 +43,22 @@ func TestGensrcs(t *testing.T) {
data: ["foo/file.txt", ":external_files"],
output_extension: "out",
bazel_module: { bp2build_available: true },
}
filegroup {
name: "external_files",
}`,
stubbedBuildDefinitions: []string{"external_files"},
expectedBazelAttrs: AttrNameToString{
"srcs": `[
"test/input.txt",
":external_files__BP2BUILD__MISSING__DEP",
":external_files",
]`,
"tools": `["program.py"]`,
"output_extension": `"out"`,
"cmd": `"$(location program.py) $(SRC) $(OUT) $(location foo/file.txt) $(location :external_files__BP2BUILD__MISSING__DEP)"`,
"cmd": `"$(location program.py) $(SRC) $(OUT) $(location foo/file.txt) $(location :external_files)"`,
"data": `[
"foo/file.txt",
":external_files__BP2BUILD__MISSING__DEP",
":external_files",
]`,
},
},
@ -73,12 +83,13 @@ func TestGensrcs(t *testing.T) {
MakeBazelTargetNoRestrictions("gensrcs", "foo", test.expectedBazelAttrs),
}
t.Run(test.name, func(t *testing.T) {
RunBp2BuildTestCase(t, func(ctx android.RegistrationContext) {},
RunBp2BuildTestCase(t, registerModulesForGensrcsTests,
Bp2buildTestCase{
ModuleTypeUnderTest: "gensrcs",
ModuleTypeUnderTestFactory: genrule.GenSrcsFactory,
Blueprint: test.bp,
ExpectedBazelTargets: expectedBazelTargets,
StubbedBuildDefinitions: test.stubbedBuildDefinitions,
})
})
}

View file

@ -635,7 +635,7 @@ func TestJavaLibraryAidlNonAdjacentAidlFilegroup(t *testing.T) {
Description: "java_library with non adjacent aidl filegroup",
ModuleTypeUnderTest: "java_library",
ModuleTypeUnderTestFactory: java.LibraryFactory,
StubbedBuildDefinitions: []string{"A_aidl"},
StubbedBuildDefinitions: []string{"//path/to/A:A_aidl"},
Filesystem: map[string]string{
"path/to/A/Android.bp": `
filegroup {