From 7d765549663048240c761ae8b1a46bbc33b291f8 Mon Sep 17 00:00:00 2001 From: Natalia Selezneva Date: Wed, 28 Feb 2018 09:05:50 +0300 Subject: [PATCH] Run script action in IDE should use kotlin compiler from plugin ^KT-22647 Fixed --- .../KotlinStandaloneScriptRunConfiguration.kt | 2 ++ .../run/StandaloneScriptRunConfigurationTest.kt | 14 ++++++++++---- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/run/script/standalone/KotlinStandaloneScriptRunConfiguration.kt b/idea/idea-jvm/src/org/jetbrains/kotlin/idea/run/script/standalone/KotlinStandaloneScriptRunConfiguration.kt index f4e68994226..b1afcd5c7c1 100644 --- a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/run/script/standalone/KotlinStandaloneScriptRunConfiguration.kt +++ b/idea/idea-jvm/src/org/jetbrains/kotlin/idea/run/script/standalone/KotlinStandaloneScriptRunConfiguration.kt @@ -201,6 +201,8 @@ private class ScriptCommandLineState( params.mainClass = "org.jetbrains.kotlin.cli.jvm.K2JVMCompiler" params.programParametersList.prepend(filePath) params.programParametersList.prepend("-script") + params.programParametersList.prepend(PathUtil.kotlinPathsForIdeaPlugin.homePath.path) + params.programParametersList.prepend("-kotlin-home") return params } diff --git a/idea/tests/org/jetbrains/kotlin/idea/run/StandaloneScriptRunConfigurationTest.kt b/idea/tests/org/jetbrains/kotlin/idea/run/StandaloneScriptRunConfigurationTest.kt index ed72ee0ed0b..c0b34e5950e 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/run/StandaloneScriptRunConfigurationTest.kt +++ b/idea/tests/org/jetbrains/kotlin/idea/run/StandaloneScriptRunConfigurationTest.kt @@ -27,7 +27,7 @@ import org.jetbrains.kotlin.idea.search.allScope import org.jetbrains.kotlin.idea.stubindex.KotlinScriptFqnIndex import org.jetbrains.kotlin.idea.test.KotlinCodeInsightTestCase import org.jetbrains.kotlin.idea.test.PluginTestCaseBase -import org.jetbrains.kotlin.psi.KtScript +import org.jetbrains.kotlin.utils.PathUtil import org.junit.Assert import kotlin.test.assertNotEquals @@ -43,9 +43,9 @@ class StandaloneScriptRunConfigurationTest : KotlinCodeInsightTestCase() { val javaParameters = getJavaRunParameters(runConfiguration) val programParametersList = javaParameters.programParametersList.list - val (first, second) = programParametersList - Assert.assertEquals("Should pass -script to compiler", "-script", first) - Assert.assertTrue("Should pass script file to compiler", second.contains("simpleScript.kts")) + + programParametersList.checkParameter("-script") { it.contains("simpleScript.kts") } + programParametersList.checkParameter("-kotlin-home") { it == PathUtil.kotlinPathsForIdeaPlugin.homePath.path } } fun testOnFileRename() { @@ -122,6 +122,12 @@ class StandaloneScriptRunConfigurationTest : KotlinCodeInsightTestCase() { assertEquals(originalWorkingDirectory, runConfiguration.workingDirectory) } + private fun List.checkParameter(name: String, condition: (String) -> Boolean) { + val param = find { it == name } ?: throw AssertionError("Should pass $name to compiler") + val paramValue = this[this.indexOf(param) + 1] + Assert.assertTrue("Check for $name parameter fails: actual value = $paramValue", condition(paramValue)) + } + fun moveScriptFile(scriptFile: PsiFile) { ActionRunner.runInsideWriteAction { VfsUtil.createDirectoryIfMissing(scriptFile.virtualFile.parent, "dest") }