Run all Java 17 tests
This includes running the Java 17 tests which are no longer running
through the examples harness, but specified as actual tests in the
tests_java_17 test module.
This also moves the JDK used to run Gradle to JDK-17 (from JDK-11).
Fixes: b/337801526
Change-Id: I794b645794aed3a798adfc38d8af723d31730f91
diff --git a/d8_r8/test/build.gradle.kts b/d8_r8/test/build.gradle.kts
index 1e7ac2b..22dc719 100644
--- a/d8_r8/test/build.gradle.kts
+++ b/d8_r8/test/build.gradle.kts
@@ -28,6 +28,7 @@
val javaTestBaseJarTask = projectTask("testbase", "testJar")
val javaTestBaseDepsJar = projectTask("testbase", "depsJar")
val java8TestJarTask = projectTask("tests_java_8", "testJar")
+val java17TestJarTask = projectTask("tests_java_17", "testJar")
val bootstrapTestsDepsJarTask = projectTask("tests_bootstrap", "depsJar")
val testsJava8SourceSetDependenciesTask = projectTask("tests_java_8", "sourceSetDependencyTask")
@@ -57,7 +58,9 @@
val packageTests by registering(Jar::class) {
dependsOn(java8TestJarTask)
+ dependsOn(java17TestJarTask)
from(java8TestJarTask.outputs.files.map(::zipTree))
+ from(java17TestJarTask.outputs.files.map(::zipTree))
exclude("META-INF/*.kotlin_module", "**/*.kotlin_metadata")
destinationDirectory.set(getRoot().resolveAll("build", "libs"))
archiveFileName.set("r8tests.jar")
@@ -130,18 +133,17 @@
targetJarProvider)
testJarProviders.forEach(::dependsOn)
val mainDepsJar = mainDepsJarTask.getSingleOutputFile()
- val rtJar = resolve(ThirdPartyDeps.java8Runtime, "rt.jar").getSingleFile()
val r8WithRelocatedDepsJar = r8WithRelocatedDepsTask.getSingleOutputFile()
val targetJar = targetJarProvider.getSingleOutputFile()
val testDepsJar = packageTestDeps.getSingleOutputFile()
- inputs.files(mainDepsJar, rtJar, r8WithRelocatedDepsJar, targetJar, testDepsJar)
+ inputs.files(mainDepsJar, r8WithRelocatedDepsJar, targetJar, testDepsJar)
inputs.files(testJarProviders.map{it.getSingleOutputFile()})
val output = file(Paths.get("build", "libs", artifactName))
outputs.file(output)
val argList = mutableListOf("--keep-rules",
"--allowobfuscation",
"--lib",
- "$rtJar",
+ "${org.gradle.internal.jvm.Jvm.current().getJavaHome()}",
"--lib",
"$mainDepsJar",
"--lib",
@@ -278,20 +280,19 @@
testJarProvider,
packageTestBaseExcludeKeep)
val keepRulesFile = keepRulesFileProvider.getSingleOutputFile()
- val rtJar = resolve(ThirdPartyDeps.java8Runtime, "rt.jar").getSingleFile()
val r8Jar = r8JarProvider.getSingleOutputFile()
val r8WithRelocatedDepsJar = r8WithRelocatedDepsTask.getSingleOutputFile()
val testBaseJar = packageTestBaseExcludeKeep.getSingleOutputFile()
val testDepsJar = packageTestDeps.getSingleOutputFile()
val testJar = testJarProvider.getSingleOutputFile()
- inputs.files(keepRulesFile, rtJar, r8Jar, r8WithRelocatedDepsJar, testDepsJar, testJar)
+ inputs.files(keepRulesFile, r8Jar, r8WithRelocatedDepsJar, testDepsJar, testJar)
val outputJar = getRoot().resolveAll("build", "libs", artifactName)
outputs.file(outputJar)
val args = mutableListOf(
"--classfile",
"--debug",
"--lib",
- "$rtJar",
+ "${org.gradle.internal.jvm.Jvm.current().getJavaHome()}",
"--classpath",
"$r8Jar",
"--classpath",
diff --git a/d8_r8/test_modules/tests_java_17/build.gradle.kts b/d8_r8/test_modules/tests_java_17/build.gradle.kts
index 2079c40..9418b3a 100644
--- a/d8_r8/test_modules/tests_java_17/build.gradle.kts
+++ b/d8_r8/test_modules/tests_java_17/build.gradle.kts
@@ -58,5 +58,13 @@
systemProperty("TESTBASE_DATA_LOCATION",
testbaseJavaCompileTask.outputs.files.getAsPath().split(File.pathSeparator)[0])
}
+
+ val testJar by registering(Jar::class) {
+ from(sourceSets.test.get().output)
+ // TODO(b/296486206): Seems like IntelliJ has a problem depending on test source sets. Renaming
+ // this from the default name (tests_java_8.jar) will allow IntelliJ to find the resources in
+ // the jar and not show red underlines. However, navigation to base classes will not work.
+ archiveFileName.set("not_named_tests_java_17.jar")
+ }
}
diff --git a/tools/jdk.py b/tools/jdk.py
index 3b41c3b..d16cad0 100755
--- a/tools/jdk.py
+++ b/tools/jdk.py
@@ -15,11 +15,17 @@
def GetJdkHome():
- return GetJdk11Home()
+ return GetJdk17Home()
def GetJdkRoot():
- return GetJdk11Root()
+ return GetJdk17Root()
+
+
+def GetJdk17Root():
+ root = os.path.join(JDK_DIR, 'jdk-17')
+ os_root = GetOSPath(root)
+ return os_root if os_root else os.environ['JAVA_HOME']
def GetJdk11Root():
@@ -49,6 +55,15 @@
return dirs
+def GetJdk17Home():
+ root = GetJdk17Root()
+ # osx has the home inside Contents/Home in the bundle
+ if defines.IsOsX():
+ return os.path.join(root, 'Contents', 'Home')
+ else:
+ return root
+
+
def GetJdk11Home():
root = GetJdk11Root()
# osx has the home inside Contents/Home in the bundle