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:
parent
e94f26e2e8
commit
25c69eec45
3 changed files with 230 additions and 60 deletions
|
@ -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)
|
||||
|
|
|
@ -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({
|
||||
|
|
|
@ -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{
|
||||
|
|
Loading…
Reference in a new issue