[Test] Use javac for compilation test java files from runtime by default
This commit is contained in:
+4
-3
@@ -14,6 +14,7 @@ import org.jetbrains.kotlin.config.JVMConfigurationKeys
|
|||||||
import org.jetbrains.kotlin.config.JvmTarget
|
import org.jetbrains.kotlin.config.JvmTarget
|
||||||
import org.jetbrains.kotlin.test.compileJavaFilesExternally
|
import org.jetbrains.kotlin.test.compileJavaFilesExternally
|
||||||
import org.jetbrains.kotlin.test.directives.CodegenTestDirectives
|
import org.jetbrains.kotlin.test.directives.CodegenTestDirectives
|
||||||
|
import org.jetbrains.kotlin.test.directives.CodegenTestDirectives.USE_JAVAC_BASED_ON_JVM_TARGET
|
||||||
import org.jetbrains.kotlin.test.directives.JvmEnvironmentConfigurationDirectives
|
import org.jetbrains.kotlin.test.directives.JvmEnvironmentConfigurationDirectives
|
||||||
import org.jetbrains.kotlin.test.model.TestModule
|
import org.jetbrains.kotlin.test.model.TestModule
|
||||||
import org.jetbrains.kotlin.test.services.TestServices
|
import org.jetbrains.kotlin.test.services.TestServices
|
||||||
@@ -51,7 +52,7 @@ class JavaCompilerFacade(private val testServices: TestServices) {
|
|||||||
|
|
||||||
val javaFiles = module.javaFiles.map { testServices.sourceFileProvider.getRealFileForSourceFile(it) }
|
val javaFiles = module.javaFiles.map { testServices.sourceFileProvider.getRealFileForSourceFile(it) }
|
||||||
val ignoreErrors = CodegenTestDirectives.IGNORE_JAVA_ERRORS in module.directives
|
val ignoreErrors = CodegenTestDirectives.IGNORE_JAVA_ERRORS in module.directives
|
||||||
compileJavaFiles(configuration[JVMConfigurationKeys.JVM_TARGET] ?: JvmTarget.DEFAULT, javaFiles, finalJavacOptions, ignoreErrors)
|
compileJavaFiles(module, configuration[JVMConfigurationKeys.JVM_TARGET] ?: JvmTarget.DEFAULT, javaFiles, finalJavacOptions, ignoreErrors)
|
||||||
}
|
}
|
||||||
|
|
||||||
@OptIn(ExperimentalStdlibApi::class)
|
@OptIn(ExperimentalStdlibApi::class)
|
||||||
@@ -73,9 +74,9 @@ class JavaCompilerFacade(private val testServices: TestServices) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun compileJavaFiles(jvmTarget: JvmTarget, files: List<File>, javacOptions: List<String>, ignoreErrors: Boolean) {
|
private fun compileJavaFiles(module: TestModule, jvmTarget: JvmTarget, files: List<File>, javacOptions: List<String>, ignoreErrors: Boolean) {
|
||||||
val targetIsJava8OrLower = System.getProperty("java.version").startsWith("1.")
|
val targetIsJava8OrLower = System.getProperty("java.version").startsWith("1.")
|
||||||
if (targetIsJava8OrLower) {
|
if (USE_JAVAC_BASED_ON_JVM_TARGET !in module.directives || targetIsJava8OrLower) {
|
||||||
org.jetbrains.kotlin.test.compileJavaFiles(
|
org.jetbrains.kotlin.test.compileJavaFiles(
|
||||||
files,
|
files,
|
||||||
javacOptions,
|
javacOptions,
|
||||||
|
|||||||
+8
@@ -28,6 +28,14 @@ object CodegenTestDirectives : SimpleDirectivesContainer() {
|
|||||||
applicability = Global
|
applicability = Global
|
||||||
)
|
)
|
||||||
|
|
||||||
|
val USE_JAVAC_BASED_ON_JVM_TARGET by directive(
|
||||||
|
description = """
|
||||||
|
Determine version of javac for compilation of java files based
|
||||||
|
on JvmTarget of module. If not enabled then javac from
|
||||||
|
current runtime will be used
|
||||||
|
""".trimIndent()
|
||||||
|
)
|
||||||
|
|
||||||
val JAVAC_OPTIONS by stringDirective(
|
val JAVAC_OPTIONS by stringDirective(
|
||||||
description = "Specify javac options to compile java files"
|
description = "Specify javac options to compile java files"
|
||||||
)
|
)
|
||||||
|
|||||||
Reference in New Issue
Block a user