Remove target name from gradle test filters.

Issue #KT-36909 Fixed
This commit is contained in:
Konstantin Tskhovrebov
2020-03-03 14:32:49 +03:00
parent a32f742893
commit 9eab75650c
@@ -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)