diff --git a/idea/idea-test-framework/src/org/jetbrains/kotlin/idea/test/KotlinJdkAndLibraryProjectDescriptor.kt b/idea/idea-test-framework/src/org/jetbrains/kotlin/idea/test/KotlinJdkAndLibraryProjectDescriptor.kt index 83e608061f8..246091fad01 100644 --- a/idea/idea-test-framework/src/org/jetbrains/kotlin/idea/test/KotlinJdkAndLibraryProjectDescriptor.kt +++ b/idea/idea-test-framework/src/org/jetbrains/kotlin/idea/test/KotlinJdkAndLibraryProjectDescriptor.kt @@ -27,24 +27,26 @@ import com.intellij.openapi.vfs.VfsUtil import java.io.File -open class KotlinJdkAndLibraryProjectDescriptor(private val libraryFile: File) : KotlinLightProjectDescriptor() { +open class KotlinJdkAndLibraryProjectDescriptor(private val libraryFiles: List) : KotlinLightProjectDescriptor() { + + constructor(libraryFile: File) : this(listOf(libraryFile)) init { - assert(libraryFile.exists()) { "Library file doesn't exist: " + libraryFile.absolutePath } + for (libraryFile in libraryFiles) { + assert(libraryFile.exists()) { "Library file doesn't exist: " + libraryFile.absolutePath } + } } - override fun getModuleType(): ModuleType<*> { - return StdModuleTypes.JAVA - } + override fun getModuleType(): ModuleType<*> = StdModuleTypes.JAVA - override fun getSdk(): Sdk? { - return PluginTestCaseBase.mockJdk() - } + override fun getSdk(): Sdk? = PluginTestCaseBase.mockJdk() override fun configureModule(module: Module, model: ModifiableRootModel) { val editor = NewLibraryEditor() editor.name = LIBRARY_NAME - editor.addRoot(VfsUtil.getUrlForLibraryRoot(libraryFile), OrderRootType.CLASSES) + for (libraryFile in libraryFiles) { + editor.addRoot(VfsUtil.getUrlForLibraryRoot(libraryFile), OrderRootType.CLASSES) + } ConfigLibraryUtil.addLibrary(editor, model) } diff --git a/idea/idea-test-framework/src/org/jetbrains/kotlin/idea/test/KotlinLightCodeInsightFixtureTestCase.kt b/idea/idea-test-framework/src/org/jetbrains/kotlin/idea/test/KotlinLightCodeInsightFixtureTestCase.kt index 64e51248502..89139c92e6a 100644 --- a/idea/idea-test-framework/src/org/jetbrains/kotlin/idea/test/KotlinLightCodeInsightFixtureTestCase.kt +++ b/idea/idea-test-framework/src/org/jetbrains/kotlin/idea/test/KotlinLightCodeInsightFixtureTestCase.kt @@ -115,6 +115,9 @@ abstract class KotlinLightCodeInsightFixtureTestCase : KotlinLightCodeInsightFix else if (InTextDirectivesUtils.isDirectiveDefined(fileText, "RUNTIME_WITH_SOURCES")) { return ProjectDescriptorWithStdlibSources.INSTANCE } + else if (InTextDirectivesUtils.isDirectiveDefined(fileText, "RUNTIME_WITH_KOTLIN_TEST")) { + return KotlinWithJdkAndRuntimeLightProjectDescriptor.INSTANCE_WITH_KOTLIN_TEST + } else if (InTextDirectivesUtils.isDirectiveDefined(fileText, "RUNTIME") || InTextDirectivesUtils.isDirectiveDefined(fileText, "WITH_RUNTIME")) { return KotlinWithJdkAndRuntimeLightProjectDescriptor.INSTANCE diff --git a/idea/idea-test-framework/src/org/jetbrains/kotlin/idea/test/KotlinWithJdkAndRuntimeLightProjectDescriptor.java b/idea/idea-test-framework/src/org/jetbrains/kotlin/idea/test/KotlinWithJdkAndRuntimeLightProjectDescriptor.java index 892386fb296..4e33a30ebf7 100644 --- a/idea/idea-test-framework/src/org/jetbrains/kotlin/idea/test/KotlinWithJdkAndRuntimeLightProjectDescriptor.java +++ b/idea/idea-test-framework/src/org/jetbrains/kotlin/idea/test/KotlinWithJdkAndRuntimeLightProjectDescriptor.java @@ -17,14 +17,28 @@ package org.jetbrains.kotlin.idea.test; import com.intellij.openapi.projectRoots.Sdk; +import org.jetbrains.annotations.NotNull; import org.jetbrains.kotlin.codegen.forTestCompile.ForTestCompileRuntime; +import org.jetbrains.kotlin.utils.PathUtil; + +import java.io.File; +import java.util.Arrays; +import java.util.List; public class KotlinWithJdkAndRuntimeLightProjectDescriptor extends KotlinJdkAndLibraryProjectDescriptor { protected KotlinWithJdkAndRuntimeLightProjectDescriptor() { super(ForTestCompileRuntime.runtimeJarForTests()); } + protected KotlinWithJdkAndRuntimeLightProjectDescriptor(@NotNull List libraryFiles) { + super(libraryFiles); + } + public static final KotlinWithJdkAndRuntimeLightProjectDescriptor INSTANCE = new KotlinWithJdkAndRuntimeLightProjectDescriptor(); + public static final KotlinWithJdkAndRuntimeLightProjectDescriptor INSTANCE_WITH_KOTLIN_TEST = new KotlinWithJdkAndRuntimeLightProjectDescriptor( + Arrays.asList(ForTestCompileRuntime.runtimeJarForTests(), + PathUtil.getKotlinPathsForDistDirectory().getKotlinTestPath()) + ); public static final KotlinWithJdkAndRuntimeLightProjectDescriptor INSTANCE_FULL_JDK = new KotlinWithJdkAndRuntimeLightProjectDescriptor() { @Override public Sdk getSdk() {