Implement class/method run configurations for MPP projects
This commit is contained in:
+14
@@ -23,6 +23,7 @@ import com.intellij.psi.PsiMember
|
||||
import com.intellij.psi.PsiMethod
|
||||
import com.intellij.psi.util.PsiTreeUtil
|
||||
import org.jetbrains.kotlin.asJava.toLightClass
|
||||
import org.jetbrains.kotlin.idea.caches.project.isNewMPPModule
|
||||
import org.jetbrains.kotlin.idea.util.ProjectRootsUtil
|
||||
import org.jetbrains.kotlin.psi.KtClass
|
||||
import org.jetbrains.kotlin.psi.KtFile
|
||||
@@ -35,6 +36,11 @@ class KotlinJUnitRunConfigurationProducer : RunConfigurationProducer<JUnitConfig
|
||||
return other.isProducedBy(JUnitConfigurationProducer::class.java) || other.isProducedBy(AbstractPatternBasedConfigurationProducer::class.java)
|
||||
}
|
||||
|
||||
private fun isAvailableInMpp(context: ConfigurationContext): Boolean {
|
||||
val module = context.module
|
||||
return module == null || !module.isNewMPPModule || !forceGradleRunnerInMPP()
|
||||
}
|
||||
|
||||
override fun isConfigurationFromContext(
|
||||
configuration: JUnitConfiguration,
|
||||
context: ConfigurationContext
|
||||
@@ -43,6 +49,10 @@ class KotlinJUnitRunConfigurationProducer : RunConfigurationProducer<JUnitConfig
|
||||
return false
|
||||
}
|
||||
|
||||
if (!isAvailableInMpp(context)) {
|
||||
return false
|
||||
}
|
||||
|
||||
val leaf = context.location?.psiElement ?: return false
|
||||
val method = getTestMethod(leaf)
|
||||
val testClass = getTestClass(leaf)
|
||||
@@ -75,6 +85,10 @@ class KotlinJUnitRunConfigurationProducer : RunConfigurationProducer<JUnitConfig
|
||||
): Boolean {
|
||||
if (DumbService.getInstance(context.project).isDumb) return false
|
||||
|
||||
if (!isAvailableInMpp(context)) {
|
||||
return false
|
||||
}
|
||||
|
||||
val location = context.location ?: return false
|
||||
val leaf = location.psiElement
|
||||
val module = context.module?.asJvmModule() ?: return false
|
||||
|
||||
@@ -6,6 +6,7 @@
|
||||
package org.jetbrains.kotlin.idea.run
|
||||
|
||||
import com.intellij.openapi.module.Module
|
||||
import com.intellij.openapi.util.registry.Registry
|
||||
import org.jetbrains.kotlin.idea.project.platform
|
||||
import org.jetbrains.kotlin.platform.jvm.isJvm
|
||||
|
||||
@@ -15,3 +16,4 @@ fun Module.asJvmModule(): Module? {
|
||||
return null
|
||||
}
|
||||
|
||||
fun forceGradleRunnerInMPP() = Registry.`is`("kotlin.mpp.tests.force.gradle", true)
|
||||
Reference in New Issue
Block a user