Rewrite NavigateToStdlibSourceTest with project descriptors

This commit is contained in:
Nikolay Krasko
2018-11-30 18:44:33 +03:00
parent 96282b3c52
commit 8a63a1655f
5 changed files with 103 additions and 84 deletions
@@ -112,6 +112,27 @@ abstract class KotlinLightCodeInsightFixtureTestCase : KotlinLightCodeInsightFix
return when (platformId) {
JDK_AND_MULTIPLATFORM_STDLIB_WITH_SOURCES -> KotlinJdkAndMultiplatformStdlibDescriptor.JDK_AND_MULTIPLATFORM_STDLIB_WITH_SOURCES
KOTLIN_JVM_WITH_STDLIB_SOURCES -> ProjectDescriptorWithStdlibSources.INSTANCE
KOTLIN_JAVASCRIPT -> KotlinStdJSProjectDescriptor
KOTLIN_JVM_WITH_STDLIB_SOURCES_WITH_ADDITIONAL_JS -> {
KotlinMultiModuleProjectDescriptor(
KOTLIN_JVM_WITH_STDLIB_SOURCES_WITH_ADDITIONAL_JS,
mainModuleDescriptor = ProjectDescriptorWithStdlibSources.INSTANCE,
additionalModuleDescriptor = KotlinStdJSProjectDescriptor
)
}
KOTLIN_JAVASCRIPT_WITH_ADDITIONAL_JVM_WITH_STDLIB -> {
KotlinMultiModuleProjectDescriptor(
KOTLIN_JAVASCRIPT_WITH_ADDITIONAL_JVM_WITH_STDLIB,
mainModuleDescriptor = KotlinStdJSProjectDescriptor,
additionalModuleDescriptor = ProjectDescriptorWithStdlibSources.INSTANCE
)
}
else -> throw IllegalStateException("Unknown value for project descriptor kind")
}
}
@@ -0,0 +1,43 @@
/*
* Copyright 2010-2018 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.idea.test
import com.intellij.openapi.module.Module
import com.intellij.openapi.project.Project
import com.intellij.openapi.roots.ModifiableRootModel
class KotlinMultiModuleProjectDescriptor(
val id: String,
private val mainModuleDescriptor: KotlinLightProjectDescriptor,
private val additionalModuleDescriptor: KotlinLightProjectDescriptor
) : KotlinLightProjectDescriptor() {
lateinit var additionalModule: Module
override fun setUpProject(project: Project, handler: SetupHandler) {
super.setUpProject(project, handler)
additionalModule = additionalModuleDescriptor.createMainModule(project)
}
override fun configureModule(module: Module, model: ModifiableRootModel) {
mainModuleDescriptor.configureModule(module, model)
}
override fun equals(other: Any?): Boolean {
if (this === other) return true
if (javaClass != other?.javaClass) return false
other as KotlinMultiModuleProjectDescriptor
if (id != other.id) return false
return true
}
override fun hashCode(): Int {
return id.hashCode()
}
}
@@ -9,4 +9,12 @@ package org.jetbrains.kotlin.idea.test
@Target(AnnotationTarget.FUNCTION)
annotation class ProjectDescriptorKind(val value: String)
const val JDK_AND_MULTIPLATFORM_STDLIB_WITH_SOURCES = "JDK_AND_MULTIPLATFORM_STDLIB_WITH_SOURCES"
const val JDK_AND_MULTIPLATFORM_STDLIB_WITH_SOURCES = "JDK_AND_MULTIPLATFORM_STDLIB_WITH_SOURCES"
const val KOTLIN_JVM_WITH_STDLIB_SOURCES = "KOTLIN_JVM_WITH_STDLIB_SOURCES"
const val KOTLIN_JAVASCRIPT = "KOTLIN_JAVASCRIPT"
const val KOTLIN_JVM_WITH_STDLIB_SOURCES_WITH_ADDITIONAL_JS = "KOTLIN_JVM_WITH_STDLIB_SOURCES_WITH_ADDITIONAL_JS"
const val KOTLIN_JAVASCRIPT_WITH_ADDITIONAL_JVM_WITH_STDLIB = "KOTLIN_JAVASCRIPT_WITH_ADDITIONAL_JVM_WITH_STDLIB"