Merge changes I804d3597,I6a25e2f6 into main
* changes:
Add module dependency checking testing method
Add droidstub modules for Soong java testing
diff --git a/java/testing.go b/java/testing.go
index 0b7e685..4461351 100644
--- a/java/testing.go
+++ b/java/testing.go
@@ -73,10 +73,15 @@
// Needed for various deps defined in GatherRequiredDepsForTest()
defaultJavaDir + "/a.java": nil,
defaultJavaDir + "/api/current.txt": nil,
+ defaultJavaDir + "/api/removed.txt": nil,
defaultJavaDir + "/api/system-current.txt": nil,
+ defaultJavaDir + "/api/system-removed.txt": nil,
defaultJavaDir + "/api/test-current.txt": nil,
+ defaultJavaDir + "/api/test-removed.txt": nil,
defaultJavaDir + "/api/module-lib-current.txt": nil,
+ defaultJavaDir + "/api/module-lib-removed.txt": nil,
defaultJavaDir + "/api/system-server-current.txt": nil,
+ defaultJavaDir + "/api/system-server-removed.txt": nil,
// Needed for R8 rules on apps
"build/make/core/proguard.flags": nil,
@@ -425,80 +430,96 @@
`, extra)
}
- type apiContributionStruct struct {
- name string
- apiSurface string
- apiFile string
+ type droidstubsStruct struct {
+ name string
+ apiSurface string
+ apiFile string
+ removedFile string
}
- var publicApiContribution = apiContributionStruct{
- name: "api-stubs-docs-non-updatable.api.contribution",
- apiSurface: "public",
- apiFile: "api/current.txt",
+ var publicDroidstubs = droidstubsStruct{
+ name: "api-stubs-docs-non-updatable",
+ apiSurface: "public",
+ apiFile: "api/current.txt",
+ removedFile: "api/removed.txt",
}
- var systemApiContribution = apiContributionStruct{
- name: "system-api-stubs-docs-non-updatable.api.contribution",
- apiSurface: "system",
- apiFile: "api/system-current.txt",
+ var systemDroidstubs = droidstubsStruct{
+ name: "system-api-stubs-docs-non-updatable",
+ apiSurface: "system",
+ apiFile: "api/system-current.txt",
+ removedFile: "api/system-removed.txt",
}
- var testApiContribution = apiContributionStruct{
- name: "test-api-stubs-docs-non-updatable.api.contribution",
- apiSurface: "test",
- apiFile: "api/test-current.txt",
+ var testDroidstubs = droidstubsStruct{
+ name: "test-api-stubs-docs-non-updatable",
+ apiSurface: "test",
+ apiFile: "api/test-current.txt",
+ removedFile: "api/test-removed.txt",
}
- var moduleLibApiContribution = apiContributionStruct{
- name: "module-lib-api-stubs-docs-non-updatable.api.contribution",
- apiSurface: "module-lib",
- apiFile: "api/module-lib-current.txt",
+ var moduleLibDroidstubs = droidstubsStruct{
+ name: "module-lib-api-stubs-docs-non-updatable",
+ apiSurface: "module-lib",
+ apiFile: "api/module-lib-current.txt",
+ removedFile: "api/module-lib-removed.txt",
}
- var systemServerApiContribution = apiContributionStruct{
+ var systemServerDroidstubs = droidstubsStruct{
// This module does not exist but is named this way for consistency
- name: "system-server-api-stubs-docs-non-updatable.api.contribution",
- apiSurface: "system-server",
- apiFile: "api/system-server-current.txt",
+ name: "system-server-api-stubs-docs-non-updatable",
+ apiSurface: "system-server",
+ apiFile: "api/system-server-current.txt",
+ removedFile: "api/system-server-removed.txt",
}
- var apiContributionStructs = []apiContributionStruct{
- publicApiContribution,
- systemApiContribution,
- testApiContribution,
- moduleLibApiContribution,
- systemServerApiContribution,
+ var droidstubsStructs = []droidstubsStruct{
+ publicDroidstubs,
+ systemDroidstubs,
+ testDroidstubs,
+ moduleLibDroidstubs,
+ systemServerDroidstubs,
}
- extraApiLibraryModules := map[string]apiContributionStruct{
- "android_stubs_current.from-text": publicApiContribution,
- "android_system_stubs_current.from-text": systemApiContribution,
- "android_test_stubs_current.from-text": testApiContribution,
- "android_module_lib_stubs_current.from-text": moduleLibApiContribution,
- "android_module_lib_stubs_current_full.from-text": moduleLibApiContribution,
- "android_system_server_stubs_current.from-text": systemServerApiContribution,
- "core.current.stubs.from-text": publicApiContribution,
- "legacy.core.platform.api.stubs.from-text": publicApiContribution,
- "stable.core.platform.api.stubs.from-text": publicApiContribution,
- "core-lambda-stubs.from-text": publicApiContribution,
- "android-non-updatable.stubs.from-text": publicApiContribution,
- "android-non-updatable.stubs.system.from-text": systemApiContribution,
- "android-non-updatable.stubs.test.from-text": testApiContribution,
- "android-non-updatable.stubs.module_lib.from-text": moduleLibApiContribution,
+ extraApiLibraryModules := map[string]droidstubsStruct{
+ "android_stubs_current.from-text": publicDroidstubs,
+ "android_system_stubs_current.from-text": systemDroidstubs,
+ "android_test_stubs_current.from-text": testDroidstubs,
+ "android_module_lib_stubs_current.from-text": moduleLibDroidstubs,
+ "android_module_lib_stubs_current_full.from-text": moduleLibDroidstubs,
+ "android_system_server_stubs_current.from-text": systemServerDroidstubs,
+ "core.current.stubs.from-text": publicDroidstubs,
+ "legacy.core.platform.api.stubs.from-text": publicDroidstubs,
+ "stable.core.platform.api.stubs.from-text": publicDroidstubs,
+ "core-lambda-stubs.from-text": publicDroidstubs,
+ "android-non-updatable.stubs.from-text": publicDroidstubs,
+ "android-non-updatable.stubs.system.from-text": systemDroidstubs,
+ "android-non-updatable.stubs.test.from-text": testDroidstubs,
+ "android-non-updatable.stubs.module_lib.from-text": moduleLibDroidstubs,
}
- for _, apiContribution := range apiContributionStructs {
+ for _, droidstubs := range droidstubsStructs {
bp += fmt.Sprintf(`
- java_api_contribution {
+ droidstubs {
name: "%s",
api_surface: "%s",
- api_file: "%s",
+ check_api: {
+ current: {
+ api_file: "%s",
+ removed_api_file: "%s",
+ }
+ }
}
- `, apiContribution.name, apiContribution.apiSurface, apiContribution.apiFile)
+ `,
+ droidstubs.name,
+ droidstubs.apiSurface,
+ droidstubs.apiFile,
+ droidstubs.removedFile,
+ )
}
- for libName, apiContribution := range extraApiLibraryModules {
+ for libName, droidstubs := range extraApiLibraryModules {
bp += fmt.Sprintf(`
java_api_library {
name: "%s",
api_contributions: ["%s"],
}
- `, libName, apiContribution.name)
+ `, libName, droidstubs.name+".api.contribution")
}
bp += `
@@ -553,7 +574,7 @@
return bp
}
-func CheckModuleDependencies(t *testing.T, ctx *android.TestContext, name, variant string, expected []string) {
+func getModuleDependencies(t *testing.T, ctx *android.TestContext, name, variant string) []string {
t.Helper()
module := ctx.ModuleForTests(name, variant).Module()
deps := []string{}
@@ -562,11 +583,29 @@
})
sort.Strings(deps)
+ return deps
+}
+
+// CheckModuleDependencies checks if the expected dependencies of the module are
+// identical to the actual dependencies.
+func CheckModuleDependencies(t *testing.T, ctx *android.TestContext, name, variant string, expected []string) {
+ deps := getModuleDependencies(t, ctx, name, variant)
+
if actual := deps; !reflect.DeepEqual(expected, actual) {
t.Errorf("expected %#q, found %#q", expected, actual)
}
}
+// CheckModuleHasDependency returns true if the module depends on the expected dependency.
+func CheckModuleHasDependency(t *testing.T, ctx *android.TestContext, name, variant string, expected string) bool {
+ for _, dep := range getModuleDependencies(t, ctx, name, variant) {
+ if dep == expected {
+ return true
+ }
+ }
+ return false
+}
+
// CheckPlatformBootclasspathModules returns the apex:module pair for the modules depended upon by
// the platform-bootclasspath module.
func CheckPlatformBootclasspathModules(t *testing.T, result *android.TestResult, name string, expected []string) {