Initialize scripting in tests if script is passed as a source
This commit is contained in:
+11
-3
@@ -15,8 +15,7 @@ import org.jetbrains.kotlin.cli.jvm.compiler.EnvironmentConfigFiles;
|
||||
import org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment;
|
||||
import org.jetbrains.kotlin.codegen.forTestCompile.ForTestCompileRuntime;
|
||||
import org.jetbrains.kotlin.config.CompilerConfiguration;
|
||||
import org.jetbrains.kotlin.config.JVMConfigurationKeys;
|
||||
import org.jetbrains.kotlin.script.StandardScriptDefinition;
|
||||
import org.jetbrains.kotlin.parsing.KotlinParserDefinition;
|
||||
import org.jetbrains.kotlin.test.ConfigurationKind;
|
||||
import org.jetbrains.kotlin.test.InTextDirectivesUtils;
|
||||
import org.jetbrains.kotlin.test.KotlinTestUtils;
|
||||
@@ -26,6 +25,8 @@ import org.jetbrains.kotlin.test.testFramework.KtUsefulTestCase;
|
||||
import java.io.File;
|
||||
import java.util.*;
|
||||
|
||||
import static org.jetbrains.kotlin.script.ScriptTestUtilKt.loadScriptingPlugin;
|
||||
|
||||
public abstract class KotlinMultiFileTestWithJava<M, F> extends KtUsefulTestCase {
|
||||
protected File javaFilesDir;
|
||||
private File kotlinSourceRoot;
|
||||
@@ -61,6 +62,11 @@ public abstract class KotlinMultiFileTestWithJava<M, F> extends KtUsefulTestCase
|
||||
}
|
||||
}
|
||||
|
||||
@NotNull
|
||||
protected Boolean isScriptingNeeded(@NotNull File file) {
|
||||
return file.getName().endsWith(KotlinParserDefinition.STD_SCRIPT_EXT);
|
||||
}
|
||||
|
||||
@NotNull
|
||||
protected KotlinCoreEnvironment createEnvironment(@NotNull File file) {
|
||||
CompilerConfiguration configuration = KotlinTestUtils.newConfiguration(
|
||||
@@ -69,7 +75,9 @@ public abstract class KotlinMultiFileTestWithJava<M, F> extends KtUsefulTestCase
|
||||
getClasspath(file),
|
||||
isJavaSourceRootNeeded() ? Collections.singletonList(javaFilesDir) : Collections.emptyList()
|
||||
);
|
||||
configuration.add(JVMConfigurationKeys.SCRIPT_DEFINITIONS, StandardScriptDefinition.INSTANCE);
|
||||
if (isScriptingNeeded(file)) {
|
||||
loadScriptingPlugin(configuration);
|
||||
}
|
||||
if (isKotlinSourceRootNeeded()) {
|
||||
ContentRootsKt.addKotlinSourceRoot(configuration, kotlinSourceRoot.getPath());
|
||||
}
|
||||
|
||||
@@ -0,0 +1,23 @@
|
||||
/*
|
||||
* Copyright 2010-2019 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license
|
||||
* that can be found in the license/LICENSE.txt file.
|
||||
*/
|
||||
|
||||
package org.jetbrains.kotlin.script
|
||||
|
||||
import org.jetbrains.kotlin.cli.jvm.plugins.PluginCliParser
|
||||
import org.jetbrains.kotlin.config.CompilerConfiguration
|
||||
import org.jetbrains.kotlin.utils.PathUtil
|
||||
import java.io.File
|
||||
|
||||
fun loadScriptingPlugin(configuration: CompilerConfiguration) {
|
||||
val libPath = PathUtil.kotlinPathsForCompiler.libPath
|
||||
val pluginClasspath = with (PathUtil) {
|
||||
listOf(
|
||||
KOTLIN_SCRIPTING_COMPILER_PLUGIN_JAR,
|
||||
KOTLIN_SCRIPTING_COMMON_JAR,
|
||||
KOTLIN_SCRIPTING_JVM_JAR
|
||||
).map { File(libPath, it).path }
|
||||
}
|
||||
PluginCliParser.loadPluginsSafe(pluginClasspath, null, configuration)
|
||||
}
|
||||
@@ -18,7 +18,9 @@ import org.jetbrains.kotlin.cli.jvm.compiler.NoScopeRecordCliBindingTrace
|
||||
import org.jetbrains.kotlin.cli.jvm.compiler.TopDownAnalyzerFacadeForJVM
|
||||
import org.jetbrains.kotlin.config.CommonConfigurationKeys
|
||||
import org.jetbrains.kotlin.config.CompilerConfiguration
|
||||
import org.jetbrains.kotlin.parsing.KotlinParserDefinition
|
||||
import org.jetbrains.kotlin.resolve.jvm.extensions.AnalysisHandlerExtension
|
||||
import org.jetbrains.kotlin.script.loadScriptingPlugin
|
||||
import org.jetbrains.kotlin.test.ConfigurationKind
|
||||
import org.jetbrains.kotlin.test.KotlinTestUtils
|
||||
import org.jetbrains.kotlin.test.TestJdkKind
|
||||
@@ -106,6 +108,10 @@ abstract class AbstractKotlinUastTest : AbstractUastTest() {
|
||||
put(CLIConfigurationKeys.MESSAGE_COLLECTOR_KEY, messageCollector)
|
||||
|
||||
put(CommonConfigurationKeys.MODULE_NAME, "test-module")
|
||||
|
||||
if (sourceFile.extension == KotlinParserDefinition.STD_SCRIPT_SUFFIX) {
|
||||
loadScriptingPlugin(this)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user