Allow java_system_modules_import to replace java_system_modules
Previously, there were some places where a java_system_module_import could not be used in place of a java_system_module. That was because the code assumed a *SystemModules type not a *systemModulesImport type. This change introduces a SystemModulesProvider interface that is used instead and is implemented on both types. Bug: 142940300 Test: m nothing ran new tests before changes to make sure they detected the issue and after to make sure the changes fixed the issue. Change-Id: I7b16ac5708880bdf61e6f5b1e6616c986f0ed763
This commit is contained in:
@@ -982,6 +982,65 @@ func TestDroiddoc(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
func TestDroidstubsWithSystemModules(t *testing.T) {
|
||||
ctx, _ := testJava(t, `
|
||||
droidstubs {
|
||||
name: "stubs-source-system-modules",
|
||||
srcs: [
|
||||
"bar-doc/*.java",
|
||||
],
|
||||
sdk_version: "none",
|
||||
system_modules: "source-system-modules",
|
||||
}
|
||||
|
||||
java_library {
|
||||
name: "source-jar",
|
||||
srcs: [
|
||||
"a.java",
|
||||
],
|
||||
}
|
||||
|
||||
java_system_modules {
|
||||
name: "source-system-modules",
|
||||
libs: ["source-jar"],
|
||||
}
|
||||
|
||||
droidstubs {
|
||||
name: "stubs-prebuilt-system-modules",
|
||||
srcs: [
|
||||
"bar-doc/*.java",
|
||||
],
|
||||
sdk_version: "none",
|
||||
system_modules: "prebuilt-system-modules",
|
||||
}
|
||||
|
||||
java_import {
|
||||
name: "prebuilt-jar",
|
||||
jars: ["a.jar"],
|
||||
}
|
||||
|
||||
java_system_modules_import {
|
||||
name: "prebuilt-system-modules",
|
||||
libs: ["prebuilt-jar"],
|
||||
}
|
||||
`)
|
||||
|
||||
checkSystemModulesUseByDroidstubs(t, ctx, "stubs-source-system-modules", "source-jar.jar")
|
||||
|
||||
checkSystemModulesUseByDroidstubs(t, ctx, "stubs-prebuilt-system-modules", "prebuilt-jar.jar")
|
||||
}
|
||||
|
||||
func checkSystemModulesUseByDroidstubs(t *testing.T, ctx *android.TestContext, moduleName string, systemJar string) {
|
||||
metalavaRule := ctx.ModuleForTests(moduleName, "android_common").Rule("metalava")
|
||||
var systemJars []string
|
||||
for _, i := range metalavaRule.Implicits {
|
||||
systemJars = append(systemJars, i.Base())
|
||||
}
|
||||
if len(systemJars) != 1 || systemJars[0] != systemJar {
|
||||
t.Errorf("inputs of %q must be []string{%q}, but was %#v.", moduleName, systemJar, systemJars)
|
||||
}
|
||||
}
|
||||
|
||||
func TestJarGenrules(t *testing.T) {
|
||||
ctx, _ := testJava(t, `
|
||||
java_library {
|
||||
@@ -1377,3 +1436,59 @@ func TestJavaSystemModulesImport(t *testing.T) {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func TestJavaLibraryWithSystemModules(t *testing.T) {
|
||||
ctx, _ := testJava(t, `
|
||||
java_library {
|
||||
name: "lib-with-source-system-modules",
|
||||
srcs: [
|
||||
"a.java",
|
||||
],
|
||||
sdk_version: "none",
|
||||
system_modules: "source-system-modules",
|
||||
}
|
||||
|
||||
java_library {
|
||||
name: "source-jar",
|
||||
srcs: [
|
||||
"a.java",
|
||||
],
|
||||
}
|
||||
|
||||
java_system_modules {
|
||||
name: "source-system-modules",
|
||||
libs: ["source-jar"],
|
||||
}
|
||||
|
||||
java_library {
|
||||
name: "lib-with-prebuilt-system-modules",
|
||||
srcs: [
|
||||
"a.java",
|
||||
],
|
||||
sdk_version: "none",
|
||||
system_modules: "prebuilt-system-modules",
|
||||
}
|
||||
|
||||
java_import {
|
||||
name: "prebuilt-jar",
|
||||
jars: ["a.jar"],
|
||||
}
|
||||
|
||||
java_system_modules_import {
|
||||
name: "prebuilt-system-modules",
|
||||
libs: ["prebuilt-jar"],
|
||||
}
|
||||
`)
|
||||
|
||||
checkBootClasspathForSystemModule(t, ctx, "lib-with-source-system-modules", "/source-jar.jar")
|
||||
|
||||
checkBootClasspathForSystemModule(t, ctx, "lib-with-prebuilt-system-modules", "/prebuilt-jar.jar")
|
||||
}
|
||||
|
||||
func checkBootClasspathForSystemModule(t *testing.T, ctx *android.TestContext, moduleName string, expectedSuffix string) {
|
||||
javacRule := ctx.ModuleForTests(moduleName, "android_common").Rule("javac")
|
||||
bootClasspath := javacRule.Args["bootClasspath"]
|
||||
if strings.HasPrefix(bootClasspath, "--system ") && strings.HasSuffix(bootClasspath, expectedSuffix) {
|
||||
t.Errorf("bootclasspath of %q must start with --system and end with %q, but was %#v.", moduleName, expectedSuffix, bootClasspath)
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user