diff --git a/idea/idea-gradle/src/org/jetbrains/kotlin/idea/run/AbstractKotlinTestMethodGradleConfigurationProducer.kt b/idea/idea-gradle/src/org/jetbrains/kotlin/idea/run/AbstractKotlinTestMethodGradleConfigurationProducer.kt index 10eb101448d..c762950eba9 100644 --- a/idea/idea-gradle/src/org/jetbrains/kotlin/idea/run/AbstractKotlinTestMethodGradleConfigurationProducer.kt +++ b/idea/idea-gradle/src/org/jetbrains/kotlin/idea/run/AbstractKotlinTestMethodGradleConfigurationProducer.kt @@ -6,9 +6,11 @@ package org.jetbrains.kotlin.idea.run import com.intellij.execution.Location +import com.intellij.execution.PsiLocation import com.intellij.execution.actions.ConfigurationContext import com.intellij.execution.actions.ConfigurationFromContext import com.intellij.execution.junit.InheritorChooser +import com.intellij.execution.junit2.PsiMemberParameterizedLocation import com.intellij.openapi.externalSystem.service.execution.ExternalSystemRunConfiguration import com.intellij.openapi.externalSystem.util.ExternalSystemApiUtil import com.intellij.openapi.module.Module @@ -17,7 +19,9 @@ import com.intellij.psi.PsiClass import com.intellij.psi.PsiElement import com.intellij.psi.PsiMethod import org.jetbrains.kotlin.idea.caches.project.isNewMPPModule +import org.jetbrains.kotlin.idea.facet.externalSystemTestTasks import org.jetbrains.kotlin.idea.project.platform +import org.jetbrains.kotlin.idea.util.module import org.jetbrains.kotlin.platform.TargetPlatform import org.jetbrains.plugins.gradle.execution.test.runner.TestMethodGradleConfigurationProducer import org.jetbrains.plugins.gradle.execution.test.runner.applyTestConfiguration @@ -76,12 +80,25 @@ abstract class AbstractKotlinMultiplatformTestMethodGradleConfigurationProducer ) { val dataContext = MultiplatformTestTasksChooser.createContext(context.dataContext, psiMethod.name) + val availableTargets = + classes + .mapNotNull { psiClass -> psiClass.module } + .flatMap { module -> module.externalSystemTestTasks() } + .map { extTask -> extTask.targetName } + .distinct() + mppTestTasksChooser.multiplatformChooseTasks(context.project, dataContext, classes.asList()) { tasks -> val configuration = fromContext.configuration as ExternalSystemRunConfiguration val settings = configuration.settings val result = settings.applyTestConfiguration(context.module, tasks, *classes) { - createTestFilterFrom(context.location, it, psiMethod, true) + var filters = createTestFilterFrom(context.location, it, psiMethod, true) + if (context.location is PsiMemberParameterizedLocation) { + availableTargets.forEach { targetName -> + filters = filters.replace("[*$targetName*]", "") + } + } + filters } settings.externalProjectPath = ExternalSystemApiUtil.getExternalProjectPath(context.module)