Merge changes from topic "support_libgtest_isolated" into main am: a263005e30

Original change: https://android-review.googlesource.com/c/platform/build/soong/+/2670011

Change-Id: I5b515253ed510d4df592833d07072fca96cb209f
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
Spandan Das
2023-07-26 18:47:05 +00:00
committed by Automerger Merge Worker
2 changed files with 53 additions and 29 deletions

View File

@@ -121,7 +121,6 @@ cc_test_library {
"//conditions:default": [], "//conditions:default": [],
})`, })`,
"gtest": "True", "gtest": "True",
"isolated": "True",
"local_includes": `["."]`, "local_includes": `["."]`,
"dynamic_deps": `[":cc_test_lib2"] + select({ "dynamic_deps": `[":cc_test_lib2"] + select({
"//build/bazel/platforms/os:android": [":foolib"], "//build/bazel/platforms/os:android": [":foolib"],
@@ -158,7 +157,6 @@ cc_test {
targets: []testBazelTarget{ targets: []testBazelTarget{
{"cc_test", "mytest", AttrNameToString{ {"cc_test", "mytest", AttrNameToString{
"gtest": "False", "gtest": "False",
"isolated": "False",
"local_includes": `["."]`, "local_includes": `["."]`,
"srcs": `["test.cpp"]`, "srcs": `["test.cpp"]`,
}, },
@@ -185,7 +183,6 @@ cc_test {
"local_includes": `["."]`, "local_includes": `["."]`,
"srcs": `["test.cpp"]`, "srcs": `["test.cpp"]`,
"gtest": "True", "gtest": "True",
"isolated": "True",
"deps": `[ "deps": `[
":libgtest_main", ":libgtest_main",
":libgtest", ":libgtest",
@@ -213,7 +210,6 @@ cc_test {
targets: []testBazelTarget{ targets: []testBazelTarget{
{"cc_test", "mytest", AttrNameToString{ {"cc_test", "mytest", AttrNameToString{
"gtest": "True", "gtest": "True",
"isolated": "True",
"local_includes": `["."]`, "local_includes": `["."]`,
"srcs": `["test.cpp"]`, "srcs": `["test.cpp"]`,
"target_compatible_with": `["//build/bazel/platforms/os:android"]`, "target_compatible_with": `["//build/bazel/platforms/os:android"]`,
@@ -244,7 +240,6 @@ cc_test {
targets: []testBazelTarget{ targets: []testBazelTarget{
{"cc_test", "mytest", AttrNameToString{ {"cc_test", "mytest", AttrNameToString{
"gtest": "True", "gtest": "True",
"isolated": "True",
"local_includes": `["."]`, "local_includes": `["."]`,
"srcs": `["test.cpp"]`, "srcs": `["test.cpp"]`,
"target_compatible_with": `["//build/bazel/platforms/os:android"]`, "target_compatible_with": `["//build/bazel/platforms/os:android"]`,
@@ -271,14 +266,14 @@ cc_test {
srcs: ["test.cpp"], srcs: ["test.cpp"],
test_config_template: "test_config_template.xml", test_config_template: "test_config_template.xml",
auto_gen_config: true, auto_gen_config: true,
isolated: true,
} }
` + simpleModuleDoNotConvertBp2build("cc_library_static", "libgtest_main") + ` + simpleModuleDoNotConvertBp2build("cc_library_static", "libgtest_isolated_main") +
simpleModuleDoNotConvertBp2build("cc_library_static", "libgtest"), simpleModuleDoNotConvertBp2build("cc_library", "liblog"),
targets: []testBazelTarget{ targets: []testBazelTarget{
{"cc_test", "mytest", AttrNameToString{ {"cc_test", "mytest", AttrNameToString{
"auto_generate_test_config": "True", "auto_generate_test_config": "True",
"gtest": "True", "gtest": "True",
"isolated": "True",
"local_includes": `["."]`, "local_includes": `["."]`,
"srcs": `["test.cpp"]`, "srcs": `["test.cpp"]`,
"target_compatible_with": `["//build/bazel/platforms/os:android"]`, "target_compatible_with": `["//build/bazel/platforms/os:android"]`,
@@ -288,10 +283,8 @@ cc_test {
]`, ]`,
"template_install_base": `"/data/local/tmp"`, "template_install_base": `"/data/local/tmp"`,
"template_test_config": `"test_config_template.xml"`, "template_test_config": `"test_config_template.xml"`,
"deps": `[ "deps": `[":libgtest_isolated_main"]`,
":libgtest_main", "dynamic_deps": `[":liblog"]`,
":libgtest",
]`,
}, },
}, },
}, },
@@ -312,7 +305,6 @@ cc_test {
targets: []testBazelTarget{ targets: []testBazelTarget{
{"cc_test", "mytest", AttrNameToString{ {"cc_test", "mytest", AttrNameToString{
"gtest": "True", "gtest": "True",
"isolated": "True",
"local_includes": `["."]`, "local_includes": `["."]`,
"srcs": `["test.cpp"]`, "srcs": `["test.cpp"]`,
"target_compatible_with": `["//build/bazel/platforms/os:android"]`, "target_compatible_with": `["//build/bazel/platforms/os:android"]`,
@@ -326,3 +318,29 @@ cc_test {
}) })
} }
func TestCcTest_WithIsolatedTurnedOn(t *testing.T) {
runCcTestTestCase(t, ccTestBp2buildTestCase{
description: "cc test that sets `isolated: true` should run with ligtest_isolated_main instead of libgtest_main",
blueprint: `
cc_test {
name: "mytest",
srcs: ["test.cpp"],
isolated: true,
}
` + simpleModuleDoNotConvertBp2build("cc_library_static", "libgtest_isolated_main") +
simpleModuleDoNotConvertBp2build("cc_library", "liblog"),
targets: []testBazelTarget{
{"cc_test", "mytest", AttrNameToString{
"gtest": "True",
"local_includes": `["."]`,
"srcs": `["test.cpp"]`,
"target_compatible_with": `["//build/bazel/platforms/os:android"]`,
"deps": `[":libgtest_isolated_main"]`,
"dynamic_deps": `[":liblog"]`,
},
},
},
})
}

View File

@@ -267,7 +267,7 @@ func (test *testDecorator) gtest() bool {
return BoolDefault(test.LinkerProperties.Gtest, true) return BoolDefault(test.LinkerProperties.Gtest, true)
} }
func (test *testDecorator) isolated(ctx BaseModuleContext) bool { func (test *testDecorator) isolated(ctx android.EarlyModuleContext) bool {
return BoolDefault(test.LinkerProperties.Isolated, false) return BoolDefault(test.LinkerProperties.Isolated, false)
} }
@@ -682,8 +682,7 @@ func (handler *ccTestBazelHandler) ProcessBazelQueryResponse(ctx android.ModuleC
type testBinaryAttributes struct { type testBinaryAttributes struct {
binaryAttributes binaryAttributes
Gtest bool Gtest bool
Isolated bool
tidyAttributes tidyAttributes
tradefed.TestConfigAttributes tradefed.TestConfigAttributes
@@ -721,15 +720,15 @@ func testBinaryBp2build(ctx android.TopDownMutatorContext, m *Module) {
m.convertTidyAttributes(ctx, &testBinaryAttrs.tidyAttributes) m.convertTidyAttributes(ctx, &testBinaryAttrs.tidyAttributes)
gtestIsolated := m.linker.(*testBinary).isolated(ctx)
for _, propIntf := range m.GetProperties() { for _, propIntf := range m.GetProperties() {
if testLinkerProps, ok := propIntf.(*TestLinkerProperties); ok { if testLinkerProps, ok := propIntf.(*TestLinkerProperties); ok {
testBinaryAttrs.Gtest = proptools.BoolDefault(testLinkerProps.Gtest, true) testBinaryAttrs.Gtest = proptools.BoolDefault(testLinkerProps.Gtest, true)
testBinaryAttrs.Isolated = proptools.BoolDefault(testLinkerProps.Isolated, true)
break break
} }
} }
addImplicitGtestDeps(ctx, &testBinaryAttrs) addImplicitGtestDeps(ctx, &testBinaryAttrs, gtestIsolated)
for _, testProps := range m.GetProperties() { for _, testProps := range m.GetProperties() {
if p, ok := testProps.(*TestBinaryProperties); ok { if p, ok := testProps.(*TestBinaryProperties); ok {
@@ -742,7 +741,7 @@ func testBinaryBp2build(ctx android.TopDownMutatorContext, m *Module) {
p.Auto_gen_config, p.Auto_gen_config,
p.Test_options.Test_suite_tag, p.Test_options.Test_suite_tag,
p.Test_config_template, p.Test_config_template,
getTradefedConfigOptions(ctx, p, testBinaryAttrs.Isolated), getTradefedConfigOptions(ctx, p, gtestIsolated),
&testInstallBase, &testInstallBase,
) )
testBinaryAttrs.TestConfigAttributes = testConfigAttributes testBinaryAttrs.TestConfigAttributes = testConfigAttributes
@@ -765,18 +764,25 @@ func testBinaryBp2build(ctx android.TopDownMutatorContext, m *Module) {
// cc_test that builds using gtest needs some additional deps // cc_test that builds using gtest needs some additional deps
// addImplicitGtestDeps makes these deps explicit in the generated BUILD files // addImplicitGtestDeps makes these deps explicit in the generated BUILD files
func addImplicitGtestDeps(ctx android.BazelConversionPathContext, attrs *testBinaryAttributes) { func addImplicitGtestDeps(ctx android.BazelConversionPathContext, attrs *testBinaryAttributes, gtestIsolated bool) {
addDepsAndDedupe := func(lla *bazel.LabelListAttribute, modules []string) {
moduleLabels := android.BazelLabelForModuleDeps(ctx, modules)
lla.Value.Append(moduleLabels)
// Dedupe
lla.Value = bazel.FirstUniqueBazelLabelList(lla.Value)
}
// this must be kept in sync with Soong's implementation in:
// https://cs.android.com/android/_/android/platform/build/soong/+/460fb2d6d546b5ab493a7e5479998c4933a80f73:cc/test.go;l=300-313;drc=ec7314336a2b35ea30ce5438b83949c28e3ac429;bpv=1;bpt=0
if attrs.Gtest { if attrs.Gtest {
gtestDeps := android.BazelLabelForModuleDeps( // TODO - b/244433197: Handle canUseSdk
ctx, if gtestIsolated {
[]string{ addDepsAndDedupe(&attrs.Deps, []string{"libgtest_isolated_main"})
addDepsAndDedupe(&attrs.Dynamic_deps, []string{"liblog"})
} else {
addDepsAndDedupe(&attrs.Deps, []string{
"libgtest_main", "libgtest_main",
"libgtest", "libgtest",
}, })
) }
attrs.Deps.Value.Append(gtestDeps)
// Dedupe
attrs.Deps.Value = bazel.FirstUniqueBazelLabelList(attrs.Deps.Value)
} }
// TODO(b/244432609): handle `isolated` property.
} }