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
This commit is contained in:
Jason Wu
2023-08-24 15:40:10 -04:00
parent e94f26e2e8
commit 25c69eec45
3 changed files with 230 additions and 60 deletions

View File

@@ -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",
]`,
"test_config": `"art-gtests-target-install-apex.xml"`,
"test_config_template": `":art-run-test-target-template"`,
"auto_gen_config": "False",
"tags": `["no-remote"]`,
"data_bins": `[
":android.hardware.bluetooth@1.1-service.sim",
":android.hardware.bluetooth@1.1-impl-sim",
]`,
"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",
]`,
"tags": `["no-remote"]`,
"test_config": `"art-gtests-target-install-apex.xml"`,
"test_config_template": `":art-run-test-target-template"`,
"auto_gen_config": "False",
"data_bins": `[
":android.hardware.bluetooth@1.1-service.sim",
":android.hardware.bluetooth@1.1-impl-sim",
]`,
"tags": `["no-remote"]`,
"target_compatible_with": `select({
"//build/bazel/platforms/os:android": ["@platforms//:incompatible"],
"//conditions:default": [],
@@ -109,12 +127,131 @@ 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: [
"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_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": `["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"
],
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: [
@@ -132,13 +269,18 @@ func TestShTestSimpleUnset(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",
]`,
"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({