summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Jason Wu <juu@google.com> 2023-08-24 15:40:10 -0400
committer Jason Wu <juu@google.com> 2023-10-10 14:03:19 -0400
commit25c69eec4530a1f1423173a6724a84bd470dbf77 (patch)
treefa222aa8abd16c9b16d61aa5249764319daf11ec
parente94f26e2e8649806e1545180ec053ffe0fea8e83 (diff)
Update sh_test conversion to handle data_bins and test_configs properly
sh_test.data_bins are used to mark special executable dependencies which should be installed alongside the test entry point's cwd as siblings. This change makes it such that the Tradefed rule places them at the expected location. In addition, this change also incorporates the `tradefed.TestConfigAttributes` to handle the test_configs conversions. Test: bp2build.sh Bug: 283486885 Change-Id: Ifeb049c13ae208c785dbdc858f589be8f21109d1
-rw-r--r--android/allowlists/allowlists.go4
-rw-r--r--bp2build/sh_test_conversion_test.go238
-rw-r--r--sh/sh_binary.go46
3 files changed, 229 insertions, 59 deletions
diff --git a/android/allowlists/allowlists.go b/android/allowlists/allowlists.go
index 16e23285a..53546114a 100644
--- a/android/allowlists/allowlists.go
+++ b/android/allowlists/allowlists.go
@@ -350,6 +350,8 @@ var (
"packages/modules/NetworkStack/common/captiveportal": Bp2BuildDefaultTrue,
"packages/modules/NeuralNetworks/apex": Bp2BuildDefaultTrue,
"packages/modules/NeuralNetworks/apex/testing": Bp2BuildDefaultTrue,
+ "packages/modules/SdkExtensions/gen_sdk": Bp2BuildDefaultTrue,
+ "packages/modules/common/proto": Bp2BuildDefaultTrue,
"packages/providers/MediaProvider/tools/dialogs": Bp2BuildDefaultFalse, // TODO(b/242834374)
"packages/screensavers/Basic": Bp2BuildDefaultTrue,
"packages/services/Car/tests/SampleRearViewCamera": Bp2BuildDefaultFalse, // TODO(b/242834321)
@@ -1088,7 +1090,7 @@ var (
"versioner", // TODO(b/228313961): depends on prebuilt shared library libclang-cpp_host as a shared library, which does not supply expected providers for a shared library
// requires host tools for apexer
- "apexer_test", "apexer_test_host_tools", "host_apex_verifier",
+ "apexer_test", "apexer_test_host_tools", "host_apex_verifier", "host-apex-verifier",
// java bugs
"libbase_ndk", // TODO(b/186826477): fails to link libctscamera2_jni for device (required for CtsCameraTestCases)
diff --git a/bp2build/sh_test_conversion_test.go b/bp2build/sh_test_conversion_test.go
index e99d56689..48fd077b9 100644
--- a/bp2build/sh_test_conversion_test.go
+++ b/bp2build/sh_test_conversion_test.go
@@ -22,11 +22,18 @@ import (
)
func TestShTestSimple(t *testing.T) {
- RunBp2BuildTestCase(t, func(ctx android.RegistrationContext) {}, Bp2buildTestCase{
- Description: "sh_test test",
- ModuleTypeUnderTest: "sh_test",
+ RunBp2BuildTestCase(t, func(ctx android.RegistrationContext) {
+ ctx.RegisterModuleType("filegroup", android.FileGroupFactory)
+ }, Bp2buildTestCase{
+ Description: "sh_test test",
+ ModuleTypeUnderTest: "sh_test",
+ StubbedBuildDefinitions: []string{"android.hardware.bluetooth@1.1-service.sim",
+ "android.hardware.bluetooth@1.1-impl-sim", "libc++", "libcrypto"},
ModuleTypeUnderTestFactory: sh.ShTestFactory,
- Blueprint: `sh_test{
+ Blueprint: simpleModule("filegroup", "android.hardware.bluetooth@1.1-service.sim") +
+ simpleModule("filegroup", "android.hardware.bluetooth@1.1-impl-sim") +
+ simpleModule("filegroup", "libc++") +
+ simpleModule("filegroup", "libcrypto") + `sh_test{
name: "sts-rootcanal-sidebins",
src: "empty.sh",
test_suites: [
@@ -47,28 +54,37 @@ func TestShTestSimple(t *testing.T) {
}`,
ExpectedBazelTargets: []string{
MakeBazelTarget("sh_test", "sts-rootcanal-sidebins", AttrNameToString{
- "srcs": `["empty.sh"]`,
+ "srcs": `["empty.sh"]`,
+ "runs_on": `["device"]`,
"data": `[
"android.hardware.bluetooth@1.1-service.sim.rc",
- "android.hardware.bluetooth@1.1-service.sim",
- "android.hardware.bluetooth@1.1-impl-sim",
- "libc++",
- "libcrypto",
+ ":android.hardware.bluetooth@1.1-service.sim",
+ ":android.hardware.bluetooth@1.1-impl-sim",
+ ":libc++",
+ ":libcrypto",
+ ]`,
+ "data_bins": `[
+ ":android.hardware.bluetooth@1.1-service.sim",
+ ":android.hardware.bluetooth@1.1-impl-sim",
]`,
- "test_config": `"art-gtests-target-install-apex.xml"`,
- "test_config_template": `":art-run-test-target-template"`,
- "auto_gen_config": "False",
- "tags": `["no-remote"]`,
+ "tags": `["no-remote"]`,
})},
})
}
func TestShTestHostSimple(t *testing.T) {
- RunBp2BuildTestCase(t, func(ctx android.RegistrationContext) {}, Bp2buildTestCase{
- Description: "sh_test_host test",
- ModuleTypeUnderTest: "sh_test_host",
+ RunBp2BuildTestCase(t, func(ctx android.RegistrationContext) {
+ ctx.RegisterModuleType("filegroup", android.FileGroupFactory)
+ }, Bp2buildTestCase{
+ Description: "sh_test_host test",
+ ModuleTypeUnderTest: "sh_test_host",
+ StubbedBuildDefinitions: []string{"android.hardware.bluetooth@1.1-service.sim",
+ "android.hardware.bluetooth@1.1-impl-sim", "libc++", "libcrypto"},
ModuleTypeUnderTestFactory: sh.ShTestHostFactory,
- Blueprint: `sh_test_host{
+ Blueprint: simpleModule("filegroup", "android.hardware.bluetooth@1.1-service.sim") +
+ simpleModule("filegroup", "android.hardware.bluetooth@1.1-impl-sim") +
+ simpleModule("filegroup", "libc++") +
+ simpleModule("filegroup", "libcrypto") + `sh_test_host{
name: "sts-rootcanal-sidebins",
src: "empty.sh",
test_suites: [
@@ -89,18 +105,20 @@ func TestShTestHostSimple(t *testing.T) {
}`,
ExpectedBazelTargets: []string{
MakeBazelTarget("sh_test", "sts-rootcanal-sidebins", AttrNameToString{
- "srcs": `["empty.sh"]`,
+ "srcs": `["empty.sh"]`,
+ "runs_on": `["host_without_device"]`,
"data": `[
"android.hardware.bluetooth@1.1-service.sim.rc",
- "android.hardware.bluetooth@1.1-service.sim",
- "android.hardware.bluetooth@1.1-impl-sim",
- "libc++",
- "libcrypto",
+ ":android.hardware.bluetooth@1.1-service.sim",
+ ":android.hardware.bluetooth@1.1-impl-sim",
+ ":libc++",
+ ":libcrypto",
+ ]`,
+ "data_bins": `[
+ ":android.hardware.bluetooth@1.1-service.sim",
+ ":android.hardware.bluetooth@1.1-impl-sim",
]`,
- "tags": `["no-remote"]`,
- "test_config": `"art-gtests-target-install-apex.xml"`,
- "test_config_template": `":art-run-test-target-template"`,
- "auto_gen_config": "False",
+ "tags": `["no-remote"]`,
"target_compatible_with": `select({
"//build/bazel/platforms/os:android": ["@platforms//:incompatible"],
"//conditions:default": [],
@@ -109,12 +127,20 @@ func TestShTestHostSimple(t *testing.T) {
})
}
-func TestShTestSimpleUnset(t *testing.T) {
- RunBp2BuildTestCase(t, func(ctx android.RegistrationContext) {}, Bp2buildTestCase{
- Description: "sh_test test",
- ModuleTypeUnderTest: "sh_test",
+func TestShTestAutogen(t *testing.T) {
+ RunBp2BuildTestCase(t, func(ctx android.RegistrationContext) {
+ ctx.RegisterModuleType("filegroup", android.FileGroupFactory)
+ }, Bp2buildTestCase{
+ Description: "sh_test test",
+ ModuleTypeUnderTest: "sh_test",
+ StubbedBuildDefinitions: []string{"android.hardware.bluetooth@1.1-service.sim",
+ "android.hardware.bluetooth@1.1-impl-sim", "libc++", "libcrypto", "art-run-test-target-template"},
ModuleTypeUnderTestFactory: sh.ShTestFactory,
- Blueprint: `sh_test{
+ Blueprint: simpleModule("filegroup", "android.hardware.bluetooth@1.1-service.sim") +
+ simpleModule("filegroup", "android.hardware.bluetooth@1.1-impl-sim") +
+ simpleModule("filegroup", "libc++") +
+ simpleModule("filegroup", "libcrypto") +
+ simpleModule("filegroup", "art-run-test-target-template") + `sh_test{
name: "sts-rootcanal-sidebins",
src: "empty.sh",
test_suites: [
@@ -127,18 +153,134 @@ func TestShTestSimpleUnset(t *testing.T) {
],
data: ["android.hardware.bluetooth@1.1-service.sim.rc"],
data_libs: ["libc++","libcrypto"],
+ test_config: "art-gtests-target-install-apex.xml",
+ test_config_template: ":art-run-test-target-template",
+ auto_gen_config: true,
test_options:{tags: ["no-remote"],
},
}`,
ExpectedBazelTargets: []string{
MakeBazelTarget("sh_test", "sts-rootcanal-sidebins", AttrNameToString{
- "srcs": `["empty.sh"]`,
+ "srcs": `["empty.sh"]`,
+ "runs_on": `["device"]`,
+ "auto_generate_test_config": "True",
+ "target_compatible_with": `["//build/bazel/platforms/os:android"]`,
+ "template_test_config": `":art-run-test-target-template"`,
"data": `[
"android.hardware.bluetooth@1.1-service.sim.rc",
+ ":android.hardware.bluetooth@1.1-service.sim",
+ ":android.hardware.bluetooth@1.1-impl-sim",
+ ":libc++",
+ ":libcrypto",
+ ]`,
+ "data_bins": `[
+ ":android.hardware.bluetooth@1.1-service.sim",
+ ":android.hardware.bluetooth@1.1-impl-sim",
+ ]`,
+ "tags": `["no-remote"]`,
+ })},
+ })
+}
+
+func TestShTestHostAutogen(t *testing.T) {
+ RunBp2BuildTestCase(t, func(ctx android.RegistrationContext) {
+ ctx.RegisterModuleType("filegroup", android.FileGroupFactory)
+ }, Bp2buildTestCase{
+ Description: "sh_test_host test",
+ ModuleTypeUnderTest: "sh_test_host",
+ StubbedBuildDefinitions: []string{"android.hardware.bluetooth@1.1-service.sim",
+ "android.hardware.bluetooth@1.1-impl-sim", "libc++", "libcrypto", "art-run-test-target-template"},
+ ModuleTypeUnderTestFactory: sh.ShTestHostFactory,
+ Blueprint: simpleModule("filegroup", "android.hardware.bluetooth@1.1-service.sim") +
+ simpleModule("filegroup", "android.hardware.bluetooth@1.1-impl-sim") +
+ simpleModule("filegroup", "libc++") +
+ simpleModule("filegroup", "libcrypto") +
+ simpleModule("filegroup", "art-run-test-target-template") + `sh_test_host{
+ name: "sts-rootcanal-sidebins",
+ src: "empty.sh",
+ test_suites: [
+ "sts",
+ "sts-lite",
+ ],
+ data_bins: [
"android.hardware.bluetooth@1.1-service.sim",
- "android.hardware.bluetooth@1.1-impl-sim",
- "libc++",
- "libcrypto",
+ "android.hardware.bluetooth@1.1-impl-sim"
+ ],
+ data: ["android.hardware.bluetooth@1.1-service.sim.rc"],
+ data_libs: ["libc++","libcrypto"],
+ test_config: "art-gtests-target-install-apex.xml",
+ test_config_template: ":art-run-test-target-template",
+ auto_gen_config: true,
+ test_options:{tags: ["no-remote"],
+ },
+}`,
+ ExpectedBazelTargets: []string{
+ MakeBazelTarget("sh_test", "sts-rootcanal-sidebins", AttrNameToString{
+ "srcs": `["empty.sh"]`,
+ "runs_on": `["host_without_device"]`,
+ "auto_generate_test_config": "True",
+ "target_compatible_with": `select({
+ "//build/bazel/platforms/os:android": ["@platforms//:incompatible"],
+ "//conditions:default": [],
+ })`,
+ "template_test_config": `":art-run-test-target-template"`,
+ "data": `[
+ "android.hardware.bluetooth@1.1-service.sim.rc",
+ ":android.hardware.bluetooth@1.1-service.sim",
+ ":android.hardware.bluetooth@1.1-impl-sim",
+ ":libc++",
+ ":libcrypto",
+ ]`,
+ "data_bins": `[
+ ":android.hardware.bluetooth@1.1-service.sim",
+ ":android.hardware.bluetooth@1.1-impl-sim",
+ ]`,
+ "tags": `["no-remote"]`,
+ })},
+ })
+}
+func TestShTestSimpleUnset(t *testing.T) {
+ RunBp2BuildTestCase(t, func(ctx android.RegistrationContext) {
+ ctx.RegisterModuleType("filegroup", android.FileGroupFactory)
+ }, Bp2buildTestCase{
+ Description: "sh_test test",
+ ModuleTypeUnderTest: "sh_test",
+ StubbedBuildDefinitions: []string{"android.hardware.bluetooth@1.1-service.sim",
+ "android.hardware.bluetooth@1.1-impl-sim", "libc++", "libcrypto"},
+ ModuleTypeUnderTestFactory: sh.ShTestFactory,
+ Blueprint: simpleModule("filegroup", "android.hardware.bluetooth@1.1-service.sim") +
+ simpleModule("filegroup", "android.hardware.bluetooth@1.1-impl-sim") +
+ simpleModule("filegroup", "libc++") +
+ simpleModule("filegroup", "libcrypto") + `sh_test{
+ name: "sts-rootcanal-sidebins",
+ src: "empty.sh",
+ test_suites: [
+ "sts",
+ "sts-lite",
+ ],
+ data_bins: [
+ "android.hardware.bluetooth@1.1-service.sim",
+ "android.hardware.bluetooth@1.1-impl-sim"
+ ],
+ data: ["android.hardware.bluetooth@1.1-service.sim.rc"],
+ data_libs: ["libc++","libcrypto"],
+ test_options:{tags: ["no-remote"],
+ },
+}`,
+ ExpectedBazelTargets: []string{
+ MakeBazelTarget("sh_test", "sts-rootcanal-sidebins", AttrNameToString{
+ "srcs": `["empty.sh"]`,
+ "runs_on": `["device"]`,
+ "data": `[
+ "android.hardware.bluetooth@1.1-service.sim.rc",
+ ":android.hardware.bluetooth@1.1-service.sim",
+ ":android.hardware.bluetooth@1.1-impl-sim",
+ ":libc++",
+ ":libcrypto",
+ ]`,
+ "data_bins": `[
+ ":android.hardware.bluetooth@1.1-service.sim",
+ ":android.hardware.bluetooth@1.1-impl-sim",
]`,
"tags": `["no-remote"]`,
})},
@@ -146,11 +288,18 @@ func TestShTestSimpleUnset(t *testing.T) {
}
func TestShTestHostSimpleUnset(t *testing.T) {
- RunBp2BuildTestCase(t, func(ctx android.RegistrationContext) {}, Bp2buildTestCase{
+ RunBp2BuildTestCase(t, func(ctx android.RegistrationContext) {
+ ctx.RegisterModuleType("filegroup", android.FileGroupFactory)
+ }, Bp2buildTestCase{
Description: "sh_test_host test",
ModuleTypeUnderTest: "sh_test_host",
ModuleTypeUnderTestFactory: sh.ShTestHostFactory,
- Blueprint: `sh_test_host{
+ StubbedBuildDefinitions: []string{"android.hardware.bluetooth@1.1-service.sim",
+ "android.hardware.bluetooth@1.1-impl-sim", "libc++", "libcrypto"},
+ Blueprint: simpleModule("filegroup", "android.hardware.bluetooth@1.1-service.sim") +
+ simpleModule("filegroup", "android.hardware.bluetooth@1.1-impl-sim") +
+ simpleModule("filegroup", "libc++") +
+ simpleModule("filegroup", "libcrypto") + `sh_test_host{
name: "sts-rootcanal-sidebins",
src: "empty.sh",
test_suites: [
@@ -168,13 +317,18 @@ func TestShTestHostSimpleUnset(t *testing.T) {
}`,
ExpectedBazelTargets: []string{
MakeBazelTarget("sh_test", "sts-rootcanal-sidebins", AttrNameToString{
- "srcs": `["empty.sh"]`,
+ "srcs": `["empty.sh"]`,
+ "runs_on": `["host_without_device"]`,
"data": `[
"android.hardware.bluetooth@1.1-service.sim.rc",
- "android.hardware.bluetooth@1.1-service.sim",
- "android.hardware.bluetooth@1.1-impl-sim",
- "libc++",
- "libcrypto",
+ ":android.hardware.bluetooth@1.1-service.sim",
+ ":android.hardware.bluetooth@1.1-impl-sim",
+ ":libc++",
+ ":libcrypto",
+ ]`,
+ "data_bins": `[
+ ":android.hardware.bluetooth@1.1-service.sim",
+ ":android.hardware.bluetooth@1.1-impl-sim",
]`,
"tags": `["no-remote"]`,
"target_compatible_with": `select({
diff --git a/sh/sh_binary.go b/sh/sh_binary.go
index 79a885fa9..2e869f447 100644
--- a/sh/sh_binary.go
+++ b/sh/sh_binary.go
@@ -575,12 +575,12 @@ type bazelShBinaryAttributes struct {
}
type bazelShTestAttributes struct {
- Srcs bazel.LabelListAttribute
- Data bazel.LabelListAttribute
- Tags bazel.StringListAttribute
- Test_config *string
- Test_config_template *string
- Auto_gen_config *bool
+ Srcs bazel.LabelListAttribute
+ Data bazel.LabelListAttribute
+ Data_bins bazel.LabelListAttribute
+ Tags bazel.StringListAttribute
+ Runs_on bazel.StringListAttribute
+ tradefed.TestConfigAttributes
}
func (m *ShBinary) ConvertWithBp2build(ctx android.Bp2buildMutatorContext) {
@@ -615,28 +615,42 @@ func (m *ShTest) ConvertWithBp2build(ctx android.Bp2buildMutatorContext) {
srcs := bazel.MakeLabelListAttribute(
android.BazelLabelForModuleSrc(ctx, []string{*m.properties.Src}))
- combinedData := append(m.testProperties.Data, m.testProperties.Data_bins...)
- combinedData = append(combinedData, m.testProperties.Data_libs...)
+ dataBins := bazel.MakeLabelListAttribute(android.BazelLabelForModuleDeps(ctx, m.testProperties.Data_bins))
- data := bazel.MakeLabelListAttribute(
- android.BazelLabelForModuleSrc(ctx, combinedData))
+ var combinedData bazel.LabelList
+ combinedData.Append(android.BazelLabelForModuleSrc(ctx, m.testProperties.Data))
+ combinedData.Append(android.BazelLabelForModuleDeps(ctx, m.testProperties.Data_bins))
+ combinedData.Append(android.BazelLabelForModuleDeps(ctx, m.testProperties.Data_libs))
+ data := bazel.MakeLabelListAttribute(combinedData)
tags := bazel.MakeStringListAttribute(
m.testProperties.Test_options.Tags)
- test_config := m.testProperties.Test_config
+ testConfigAttributes := tradefed.GetTestConfigAttributes(
+ ctx,
+ m.testProperties.Test_config,
+ []string{},
+ m.testProperties.Auto_gen_config,
+ m.testProperties.Test_suites,
+ m.testProperties.Test_config_template,
+ nil,
+ nil,
+ )
- test_config_template := m.testProperties.Test_config_template
+ unitTest := m.testProperties.Test_options.Unit_test
- auto_gen_config := m.testProperties.Auto_gen_config
+ runs_on := bazel.MakeStringListAttribute(android.RunsOn(
+ m.ModuleBase.HostSupported(),
+ m.ModuleBase.DeviceSupported(),
+ (unitTest != nil && *unitTest)))
attrs := &bazelShTestAttributes{
Srcs: srcs,
Data: data,
+ Data_bins: dataBins,
Tags: tags,
- Test_config: test_config,
- Test_config_template: test_config_template,
- Auto_gen_config: auto_gen_config,
+ Runs_on: runs_on,
+ TestConfigAttributes: testConfigAttributes,
}
props := bazel.BazelTargetModuleProperties{