diff --git a/generators/src/org/jetbrains/kotlin/generators/tests/GenerateTests.kt b/generators/src/org/jetbrains/kotlin/generators/tests/GenerateTests.kt index b014640fcbd..275d3214a40 100755 --- a/generators/src/org/jetbrains/kotlin/generators/tests/GenerateTests.kt +++ b/generators/src/org/jetbrains/kotlin/generators/tests/GenerateTests.kt @@ -128,6 +128,7 @@ import org.jetbrains.kotlin.idea.refactoring.safeDelete.AbstractMultiModuleSafeD import org.jetbrains.kotlin.idea.refactoring.safeDelete.AbstractSafeDeleteTest import org.jetbrains.kotlin.idea.repl.AbstractIdeReplCompletionTest import org.jetbrains.kotlin.idea.resolve.* +import org.jetbrains.kotlin.idea.script.AbstractScriptConfigurationCompletionTest import org.jetbrains.kotlin.idea.script.AbstractScriptConfigurationHighlightingTest import org.jetbrains.kotlin.idea.script.AbstractScriptConfigurationNavigationTest import org.jetbrains.kotlin.idea.slicer.AbstractSlicerTest @@ -704,6 +705,10 @@ fun main(args: Array) { model("script/definition/navigation", extension = null, recursive = false) } + testClass { + model("script/definition/completion", extension = null, recursive = false) + } + testClass { model("refactoring/nameSuggestionProvider") } diff --git a/idea/testData/script/definition/completion/conflictingModule/lib/test/custom.kt b/idea/testData/script/definition/completion/conflictingModule/lib/test/custom.kt new file mode 100644 index 00000000000..e98015f518f --- /dev/null +++ b/idea/testData/script/definition/completion/conflictingModule/lib/test/custom.kt @@ -0,0 +1,7 @@ +package test + +object KObject { + fun foo() { + + } +} \ No newline at end of file diff --git a/idea/testData/script/definition/completion/conflictingModule/script.kts b/idea/testData/script/definition/completion/conflictingModule/script.kts new file mode 100644 index 00000000000..26c43b4df3f --- /dev/null +++ b/idea/testData/script/definition/completion/conflictingModule/script.kts @@ -0,0 +1,6 @@ +test.KObje + +// DEPENDENCIES: classpath:lib-classes; sources:lib-source +// CONFLICTING_MODULE +// EXIST: KObject +// NOTHING_ELSE \ No newline at end of file diff --git a/idea/testData/script/definition/completion/conflictingModuleJavaLib/lib/test/JavaClass.java b/idea/testData/script/definition/completion/conflictingModuleJavaLib/lib/test/JavaClass.java new file mode 100644 index 00000000000..eb1324048c6 --- /dev/null +++ b/idea/testData/script/definition/completion/conflictingModuleJavaLib/lib/test/JavaClass.java @@ -0,0 +1,7 @@ +package test; + +public class JavaClass { + public static void staticMethod() { + + } +} \ No newline at end of file diff --git a/idea/testData/script/definition/completion/conflictingModuleJavaLib/script.kts b/idea/testData/script/definition/completion/conflictingModuleJavaLib/script.kts new file mode 100644 index 00000000000..70af3ce7246 --- /dev/null +++ b/idea/testData/script/definition/completion/conflictingModuleJavaLib/script.kts @@ -0,0 +1,7 @@ +staticMeth + +// DEPENDENCIES: classpath:lib-classes; sources:lib-source +// CONFLICTING_MODULE +// EXIST: staticMethod +// INVOCATION_COUNT: 2 +// NOTHING_ELSE \ No newline at end of file diff --git a/idea/tests/org/jetbrains/kotlin/idea/script/AbstractScriptConfigurationCompletionTest.kt b/idea/tests/org/jetbrains/kotlin/idea/script/AbstractScriptConfigurationCompletionTest.kt new file mode 100644 index 00000000000..78272ec4cb5 --- /dev/null +++ b/idea/tests/org/jetbrains/kotlin/idea/script/AbstractScriptConfigurationCompletionTest.kt @@ -0,0 +1,31 @@ +/* + * Copyright 2010-2017 JetBrains s.r.o. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.jetbrains.kotlin.idea.script + +import org.jetbrains.kotlin.idea.completion.test.testCompletion +import org.jetbrains.kotlin.resolve.jvm.platform.JvmPlatform + +abstract class AbstractScriptConfigurationCompletionTest : AbstractScriptConfigurationTest() { + fun doTest(path: String) { + configureScriptFile(path) + testCompletion(file.text, JvmPlatform, additionalValidDirectives = switches, complete = { completionType, count -> + setType(completionType) + complete(count) + myItems + }) + } +} \ 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 12c949a36dc..6faa2e701ce 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/script/AbstractScriptConfigurationTest.kt +++ b/idea/tests/org/jetbrains/kotlin/idea/script/AbstractScriptConfigurationTest.kt @@ -23,7 +23,7 @@ import com.intellij.openapi.vfs.LocalFileSystem import com.intellij.openapi.vfs.VirtualFile import com.intellij.testFramework.PlatformTestUtil import org.jetbrains.kotlin.codegen.forTestCompile.ForTestCompileRuntime -import org.jetbrains.kotlin.idea.KotlinDaemonAnalyzerTestCase +import org.jetbrains.kotlin.idea.completion.test.KotlinCompletionTestCase import org.jetbrains.kotlin.idea.core.script.ScriptDefinitionContributor import org.jetbrains.kotlin.idea.core.script.ScriptDefinitionsManager import org.jetbrains.kotlin.idea.core.script.ScriptDependenciesManager.Companion.updateScriptDependenciesSynchronously @@ -74,12 +74,12 @@ private const val useDefaultTemplate = "// DEPENDENCIES:" private const val configureConflictingModule = "// CONFLICTING_MODULE" private fun String.splitOrEmpty(delimeters: String) = split(delimeters).takeIf { it.size > 1 } ?: emptyList() -private val switches = listOf( +internal val switches = listOf( useDefaultTemplate, configureConflictingModule ) -abstract class AbstractScriptConfigurationTest : KotlinDaemonAnalyzerTestCase() { +abstract class AbstractScriptConfigurationTest : KotlinCompletionTestCase() { protected fun configureScriptFile(path: String) { val environment = createScriptEnvironment(path) diff --git a/idea/tests/org/jetbrains/kotlin/idea/script/ScriptConfigurationCompletionTestGenerated.java b/idea/tests/org/jetbrains/kotlin/idea/script/ScriptConfigurationCompletionTestGenerated.java new file mode 100644 index 00000000000..c1060bda0b8 --- /dev/null +++ b/idea/tests/org/jetbrains/kotlin/idea/script/ScriptConfigurationCompletionTestGenerated.java @@ -0,0 +1,50 @@ +/* + * Copyright 2010-2017 JetBrains s.r.o. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.jetbrains.kotlin.idea.script; + +import com.intellij.testFramework.TestDataPath; +import org.jetbrains.kotlin.test.JUnit3RunnerWithInners; +import org.jetbrains.kotlin.test.KotlinTestUtils; +import org.jetbrains.kotlin.test.TargetBackend; +import org.jetbrains.kotlin.test.TestMetadata; +import org.junit.runner.RunWith; + +import java.io.File; +import java.util.regex.Pattern; + +/** This class is generated by {@link org.jetbrains.kotlin.generators.tests.TestsPackage}. DO NOT MODIFY MANUALLY */ +@SuppressWarnings("all") +@TestMetadata("idea/testData/script/definition/completion") +@TestDataPath("$PROJECT_ROOT") +@RunWith(JUnit3RunnerWithInners.class) +public class ScriptConfigurationCompletionTestGenerated extends AbstractScriptConfigurationCompletionTest { + public void testAllFilesPresentInCompletion() throws Exception { + KotlinTestUtils.assertAllTestsPresentByMetadata(this.getClass(), new File("idea/testData/script/definition/completion"), Pattern.compile("^([^\\.]+)$"), TargetBackend.ANY, false); + } + + @TestMetadata("conflictingModule") + public void testConflictingModule() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("idea/testData/script/definition/completion/conflictingModule/"); + doTest(fileName); + } + + @TestMetadata("conflictingModuleJavaLib") + public void testConflictingModuleJavaLib() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("idea/testData/script/definition/completion/conflictingModuleJavaLib/"); + doTest(fileName); + } +}