Enable non-"everything" stubs generation in java_api_library
This change adds support to generate non-"everything" (i.e. "runtime" and "exportable") stubs in java_api_library, which generates the stubs from the api signature files. Unlike droidstubs module that generates "everything", "exportable" and "runtime" stubs in a single module, java_api_library generates a single set of stubs per module, which is set by the default-"everything" property `stubs_type`. This is because java_api_library is responsible for both generation and the compilation of the stubs srcjar, and compilation of the stubs srcjar are done in separate java_library modules for from-source stubs. Utilization of this feature will be done in a follow up change that generates the "exportable" java_api_library modules in java_sdk_library. Test: m nothing --no-skip-soong-tests Bug: 318009570 Change-Id: I1051544ac3bcdb3ba1f78bfec28eba4e9fad9c2d
This commit is contained in:
@@ -1756,6 +1756,7 @@ func TestJavaApiContributionEmptyApiFile(t *testing.T) {
|
||||
name: "bar",
|
||||
api_surface: "public",
|
||||
api_contributions: ["foo"],
|
||||
stubs_type: "everything",
|
||||
}
|
||||
`)
|
||||
}
|
||||
@@ -1792,12 +1793,14 @@ func TestJavaApiLibraryAndProviderLink(t *testing.T) {
|
||||
name: "bar1",
|
||||
api_surface: "public",
|
||||
api_contributions: ["foo1"],
|
||||
stubs_type: "everything",
|
||||
}
|
||||
|
||||
java_api_library {
|
||||
name: "bar2",
|
||||
api_surface: "system",
|
||||
api_contributions: ["foo1", "foo2"],
|
||||
stubs_type: "everything",
|
||||
}
|
||||
`)
|
||||
|
||||
@@ -1885,12 +1888,14 @@ func TestJavaApiLibraryAndDefaultsLink(t *testing.T) {
|
||||
name: "bar1",
|
||||
api_surface: "public",
|
||||
api_contributions: ["foo1"],
|
||||
stubs_type: "everything",
|
||||
}
|
||||
|
||||
java_api_library {
|
||||
name: "bar2",
|
||||
api_surface: "public",
|
||||
defaults:["baz1"],
|
||||
stubs_type: "everything",
|
||||
}
|
||||
|
||||
java_api_library {
|
||||
@@ -1898,6 +1903,7 @@ func TestJavaApiLibraryAndDefaultsLink(t *testing.T) {
|
||||
api_surface: "system",
|
||||
defaults:["baz1", "baz2"],
|
||||
api_contributions: ["foo4"],
|
||||
stubs_type: "everything",
|
||||
}
|
||||
`)
|
||||
|
||||
@@ -1962,12 +1968,14 @@ func TestJavaApiLibraryJarGeneration(t *testing.T) {
|
||||
name: "bar1",
|
||||
api_surface: "public",
|
||||
api_contributions: ["foo1"],
|
||||
stubs_type: "everything",
|
||||
}
|
||||
|
||||
java_api_library {
|
||||
name: "bar2",
|
||||
api_surface: "system",
|
||||
api_contributions: ["foo1", "foo2"],
|
||||
stubs_type: "everything",
|
||||
}
|
||||
`)
|
||||
|
||||
@@ -2044,6 +2052,7 @@ func TestJavaApiLibraryLibsLink(t *testing.T) {
|
||||
api_surface: "public",
|
||||
api_contributions: ["foo1"],
|
||||
libs: ["lib1"],
|
||||
stubs_type: "everything",
|
||||
}
|
||||
|
||||
java_api_library {
|
||||
@@ -2051,6 +2060,7 @@ func TestJavaApiLibraryLibsLink(t *testing.T) {
|
||||
api_surface: "system",
|
||||
api_contributions: ["foo1", "foo2"],
|
||||
libs: ["lib1", "lib2", "bar1"],
|
||||
stubs_type: "everything",
|
||||
}
|
||||
`)
|
||||
|
||||
@@ -2130,6 +2140,7 @@ func TestJavaApiLibraryStaticLibsLink(t *testing.T) {
|
||||
api_surface: "public",
|
||||
api_contributions: ["foo1"],
|
||||
static_libs: ["lib1"],
|
||||
stubs_type: "everything",
|
||||
}
|
||||
|
||||
java_api_library {
|
||||
@@ -2137,6 +2148,7 @@ func TestJavaApiLibraryStaticLibsLink(t *testing.T) {
|
||||
api_surface: "system",
|
||||
api_contributions: ["foo1", "foo2"],
|
||||
static_libs: ["lib1", "lib2", "bar1"],
|
||||
stubs_type: "everything",
|
||||
}
|
||||
`)
|
||||
|
||||
@@ -2184,6 +2196,7 @@ func TestJavaApiLibraryFullApiSurfaceStub(t *testing.T) {
|
||||
name: "lib1",
|
||||
api_surface: "public",
|
||||
api_contributions: ["foo1", "foo2"],
|
||||
stubs_type: "everything",
|
||||
}
|
||||
`
|
||||
|
||||
@@ -2207,6 +2220,7 @@ func TestJavaApiLibraryFullApiSurfaceStub(t *testing.T) {
|
||||
api_surface: "public",
|
||||
api_contributions: ["foo1"],
|
||||
full_api_surface_stub: "lib1",
|
||||
stubs_type: "everything",
|
||||
}
|
||||
`)
|
||||
|
||||
@@ -2368,6 +2382,7 @@ func TestJavaApiContributionImport(t *testing.T) {
|
||||
java_api_library {
|
||||
name: "foo",
|
||||
api_contributions: ["bar"],
|
||||
stubs_type: "everything",
|
||||
}
|
||||
java_api_contribution_import {
|
||||
name: "bar",
|
||||
@@ -2394,6 +2409,7 @@ func TestJavaApiLibraryApiFilesSorting(t *testing.T) {
|
||||
"module-lib-api-stubs-docs-non-updatable.api.contribution",
|
||||
"api-stubs-docs-non-updatable.api.contribution",
|
||||
],
|
||||
stubs_type: "everything",
|
||||
}
|
||||
`)
|
||||
m := ctx.ModuleForTests("foo", "android_common")
|
||||
@@ -2466,6 +2482,7 @@ func TestApiLibraryDroidstubsDependency(t *testing.T) {
|
||||
"api-stubs-docs-non-updatable.api.contribution",
|
||||
],
|
||||
enable_validation: true,
|
||||
stubs_type: "everything",
|
||||
}
|
||||
java_api_library {
|
||||
name: "bar",
|
||||
@@ -2473,6 +2490,7 @@ func TestApiLibraryDroidstubsDependency(t *testing.T) {
|
||||
"api-stubs-docs-non-updatable.api.contribution",
|
||||
],
|
||||
enable_validation: false,
|
||||
stubs_type: "everything",
|
||||
}
|
||||
`)
|
||||
|
||||
@@ -2624,3 +2642,54 @@ func TestMultiplePrebuilts(t *testing.T) {
|
||||
android.AssertStringEquals(t, "unexpected LOCAL_MODULE", "bar", entries.EntryMap["LOCAL_MODULE"][0])
|
||||
}
|
||||
}
|
||||
|
||||
func TestApiLibraryAconfigDeclarations(t *testing.T) {
|
||||
result := android.GroupFixturePreparers(
|
||||
prepareForJavaTest,
|
||||
android.FixtureModifyProductVariables(func(variables android.FixtureProductVariables) {
|
||||
}),
|
||||
android.FixtureMergeMockFs(map[string][]byte{
|
||||
"a/A.java": nil,
|
||||
"a/current.txt": nil,
|
||||
"a/removed.txt": nil,
|
||||
}),
|
||||
).RunTestWithBp(t, `
|
||||
aconfig_declarations {
|
||||
name: "bar",
|
||||
package: "com.example.package",
|
||||
srcs: [
|
||||
"bar.aconfig",
|
||||
],
|
||||
}
|
||||
java_api_contribution {
|
||||
name: "baz",
|
||||
api_file: "a/current.txt",
|
||||
api_surface: "public",
|
||||
}
|
||||
java_api_library {
|
||||
name: "foo",
|
||||
api_surface: "public",
|
||||
api_contributions: [
|
||||
"baz",
|
||||
],
|
||||
aconfig_declarations: [
|
||||
"bar",
|
||||
],
|
||||
stubs_type: "exportable",
|
||||
enable_validation: false,
|
||||
}
|
||||
`)
|
||||
|
||||
// Check if java_api_library depends on aconfig_declarations
|
||||
android.AssertBoolEquals(t, "foo expected to depend on bar",
|
||||
CheckModuleHasDependency(t, result.TestContext, "foo", "android_common", "bar"), true)
|
||||
|
||||
m := result.ModuleForTests("foo", "android_common")
|
||||
android.AssertStringDoesContain(t, "foo generates revert annotations file",
|
||||
strings.Join(m.AllOutputs(), ""), "revert-annotations-exportable.txt")
|
||||
|
||||
// revert-annotations.txt passed to exportable stubs generation metalava command
|
||||
manifest := m.Output("metalava.sbox.textproto")
|
||||
cmdline := String(android.RuleBuilderSboxProtoForTests(t, result.TestContext, manifest).Commands[0].Command)
|
||||
android.AssertStringDoesContain(t, "flagged api hide command not included", cmdline, "revert-annotations-exportable.txt")
|
||||
}
|
||||
|
Reference in New Issue
Block a user