[Test] Use javac for compilation test java files from runtime by default

This commit is contained in:
Dmitriy Novozhilov
2021-01-29 15:21:17 +03:00
parent e9cb30b4f3
commit 81ba7aa833
2 changed files with 12 additions and 3 deletions
@@ -14,6 +14,7 @@ import org.jetbrains.kotlin.config.JVMConfigurationKeys
import org.jetbrains.kotlin.config.JvmTarget
import org.jetbrains.kotlin.test.compileJavaFilesExternally
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.model.TestModule
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 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)
@@ -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.")
if (targetIsJava8OrLower) {
if (USE_JAVAC_BASED_ON_JVM_TARGET !in module.directives || targetIsJava8OrLower) {
org.jetbrains.kotlin.test.compileJavaFiles(
files,
javacOptions,
@@ -28,6 +28,14 @@ object CodegenTestDirectives : SimpleDirectivesContainer() {
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(
description = "Specify javac options to compile java files"
)