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.cli.jvm.compiler.KotlinCoreEnvironment;
|
||||||
import org.jetbrains.kotlin.codegen.forTestCompile.ForTestCompileRuntime;
|
import org.jetbrains.kotlin.codegen.forTestCompile.ForTestCompileRuntime;
|
||||||
import org.jetbrains.kotlin.config.CompilerConfiguration;
|
import org.jetbrains.kotlin.config.CompilerConfiguration;
|
||||||
import org.jetbrains.kotlin.config.JVMConfigurationKeys;
|
import org.jetbrains.kotlin.parsing.KotlinParserDefinition;
|
||||||
import org.jetbrains.kotlin.script.StandardScriptDefinition;
|
|
||||||
import org.jetbrains.kotlin.test.ConfigurationKind;
|
import org.jetbrains.kotlin.test.ConfigurationKind;
|
||||||
import org.jetbrains.kotlin.test.InTextDirectivesUtils;
|
import org.jetbrains.kotlin.test.InTextDirectivesUtils;
|
||||||
import org.jetbrains.kotlin.test.KotlinTestUtils;
|
import org.jetbrains.kotlin.test.KotlinTestUtils;
|
||||||
@@ -26,6 +25,8 @@ import org.jetbrains.kotlin.test.testFramework.KtUsefulTestCase;
|
|||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
|
|
||||||
|
import static org.jetbrains.kotlin.script.ScriptTestUtilKt.loadScriptingPlugin;
|
||||||
|
|
||||||
public abstract class KotlinMultiFileTestWithJava<M, F> extends KtUsefulTestCase {
|
public abstract class KotlinMultiFileTestWithJava<M, F> extends KtUsefulTestCase {
|
||||||
protected File javaFilesDir;
|
protected File javaFilesDir;
|
||||||
private File kotlinSourceRoot;
|
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
|
@NotNull
|
||||||
protected KotlinCoreEnvironment createEnvironment(@NotNull File file) {
|
protected KotlinCoreEnvironment createEnvironment(@NotNull File file) {
|
||||||
CompilerConfiguration configuration = KotlinTestUtils.newConfiguration(
|
CompilerConfiguration configuration = KotlinTestUtils.newConfiguration(
|
||||||
@@ -69,7 +75,9 @@ public abstract class KotlinMultiFileTestWithJava<M, F> extends KtUsefulTestCase
|
|||||||
getClasspath(file),
|
getClasspath(file),
|
||||||
isJavaSourceRootNeeded() ? Collections.singletonList(javaFilesDir) : Collections.emptyList()
|
isJavaSourceRootNeeded() ? Collections.singletonList(javaFilesDir) : Collections.emptyList()
|
||||||
);
|
);
|
||||||
configuration.add(JVMConfigurationKeys.SCRIPT_DEFINITIONS, StandardScriptDefinition.INSTANCE);
|
if (isScriptingNeeded(file)) {
|
||||||
|
loadScriptingPlugin(configuration);
|
||||||
|
}
|
||||||
if (isKotlinSourceRootNeeded()) {
|
if (isKotlinSourceRootNeeded()) {
|
||||||
ContentRootsKt.addKotlinSourceRoot(configuration, kotlinSourceRoot.getPath());
|
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.cli.jvm.compiler.TopDownAnalyzerFacadeForJVM
|
||||||
import org.jetbrains.kotlin.config.CommonConfigurationKeys
|
import org.jetbrains.kotlin.config.CommonConfigurationKeys
|
||||||
import org.jetbrains.kotlin.config.CompilerConfiguration
|
import org.jetbrains.kotlin.config.CompilerConfiguration
|
||||||
|
import org.jetbrains.kotlin.parsing.KotlinParserDefinition
|
||||||
import org.jetbrains.kotlin.resolve.jvm.extensions.AnalysisHandlerExtension
|
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.ConfigurationKind
|
||||||
import org.jetbrains.kotlin.test.KotlinTestUtils
|
import org.jetbrains.kotlin.test.KotlinTestUtils
|
||||||
import org.jetbrains.kotlin.test.TestJdkKind
|
import org.jetbrains.kotlin.test.TestJdkKind
|
||||||
@@ -106,6 +108,10 @@ abstract class AbstractKotlinUastTest : AbstractUastTest() {
|
|||||||
put(CLIConfigurationKeys.MESSAGE_COLLECTOR_KEY, messageCollector)
|
put(CLIConfigurationKeys.MESSAGE_COLLECTOR_KEY, messageCollector)
|
||||||
|
|
||||||
put(CommonConfigurationKeys.MODULE_NAME, "test-module")
|
put(CommonConfigurationKeys.MODULE_NAME, "test-module")
|
||||||
|
|
||||||
|
if (sourceFile.extension == KotlinParserDefinition.STD_SCRIPT_SUFFIX) {
|
||||||
|
loadScriptingPlugin(this)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user