Add droidstub modules for Soong java testing

Previously, only the essential java_api_library and
java_api_contribution modules were being added to the template bp file
for testing purpose. However, since the child change aosp/2640275
adds droidstubs that generates the java_api_contribution as the
dependency of the java_api_library modules, not adding the droidstubs
modules to the template bp file will lead to missing dependency errors
in Soong test cases that tests the from-text generation &
java_api_library functionality.

To prevent this, this change adds the droidstubs modules instead of the
auto generated java_api_contribution modules to the template bp file to
more closely align with the real life behavior.

Test: m nothing
Bug: 288624417
Change-Id: I6a25e2f6c5f1281e96eca15aa5eec7417635df3f
This commit is contained in:
Jihoon Kang
2023-10-09 17:53:04 +00:00
parent 0bf0865f83
commit 8f83dcd18c

View File

@@ -73,10 +73,15 @@ var prepareForTestWithFrameworkDeps = android.GroupFixturePreparers(
// 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 @@ func gatherRequiredDepsForTest() string {
`, 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 += `