Skip to content

Commit fcae703

Browse files
Only one of generated tests is run with Generate and Run #1149
1 parent 0c5374e commit fcae703

File tree

1 file changed

+18
-2
lines changed

1 file changed

+18
-2
lines changed

utbot-intellij/src/main/kotlin/org/utbot/intellij/plugin/util/RunConfigurationHelper.kt

+18-2
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,14 @@ package org.utbot.intellij.plugin.util
22

33
import com.intellij.coverage.CoverageExecutor
44
import com.intellij.execution.ExecutorRegistry
5+
import com.intellij.execution.JavaTestConfigurationBase
56
import com.intellij.execution.Location
67
import com.intellij.execution.PsiLocation
78
import com.intellij.execution.RunManagerEx
89
import com.intellij.execution.actions.ConfigurationContext
10+
import com.intellij.execution.actions.ConfigurationFromContext
11+
import com.intellij.execution.actions.RunConfigurationProducer
12+
import com.intellij.execution.configurations.RunConfiguration
913
import com.intellij.execution.executors.DefaultRunExecutor
1014
import com.intellij.execution.runners.ExecutionUtil
1115
import com.intellij.execution.runners.ProgramRunner
@@ -23,6 +27,7 @@ import com.intellij.psi.PsiElement
2327
import com.intellij.psi.PsiFile
2428
import com.intellij.psi.SmartPsiElementPointer
2529
import com.intellij.psi.util.childrenOfType
30+
import java.util.Comparator
2631
import mu.KotlinLogging
2732
import org.utbot.intellij.plugin.models.GenerateTestsModel
2833
import org.utbot.intellij.plugin.util.IntelliJApiHelper.run
@@ -86,10 +91,20 @@ class RunConfigurationHelper {
8691
)
8792
run(IntelliJApiHelper.Target.THREAD_POOL) {
8893
val configurations = ApplicationManager.getApplication().runReadAction(Computable {
89-
myConfigurationContext.configurationsFromContext
94+
val list = RunConfigurationProducer.getProducers(model.project)
95+
.mapNotNull { it.findOrCreateConfigurationFromContext(myConfigurationContext) }
96+
.toMutableList().sortedWith(Comparator<ConfigurationFromContext> { o1, o2 ->
97+
val p1 = o1.configuration.isPatternBased()
98+
val p2 = o2.configuration.isPatternBased()
99+
if (p1 xor p2) {
100+
return@Comparator if (p1) -1 else 1
101+
}
102+
ConfigurationFromContext.COMPARATOR.compare(o1, o2)
103+
})
104+
return@Computable list
90105
})
91106

92-
val settings = if (configurations.isNullOrEmpty()) null else configurations[0].configurationSettings
107+
val settings = if (configurations.isEmpty()) null else configurations[0].configurationSettings
93108
if (settings != null) {
94109
val executor = if (ProgramRunner.getRunner(CoverageExecutor.EXECUTOR_ID, settings.configuration) != null) {
95110
ExecutorRegistry.getInstance().getExecutorById(CoverageExecutor.EXECUTOR_ID) ?: DefaultRunExecutor.getRunExecutorInstance()
@@ -114,5 +129,6 @@ class RunConfigurationHelper {
114129
}
115130
}
116131

132+
private fun RunConfiguration.isPatternBased() = this is JavaTestConfigurationBase && testType == "pattern"
117133
}
118134
}

0 commit comments

Comments
 (0)