diff --git a/android/androidmk.go b/android/androidmk.go index 063830b2c..a670656b7 100644 --- a/android/androidmk.go +++ b/android/androidmk.go @@ -177,6 +177,18 @@ func (a *AndroidMkEntries) AddStrings(name string, value ...string) { a.EntryMap[name] = append(a.EntryMap[name], value...) } +// AddCompatibilityTestSuites adds the supplied test suites to the EntryMap, with special handling +// for partial MTS test suites. +func (a *AndroidMkEntries) AddCompatibilityTestSuites(suites ...string) { + // MTS supports a full test suite and partial per-module MTS test suites, with naming mts-${MODULE}. + // To reduce repetition, if we find a partial MTS test suite without an full MTS test suite, + // we add the full test suite to our list. + if PrefixInList(suites, "mts-") && !InList("mts", suites) { + suites = append(suites, "mts") + } + a.AddStrings("LOCAL_COMPATIBILITY_SUITE", suites...) +} + // The contributions to the dist. type distContributions struct { // List of goals and the dist copy instructions. diff --git a/android/csuite_config.go b/android/csuite_config.go index a5b15331a..bf24d98c7 100644 --- a/android/csuite_config.go +++ b/android/csuite_config.go @@ -44,7 +44,7 @@ func (me *CSuiteConfig) AndroidMkEntries() []AndroidMkEntries { if me.properties.Test_config != nil { entries.SetString("LOCAL_TEST_CONFIG", *me.properties.Test_config) } - entries.AddStrings("LOCAL_COMPATIBILITY_SUITE", "csuite") + entries.AddCompatibilityTestSuites("csuite") }, } return []AndroidMkEntries{androidMkEntries} diff --git a/cc/androidmk.go b/cc/androidmk.go index d32e4de8f..320e69b4f 100644 --- a/cc/androidmk.go +++ b/cc/androidmk.go @@ -334,8 +334,7 @@ func (benchmark *benchmarkDecorator) AndroidMkEntries(ctx AndroidMkContext, entr entries.Class = "NATIVE_TESTS" entries.ExtraEntries = append(entries.ExtraEntries, func(entries *android.AndroidMkEntries) { if len(benchmark.Properties.Test_suites) > 0 { - entries.SetString("LOCAL_COMPATIBILITY_SUITE", - strings.Join(benchmark.Properties.Test_suites, " ")) + entries.AddCompatibilityTestSuites(benchmark.Properties.Test_suites...) } if benchmark.testConfig != nil { entries.SetString("LOCAL_FULL_TEST_CONFIG", benchmark.testConfig.String()) @@ -360,8 +359,7 @@ func (test *testBinary) AndroidMkEntries(ctx AndroidMkContext, entries *android. } entries.ExtraEntries = append(entries.ExtraEntries, func(entries *android.AndroidMkEntries) { if len(test.Properties.Test_suites) > 0 { - entries.SetString("LOCAL_COMPATIBILITY_SUITE", - strings.Join(test.Properties.Test_suites, " ")) + entries.AddCompatibilityTestSuites(test.Properties.Test_suites...) } if test.testConfig != nil { entries.SetString("LOCAL_FULL_TEST_CONFIG", test.testConfig.String()) diff --git a/java/androidmk.go b/java/androidmk.go index 25369ad9a..7c06f32f8 100644 --- a/java/androidmk.go +++ b/java/androidmk.go @@ -139,9 +139,9 @@ func (library *Library) AndroidMkEntries() []android.AndroidMkEntries { func testSuiteComponent(entries *android.AndroidMkEntries, test_suites []string) { entries.SetString("LOCAL_MODULE_TAGS", "tests") if len(test_suites) > 0 { - entries.AddStrings("LOCAL_COMPATIBILITY_SUITE", test_suites...) + entries.AddCompatibilityTestSuites(test_suites...) } else { - entries.SetString("LOCAL_COMPATIBILITY_SUITE", "null-suite") + entries.AddCompatibilityTestSuites("null-suite") } } diff --git a/python/androidmk.go b/python/androidmk.go index e60c5385b..60637d39a 100644 --- a/python/androidmk.go +++ b/python/androidmk.go @@ -49,7 +49,7 @@ func (p *binaryDecorator) AndroidMk(base *Module, entries *android.AndroidMkEntr entries.Class = "EXECUTABLES" entries.ExtraEntries = append(entries.ExtraEntries, func(entries *android.AndroidMkEntries) { - entries.AddStrings("LOCAL_COMPATIBILITY_SUITE", p.binaryProperties.Test_suites...) + entries.AddCompatibilityTestSuites(p.binaryProperties.Test_suites...) }) base.subAndroidMk(entries, p.pythonInstaller) } @@ -58,7 +58,7 @@ func (p *testDecorator) AndroidMk(base *Module, entries *android.AndroidMkEntrie entries.Class = "NATIVE_TESTS" entries.ExtraEntries = append(entries.ExtraEntries, func(entries *android.AndroidMkEntries) { - entries.AddStrings("LOCAL_COMPATIBILITY_SUITE", p.binaryDecorator.binaryProperties.Test_suites...) + entries.AddCompatibilityTestSuites(p.binaryDecorator.binaryProperties.Test_suites...) if p.testConfig != nil { entries.SetString("LOCAL_FULL_TEST_CONFIG", p.testConfig.String()) } diff --git a/rust/androidmk.go b/rust/androidmk.go index 4e8b14d05..c181d676e 100644 --- a/rust/androidmk.go +++ b/rust/androidmk.go @@ -90,7 +90,7 @@ func (test *testDecorator) AndroidMk(ctx AndroidMkContext, ret *android.AndroidM test.binaryDecorator.AndroidMk(ctx, ret) ret.Class = "NATIVE_TESTS" ret.ExtraEntries = append(ret.ExtraEntries, func(entries *android.AndroidMkEntries) { - entries.AddStrings("LOCAL_COMPATIBILITY_SUITE", test.Properties.Test_suites...) + entries.AddCompatibilityTestSuites(test.Properties.Test_suites...) if test.testConfig != nil { entries.SetString("LOCAL_FULL_TEST_CONFIG", test.testConfig.String()) } diff --git a/sh/sh_binary.go b/sh/sh_binary.go index 7e5c3440a..f86e1fdf7 100644 --- a/sh/sh_binary.go +++ b/sh/sh_binary.go @@ -398,7 +398,7 @@ func (s *ShTest) AndroidMkEntries() []android.AndroidMkEntries { func(entries *android.AndroidMkEntries) { s.customAndroidMkEntries(entries) entries.SetPath("LOCAL_MODULE_PATH", s.installDir.ToMakePath()) - entries.AddStrings("LOCAL_COMPATIBILITY_SUITE", s.testProperties.Test_suites...) + entries.AddCompatibilityTestSuites(s.testProperties.Test_suites...) if s.testConfig != nil { entries.SetPath("LOCAL_FULL_TEST_CONFIG", s.testConfig) }