diff --git a/idea/tests/org/jetbrains/kotlin/idea/script/AbstractScriptConfigurationHighlightingTest.kt b/idea/tests/org/jetbrains/kotlin/idea/script/AbstractScriptConfigurationHighlightingTest.kt new file mode 100644 index 00000000000..40f1053b29c --- /dev/null +++ b/idea/tests/org/jetbrains/kotlin/idea/script/AbstractScriptConfigurationHighlightingTest.kt @@ -0,0 +1,41 @@ +/* + * Copyright 2010-2019 JetBrains s.r.o. and Kotlin Programming Language contributors. + * 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.idea.script + +import com.intellij.codeInsight.highlighting.HighlightUsagesHandler +import com.intellij.testFramework.exceptionCases.AbstractExceptionCase +import org.jetbrains.kotlin.idea.core.script.ScriptConfigurationManager +import org.jetbrains.kotlin.test.InTextDirectivesUtils +import org.junit.ComparisonFailure + +abstract class AbstractScriptConfigurationHighlightingTest : AbstractScriptConfigurationTest() { + fun doTest(path: String) { + configureScriptFile(path) + + // Highlight references at caret + HighlightUsagesHandler.invoke(project, editor, myFile) + + checkHighlighting( + editor, + InTextDirectivesUtils.isDirectiveDefined(file.text, "// CHECK_WARNINGS"), + InTextDirectivesUtils.isDirectiveDefined(file.text, "// CHECK_INFOS") + ) + } + + fun doComplexTest(path: String) { + configureScriptFile(path) + assertException(object : AbstractExceptionCase() { + override fun getExpectedExceptionClass(): Class = ComparisonFailure::class.java + + override fun tryClosure() { + checkHighlighting(editor, false, false) + } + }) + + ScriptConfigurationManager.updateScriptDependenciesSynchronously(myFile, project) + checkHighlighting(editor, false, false) + } +} \ No newline at end of file diff --git a/idea/tests/org/jetbrains/kotlin/idea/script/AbstractScriptConfigurationNavigationTest.kt b/idea/tests/org/jetbrains/kotlin/idea/script/AbstractScriptConfigurationNavigationTest.kt new file mode 100644 index 00000000000..aa92112cb7a --- /dev/null +++ b/idea/tests/org/jetbrains/kotlin/idea/script/AbstractScriptConfigurationNavigationTest.kt @@ -0,0 +1,31 @@ +/* + * Copyright 2010-2019 JetBrains s.r.o. and Kotlin Programming Language contributors. + * 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.idea.script + +import org.jetbrains.kotlin.idea.navigation.GotoCheck +import org.jetbrains.kotlin.test.InTextDirectivesUtils +import org.jetbrains.kotlin.test.util.renderAsGotoImplementation +import org.junit.Assert + +abstract class AbstractScriptConfigurationNavigationTest : AbstractScriptConfigurationTest() { + + fun doTest(path: String) { + configureScriptFile(path) + val reference = file!!.findReferenceAt(myEditor.caretModel.offset)!! + + val resolved = reference.resolve()!!.navigationElement!! + + val expectedReference = InTextDirectivesUtils.findStringWithPrefixes(file.text, "// REF:") + val actualReference = resolved.renderAsGotoImplementation() + + Assert.assertEquals(expectedReference, actualReference) + + val expectedFile = InTextDirectivesUtils.findStringWithPrefixes(file.text, "// FILE:") + val actualFile = GotoCheck.getFileWithDir(resolved) + + Assert.assertEquals(expectedFile, actualFile) + } +} \ No newline at end of file diff --git a/idea/tests/org/jetbrains/kotlin/idea/script/AbstractScriptConfigurationTest.kt b/idea/tests/org/jetbrains/kotlin/idea/script/AbstractScriptConfigurationTest.kt index cf029dcf16a..9acd17e6b59 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/script/AbstractScriptConfigurationTest.kt +++ b/idea/tests/org/jetbrains/kotlin/idea/script/AbstractScriptConfigurationTest.kt @@ -54,93 +54,6 @@ import java.util.regex.Pattern import kotlin.script.dependencies.Environment import kotlin.script.experimental.api.ScriptDiagnostic - -abstract class AbstractScriptConfigurationHighlightingTest : AbstractScriptConfigurationTest() { - fun doTest(path: String) { - configureScriptFile(path) - - // Highlight references at caret - HighlightUsagesHandler.invoke(project, editor, myFile) - - checkHighlighting( - editor, - InTextDirectivesUtils.isDirectiveDefined(file.text, "// CHECK_WARNINGS"), - InTextDirectivesUtils.isDirectiveDefined(file.text, "// CHECK_INFOS") - ) - } - - fun doComplexTest(path: String) { - configureScriptFile(path) - assertException(object : AbstractExceptionCase() { - override fun getExpectedExceptionClass(): Class = ComparisonFailure::class.java - - override fun tryClosure() { - checkHighlighting(editor, false, false) - } - }) - - updateScriptDependenciesSynchronously(myFile, project) - checkHighlighting(editor, false, false) - } -} - -abstract class AbstractScriptConfigurationNavigationTest : AbstractScriptConfigurationTest() { - - fun doTest(path: String) { - configureScriptFile(path) - val reference = file!!.findReferenceAt(myEditor.caretModel.offset)!! - - val resolved = reference.resolve()!!.navigationElement!! - - val expectedReference = InTextDirectivesUtils.findStringWithPrefixes(file.text, "// REF:") - val actualReference = resolved.renderAsGotoImplementation() - - Assert.assertEquals(expectedReference, actualReference) - - val expectedFile = InTextDirectivesUtils.findStringWithPrefixes(file.text, "// FILE:") - val actualFile = GotoCheck.getFileWithDir(resolved) - - Assert.assertEquals(expectedFile, actualFile) - } -} - - -abstract class AbstractScriptDefinitionsOrderTest : AbstractScriptConfigurationTest() { - fun doTest(path: String) { - configureScriptFile(path) - - assertException(object : AbstractExceptionCase() { - override fun getExpectedExceptionClass(): Class = ComparisonFailure::class.java - - override fun tryClosure() { - checkHighlighting(editor, false, false) - } - }) - - val definitions = InTextDirectivesUtils - .findStringWithPrefixes(myFile.text, "// SCRIPT DEFINITIONS: ") - ?.split(";") - ?.map { it.substringBefore(":").trim() to it.substringAfter(":").trim() } - ?: error("SCRIPT DEFINITIONS directive should be defined") - - val allDefinitions = ScriptDefinitionsManager.getInstance(project).getAllDefinitions() - for ((definitionName, action) in definitions) { - val scriptDefinition = allDefinitions - .find { it.name == definitionName } - ?: error("Unknown script definition name in SCRIPT DEFINITIONS directive: name=$definitionName, all={${allDefinitions.joinToString { it.name }}}") - when (action) { - "off" -> KotlinScriptingSettings.getInstance(project).setEnabled(scriptDefinition, false) - else -> KotlinScriptingSettings.getInstance(project).setOrder(scriptDefinition, action.toInt()) - } - } - - ScriptDefinitionsManager.getInstance(project).reorderScriptDefinitions() - updateScriptDependenciesSynchronously(myFile, project) - - checkHighlighting(editor, false, false) - } -} - private val validKeys = setOf("javaHome", "sources", "classpath", "imports", "template-classes-names") private const val useDefaultTemplate = "// DEPENDENCIES:" private const val templatesSettings = "// TEMPLATES: " diff --git a/idea/tests/org/jetbrains/kotlin/idea/script/AbstractScriptDefinitionsOrderTest.kt b/idea/tests/org/jetbrains/kotlin/idea/script/AbstractScriptDefinitionsOrderTest.kt new file mode 100644 index 00000000000..643501de10b --- /dev/null +++ b/idea/tests/org/jetbrains/kotlin/idea/script/AbstractScriptDefinitionsOrderTest.kt @@ -0,0 +1,48 @@ +/* + * Copyright 2010-2019 JetBrains s.r.o. and Kotlin Programming Language contributors. + * 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.idea.script + +import com.intellij.testFramework.exceptionCases.AbstractExceptionCase +import org.jetbrains.kotlin.idea.core.script.ScriptConfigurationManager +import org.jetbrains.kotlin.idea.core.script.ScriptDefinitionsManager +import org.jetbrains.kotlin.idea.core.script.settings.KotlinScriptingSettings +import org.jetbrains.kotlin.test.InTextDirectivesUtils +import org.junit.ComparisonFailure + +abstract class AbstractScriptDefinitionsOrderTest : AbstractScriptConfigurationTest() { + fun doTest(path: String) { + configureScriptFile(path) + + assertException(object : AbstractExceptionCase() { + override fun getExpectedExceptionClass(): Class = ComparisonFailure::class.java + + override fun tryClosure() { + checkHighlighting(editor, false, false) + } + }) + + val definitions = InTextDirectivesUtils.findStringWithPrefixes(myFile.text, "// SCRIPT DEFINITIONS: ") + ?.split(";") + ?.map { it.substringBefore(":").trim() to it.substringAfter(":").trim() } + ?: error("SCRIPT DEFINITIONS directive should be defined") + + val allDefinitions = ScriptDefinitionsManager.getInstance(project).getAllDefinitions() + for ((definitionName, action) in definitions) { + val scriptDefinition = allDefinitions + .find { it.name == definitionName } + ?: error("Unknown script definition name in SCRIPT DEFINITIONS directive: name=$definitionName, all={${allDefinitions.joinToString { it.name }}}") + when (action) { + "off" -> KotlinScriptingSettings.getInstance(project).setEnabled(scriptDefinition, false) + else -> KotlinScriptingSettings.getInstance(project).setOrder(scriptDefinition, action.toInt()) + } + } + + ScriptDefinitionsManager.getInstance(project).reorderScriptDefinitions() + ScriptConfigurationManager.updateScriptDependenciesSynchronously(myFile, project) + + checkHighlighting(editor, false, false) + } +} \ No newline at end of file