modify cc_binary type to cc_test for test modules

1. When a cc_binary type module has the non-empty test_suites field,
modify the type to cc_test;
2. Unit tests were also added.

Bug: 193071602
Test: m androidmk
Test: TreeHugger
Change-Id: Icfaa79998616c02bb086f81d194163feafb4c116
This commit is contained in:
Yuntao Xu
2021-07-07 21:03:21 -07:00
parent a56be7d781
commit 8f884a0a69
2 changed files with 57 additions and 1 deletions

View File

@@ -392,7 +392,7 @@ func rewriteTestModuleTypes(f *Fixer) error {
continue
}
if !strings.HasPrefix(mod.Type, "java_") && !strings.HasPrefix(mod.Type, "android_") {
if !strings.HasPrefix(mod.Type, "java_") && !strings.HasPrefix(mod.Type, "android_") && mod.Type != "cc_binary" {
continue
}
@@ -420,6 +420,14 @@ func rewriteTestModuleTypes(f *Fixer) error {
mod.Type = "java_test_host"
}
}
// when a cc_binary module has a nonempty test_suites field, modify the type to cc_test
if mod.Type == "cc_binary" {
hasTestSuites := hasNonEmptyLiteralListProperty(mod, "test_suites")
if hasTestSuites {
mod.Type = "cc_test"
}
}
}
return nil

View File

@@ -1124,3 +1124,51 @@ func TestRewriteRuntimeResourceOverlay(t *testing.T) {
})
}
}
func TestRewriteTestModuleTypes(t *testing.T) {
tests := []struct {
name string
in string
out string
}{
{
name: "cc_binary with test_suites",
in: `
cc_binary {
name: "foo",
srcs: ["srcs"],
test_suites: ["test_suite1"],
}
`,
out: `
cc_test {
name: "foo",
srcs: ["srcs"],
test_suites: ["test_suite1"],
}
`,
},
{
name: "cc_binary without test_suites",
in: `
cc_binary {
name: "foo",
srcs: ["srcs"],
}
`,
out: `
cc_binary {
name: "foo",
srcs: ["srcs"],
}
`,
},
}
for _, test := range tests {
t.Run(test.name, func(t *testing.T) {
runPass(t, test.in, test.out, func(fixer *Fixer) error {
return rewriteTestModuleTypes(fixer)
})
})
}
}