Remove suffix based stub matching logic

This change prevents non-stub modules with stub suffix from being
determined as the stub module, and instead makes the check more robust
by determining the condition based on the user-hidden
`Stub_contributing_api` property, which is only set for the stub
submodules generated by `java_sdk_library`.

Test: m nothing --no-skip-soong-tests
Bug: 361179822
Change-Id: I28a599c5b4fe1e8460e60580c0535aaf19e39ba3
This commit is contained in:
Jihoon Kang
2024-08-21 20:42:18 +00:00
parent 5fdb54d439
commit fa3f0782f7
4 changed files with 90 additions and 43 deletions

View File

@@ -1858,3 +1858,39 @@ func TestMultipleSdkLibraryPrebuilts(t *testing.T) {
android.AssertStringListContains(t, "Could not find the expected stub on classpath", inputs, tc.expectedStubPath)
}
}
func TestStubLinkType(t *testing.T) {
android.GroupFixturePreparers(
prepareForJavaTest,
PrepareForTestWithJavaSdkLibraryFiles,
FixtureWithLastReleaseApis("foo"),
).ExtendWithErrorHandler(android.FixtureExpectsOneErrorPattern(
`module "baz" variant "android_common": compiles against system API, but dependency `+
`"bar.stubs.system" is compiling against module API. In order to fix this, `+
`consider adjusting sdk_version: OR platform_apis: property of the source or `+
`target module so that target module is built with the same or smaller API set `+
`when compared to the source.`),
).RunTestWithBp(t, `
java_sdk_library {
name: "foo",
srcs: ["a.java"],
sdk_version: "current",
}
java_library {
name: "bar.stubs.system",
srcs: ["a.java"],
sdk_version: "module_current",
is_stubs_module: false,
}
java_library {
name: "baz",
srcs: ["b.java"],
libs: [
"foo.stubs.system",
"bar.stubs.system",
],
sdk_version: "system_current",
}
`)
}