Load module-info.class from multi-release jars' META-INF/versions/
This commit is contained in:
+3
-1
@@ -150,6 +150,8 @@ abstract class AbstractKotlinCompilerIntegrationTest : TestCaseWithTmpdir() {
|
||||
|
||||
companion object {
|
||||
private val KOTLIN_FILES = Pattern.compile(".*\\.kt$")
|
||||
private val JAVA_FILES = Pattern.compile(".*\\.java$")
|
||||
|
||||
@JvmStatic
|
||||
protected val JAVA_FILES = Pattern.compile(".*\\.java$")!!
|
||||
}
|
||||
}
|
||||
|
||||
@@ -16,6 +16,7 @@
|
||||
|
||||
package org.jetbrains.kotlin.jvm.compiler
|
||||
|
||||
import com.intellij.openapi.util.io.FileUtil
|
||||
import org.jetbrains.kotlin.test.KotlinTestUtils
|
||||
import java.io.File
|
||||
|
||||
@@ -62,6 +63,22 @@ class Java9ModulesIntegrationTest : AbstractKotlinCompilerIntegrationTest() {
|
||||
KotlinTestUtils.assertEqualsToFile(File(testDataDirectory, "$moduleName.txt"), actual)
|
||||
}
|
||||
|
||||
private fun createMultiReleaseJar(jdk9Home: File, destination: File, mainRoot: File, java9Root: File): File {
|
||||
val command = listOf<String>(
|
||||
File(jdk9Home, "bin/jar").path,
|
||||
"--create", "--file=$destination",
|
||||
"-C", mainRoot.path, ".",
|
||||
"--release", "9",
|
||||
"-C", java9Root.path, "."
|
||||
)
|
||||
|
||||
val process = ProcessBuilder().command(command).inheritIO().start()
|
||||
process.waitFor()
|
||||
assertEquals("'jar' did not finish successfully", 0, process.exitValue())
|
||||
|
||||
return destination
|
||||
}
|
||||
|
||||
fun testSimple() {
|
||||
val a = module("moduleA")
|
||||
module("moduleB", listOf(a))
|
||||
@@ -149,4 +166,20 @@ class Java9ModulesIntegrationTest : AbstractKotlinCompilerIntegrationTest() {
|
||||
checkKotlinOutput = checkKotlinOutput("moduleB")
|
||||
)
|
||||
}
|
||||
|
||||
fun testMultiReleaseLibrary() {
|
||||
val jdk9Home = KotlinTestUtils.getJdk9HomeIfPossible() ?: return
|
||||
|
||||
val librarySrc = FileUtil.findFilesByMask(JAVA_FILES, File(testDataDirectory, "library"))
|
||||
val libraryOut = File(tmpdir, "out")
|
||||
KotlinTestUtils.compileJavaFilesExternallyWithJava9(librarySrc, listOf("-d", libraryOut.path))
|
||||
|
||||
val libraryOut9 = File(tmpdir, "out9")
|
||||
libraryOut9.mkdirs()
|
||||
File(libraryOut, "module-info.class").renameTo(File(libraryOut9, "module-info.class"))
|
||||
|
||||
val libraryJar = createMultiReleaseJar(jdk9Home, File(tmpdir, "library.jar"), libraryOut, libraryOut9)
|
||||
|
||||
module("main", listOf(libraryJar))
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user