Add a new test_options.tags attribute to customize test execution

The `test_options.tags` attribute provides additional metadata to
customize test execution by downstream test runners. The tags have no
special meaning to Soong.

Bug: 240928948
Test: manually add `test_options.tags` attribute and run:
    $ refreshmod && \
      cat out/target/product/generic/module-info.json |\
      grep <tags>
Change-Id: I35267f6608e48c6184e56530ef128d93b2f97522
This commit is contained in:
Zhenhuang Wang
2022-08-22 16:00:05 +08:00
parent f5b0c2a178
commit 409d27712f
2 changed files with 33 additions and 1 deletions

View File

@@ -942,12 +942,19 @@ type CommonTestOptions struct {
// If the test is a hostside (no device required) unittest that shall be run // If the test is a hostside (no device required) unittest that shall be run
// during presubmit check. // during presubmit check.
Unit_test *bool Unit_test *bool
// Tags provide additional metadata to customize test execution by downstream
// test runners. The tags have no special meaning to Soong.
Tags []string
} }
// SetAndroidMkEntries sets AndroidMkEntries according to the value of base // SetAndroidMkEntries sets AndroidMkEntries according to the value of base
// `test_options`. // `test_options`.
func (t *CommonTestOptions) SetAndroidMkEntries(entries *AndroidMkEntries) { func (t *CommonTestOptions) SetAndroidMkEntries(entries *AndroidMkEntries) {
entries.SetBoolIfTrue("LOCAL_IS_UNIT_TEST", Bool(t.Unit_test)) entries.SetBoolIfTrue("LOCAL_IS_UNIT_TEST", Bool(t.Unit_test))
if len(t.Tags) > 0 {
entries.AddStrings("LOCAL_TEST_OPTIONS_TAGS", t.Tags...)
}
} }
// The key to use in TaggedDistFiles when a Dist structure does not specify a // The key to use in TaggedDistFiles when a Dist structure does not specify a

View File

@@ -912,7 +912,7 @@ func TestSortedUniqueNamedPaths(t *testing.T) {
} }
} }
func TestProcessCommonTestOptions(t *testing.T) { func TestSetAndroidMkEntriesWithTestOptions(t *testing.T) {
tests := []struct { tests := []struct {
name string name string
testOptions CommonTestOptions testOptions CommonTestOptions
@@ -939,6 +939,31 @@ func TestProcessCommonTestOptions(t *testing.T) {
}, },
expected: map[string][]string{}, expected: map[string][]string{},
}, },
{
name: "empty tag",
testOptions: CommonTestOptions{
Tags: []string{},
},
expected: map[string][]string{},
},
{
name: "single tag",
testOptions: CommonTestOptions{
Tags: []string{"tag1"},
},
expected: map[string][]string{
"LOCAL_TEST_OPTIONS_TAGS": []string{"tag1"},
},
},
{
name: "multiple tag",
testOptions: CommonTestOptions{
Tags: []string{"tag1", "tag2", "tag3"},
},
expected: map[string][]string{
"LOCAL_TEST_OPTIONS_TAGS": []string{"tag1", "tag2", "tag3"},
},
},
} }
for _, tt := range tests { for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) { t.Run(tt.name, func(t *testing.T) {