diff --git a/androidmk/androidmk/androidmk_test.go b/androidmk/androidmk/androidmk_test.go index 21763613a..afde68b49 100644 --- a/androidmk/androidmk/androidmk_test.go +++ b/androidmk/androidmk/androidmk_test.go @@ -1688,6 +1688,21 @@ android_app { name: "foo", privileged: true } +`, + }, + { + desc: "convert android_app to android_test when having test_suites", + in: ` +include $(CLEAR_VARS) +LOCAL_MODULE := foo +LOCAL_COMPATIBILITY_SUITE := bar +include $(BUILD_PACKAGE) + `, + expected: ` +android_test { + name: "foo", + test_suites: ["bar"], +} `, }, } diff --git a/bpfix/bpfix/bpfix.go b/bpfix/bpfix/bpfix.go index 4f7d88ce6..94b28dc50 100644 --- a/bpfix/bpfix/bpfix.go +++ b/bpfix/bpfix/bpfix.go @@ -449,6 +449,7 @@ func rewriteTestModuleTypes(f *Fixer) error { } hasInstrumentationFor := hasNonEmptyLiteralStringProperty(mod, "instrumentation_for") + hasTestSuites := hasNonEmptyLiteralListProperty(mod, "test_suites") tags, _ := getLiteralListPropertyValue(mod, "tags") var hasTestsTag bool @@ -458,7 +459,7 @@ func rewriteTestModuleTypes(f *Fixer) error { } } - isTest := hasInstrumentationFor || hasTestsTag + isTest := hasInstrumentationFor || hasTestsTag || hasTestSuites if isTest { switch mod.Type { @@ -470,13 +471,7 @@ func rewriteTestModuleTypes(f *Fixer) error { mod.Type = "java_test" case "java_library_host": 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 { + case "cc_binary": mod.Type = "cc_test" } } diff --git a/bpfix/bpfix/bpfix_test.go b/bpfix/bpfix/bpfix_test.go index 17b3c2444..672e852d4 100644 --- a/bpfix/bpfix/bpfix_test.go +++ b/bpfix/bpfix/bpfix_test.go @@ -1436,6 +1436,38 @@ func TestRewriteTestModuleTypes(t *testing.T) { } `, }, + { + name: "android_app with android_test", + in: ` + android_app { + name: "foo", + srcs: ["srcs"], + test_suites: ["test_suite1"], + } + `, + out: ` + android_test { + name: "foo", + srcs: ["srcs"], + test_suites: ["test_suite1"], + } + `, + }, + { + name: "android_app without test_suites", + in: ` + android_app { + name: "foo", + srcs: ["srcs"], + } + `, + out: ` + android_app { + name: "foo", + srcs: ["srcs"], + } + `, + }, } for _, test := range tests { t.Run(test.name, func(t *testing.T) {