[JS] Fix compile kotlin against custom binaries
This commit is contained in:
committed by
Space Team
parent
b6803b2400
commit
a6d461dbe8
+10
-9
@@ -27,6 +27,7 @@ import org.jetbrains.kotlin.cli.jvm.K2JVMCompiler
|
|||||||
import org.jetbrains.kotlin.cli.metadata.K2MetadataCompiler
|
import org.jetbrains.kotlin.cli.metadata.K2MetadataCompiler
|
||||||
import org.jetbrains.kotlin.test.KotlinTestUtils
|
import org.jetbrains.kotlin.test.KotlinTestUtils
|
||||||
import org.jetbrains.kotlin.test.TestCaseWithTmpdir
|
import org.jetbrains.kotlin.test.TestCaseWithTmpdir
|
||||||
|
import org.jetbrains.kotlin.utils.PathUtil
|
||||||
import java.io.File
|
import java.io.File
|
||||||
import java.util.jar.JarOutputStream
|
import java.util.jar.JarOutputStream
|
||||||
import java.util.jar.Manifest
|
import java.util.jar.Manifest
|
||||||
@@ -105,12 +106,12 @@ abstract class AbstractKotlinCompilerIntegrationTest : TestCaseWithTmpdir() {
|
|||||||
additionalOptions: List<String> = emptyList(),
|
additionalOptions: List<String> = emptyList(),
|
||||||
checkKotlinOutput: (String) -> Unit = { actual -> assertEquals(normalizeOutput("" to ExitCode.OK), actual) }
|
checkKotlinOutput: (String) -> Unit = { actual -> assertEquals(normalizeOutput("" to ExitCode.OK), actual) }
|
||||||
): File {
|
): File {
|
||||||
val destination = File(tmpdir, "$libraryName.js")
|
val destination = File(tmpdir, libraryName)
|
||||||
val output = compileKotlin(
|
val output = compileKotlin(
|
||||||
libraryName, destination, compiler = K2JSCompiler(), additionalOptions = additionalOptions, expectedFileName = null
|
libraryName, destination, compiler = K2JSCompiler(), additionalOptions = additionalOptions, expectedFileName = null
|
||||||
)
|
)
|
||||||
checkKotlinOutput(normalizeOutput(output))
|
checkKotlinOutput(normalizeOutput(output))
|
||||||
return File(tmpdir, "$libraryName.meta.js")
|
return destination
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -164,14 +165,14 @@ abstract class AbstractKotlinCompilerIntegrationTest : TestCaseWithTmpdir() {
|
|||||||
additionalSources.mapTo(args) { File(testDataDirectory, it).path }
|
additionalSources.mapTo(args) { File(testDataDirectory, it).path }
|
||||||
|
|
||||||
if (compiler is K2JSCompiler) {
|
if (compiler is K2JSCompiler) {
|
||||||
if (classpath.isNotEmpty()) {
|
args.add("-libraries")
|
||||||
args.add("-libraries")
|
args.add((classpath + PathUtil.kotlinPathsForCompiler.jsStdLibJarPath).joinToString(File.pathSeparator))
|
||||||
args.add(classpath.joinToString(File.pathSeparator))
|
args.add("-Xir-produce-klib-dir")
|
||||||
}
|
args.add("-Xir-only")
|
||||||
args.add("-Xforce-deprecated-legacy-compiler-usage")
|
args.add("-ir-output-dir")
|
||||||
args.add("-output")
|
|
||||||
args.add(output.path)
|
args.add(output.path)
|
||||||
args.add("-meta-info")
|
args.add("-ir-output-name")
|
||||||
|
args.add("out")
|
||||||
} else if (compiler is K2JVMCompiler || compiler is K2MetadataCompiler) {
|
} else if (compiler is K2JVMCompiler || compiler is K2MetadataCompiler) {
|
||||||
if (classpath.isNotEmpty()) {
|
if (classpath.isNotEmpty()) {
|
||||||
args.add("-classpath")
|
args.add("-classpath")
|
||||||
|
|||||||
-19
@@ -101,17 +101,6 @@ class CompileKotlinAgainstCustomBinariesTest : AbstractKotlinCompilerIntegration
|
|||||||
compileKotlin("source.kt", tmpdir, listOf(library), K2JVMCompiler(), additionalOptions.toList())
|
compileKotlin("source.kt", tmpdir, listOf(library), K2JVMCompiler(), additionalOptions.toList())
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun doTestKotlinLibraryWithWrongMetadataVersionJs(libraryName: String, vararg additionalOptions: String) {
|
|
||||||
val library = compileJsLibrary(libraryName, additionalOptions = listOf("-Xmetadata-version=42.0.0"))
|
|
||||||
compileKotlin(
|
|
||||||
"source.kt",
|
|
||||||
File(tmpdir, "usage.js"),
|
|
||||||
listOf(library),
|
|
||||||
K2JSCompiler(),
|
|
||||||
additionalOptions.toList()
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
private fun doTestPreReleaseKotlinLibrary(
|
private fun doTestPreReleaseKotlinLibrary(
|
||||||
compiler: CLICompiler<*>,
|
compiler: CLICompiler<*>,
|
||||||
libraryName: String,
|
libraryName: String,
|
||||||
@@ -320,10 +309,6 @@ class CompileKotlinAgainstCustomBinariesTest : AbstractKotlinCompilerIntegration
|
|||||||
doTestKotlinLibraryWithWrongMetadataVersion("library", null)
|
doTestKotlinLibraryWithWrongMetadataVersion("library", null)
|
||||||
}
|
}
|
||||||
|
|
||||||
fun testWrongMetadataVersionJs() {
|
|
||||||
doTestKotlinLibraryWithWrongMetadataVersionJs("library")
|
|
||||||
}
|
|
||||||
|
|
||||||
fun testWrongMetadataVersionBadMetadata() {
|
fun testWrongMetadataVersionBadMetadata() {
|
||||||
doTestKotlinLibraryWithWrongMetadataVersion("library", { name, value ->
|
doTestKotlinLibraryWithWrongMetadataVersion("library", { name, value ->
|
||||||
if (JvmAnnotationNames.METADATA_DATA_FIELD_NAME == name) {
|
if (JvmAnnotationNames.METADATA_DATA_FIELD_NAME == name) {
|
||||||
@@ -346,10 +331,6 @@ class CompileKotlinAgainstCustomBinariesTest : AbstractKotlinCompilerIntegration
|
|||||||
doTestKotlinLibraryWithWrongMetadataVersion("library", null, "-Xskip-metadata-version-check")
|
doTestKotlinLibraryWithWrongMetadataVersion("library", null, "-Xskip-metadata-version-check")
|
||||||
}
|
}
|
||||||
|
|
||||||
fun testWrongMetadataVersionJsSkipVersionCheck() {
|
|
||||||
doTestKotlinLibraryWithWrongMetadataVersionJs("library", "-Xskip-metadata-version-check")
|
|
||||||
}
|
|
||||||
|
|
||||||
fun testWrongMetadataVersionSkipPrereleaseCheckHasNoEffect() {
|
fun testWrongMetadataVersionSkipPrereleaseCheckHasNoEffect() {
|
||||||
doTestKotlinLibraryWithWrongMetadataVersion("library", null, "-Xskip-prerelease-check")
|
doTestKotlinLibraryWithWrongMetadataVersion("library", null, "-Xskip-prerelease-check")
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user