Implement test_suite.
test_suite supports all test rules with InstallInTestCases set. For these modules, all files insstalled in InstallFilesInfo.InstallFiles
are:
1. Symlinked under out/soong/packaging/<test_suite>
2. The relative path under out/soong/packaging/<test_suite> are added into manifest
Change-Id: I540a19b0a269618783a90d85975df7c110d8be9f
Bug: 372945132
diff --git a/tradefed_modules/test_suite_test.go b/tradefed_modules/test_suite_test.go
index 647ba4d..57e760e 100644
--- a/tradefed_modules/test_suite_test.go
+++ b/tradefed_modules/test_suite_test.go
@@ -16,12 +16,15 @@
import (
"android/soong/android"
"android/soong/java"
+ "encoding/json"
+ "slices"
"testing"
)
func TestTestSuites(t *testing.T) {
t.Parallel()
ctx := android.GroupFixturePreparers(
+ android.PrepareForTestWithArchMutator,
java.PrepareForTestWithJavaDefaultModules,
android.FixtureRegisterWithContext(RegisterTestSuiteBuildComponents),
).RunTestWithBp(t, `
@@ -45,9 +48,44 @@
}
`)
manifestPath := ctx.ModuleForTests("my-suite", "").Output("out/soong/test_suites/my-suite/my-suite.json")
- got := android.ContentFromFileRuleForTests(t, ctx.TestContext, manifestPath)
- want := `{"name": "my-suite"}` + "\n"
- if got != want {
- t.Errorf("my-suite.json content was %q, want %q", got, want)
+ var actual testSuiteManifest
+ if err := json.Unmarshal([]byte(android.ContentFromFileRuleForTests(t, ctx.TestContext, manifestPath)), &actual); err != nil {
+ t.Errorf("failed to unmarshal manifest: %v", err)
}
+ slices.Sort(actual.Files)
+
+ expected := testSuiteManifest{
+ Name: "my-suite",
+ Files: []string{
+ "target/testcases/TestModule1/TestModule1.config",
+ "target/testcases/TestModule1/arm64/TestModule1.apk",
+ "target/testcases/TestModule2/TestModule2.config",
+ "target/testcases/TestModule2/arm64/TestModule2.apk",
+ },
+ }
+
+ android.AssertDeepEquals(t, "manifests differ", expected, actual)
+}
+
+func TestTestSuitesNotInstalledInTestcases(t *testing.T) {
+ t.Parallel()
+ android.GroupFixturePreparers(
+ android.PrepareForTestWithArchMutator,
+ java.PrepareForTestWithJavaDefaultModules,
+ android.FixtureRegisterWithContext(RegisterTestSuiteBuildComponents),
+ ).ExtendWithErrorHandler(android.FixtureExpectsAllErrorsToMatchAPattern([]string{
+ `"SomeHostTest" is not installed in testcases`,
+ })).RunTestWithBp(t, `
+ java_test_host {
+ name: "SomeHostTest",
+ srcs: ["a.java"],
+ }
+ test_suite {
+ name: "my-suite",
+ description: "a test suite",
+ tests: [
+ "SomeHostTest",
+ ]
+ }
+ `)
}