@@ -2,10 +2,14 @@ package org.utbot.intellij.plugin.util
22
33import com.intellij.coverage.CoverageExecutor
44import com.intellij.execution.ExecutorRegistry
5+ import com.intellij.execution.JavaTestConfigurationBase
56import com.intellij.execution.Location
67import com.intellij.execution.PsiLocation
78import com.intellij.execution.RunManagerEx
89import 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
913import com.intellij.execution.executors.DefaultRunExecutor
1014import com.intellij.execution.runners.ExecutionUtil
1115import com.intellij.execution.runners.ProgramRunner
@@ -23,6 +27,7 @@ import com.intellij.psi.PsiElement
2327import com.intellij.psi.PsiFile
2428import com.intellij.psi.SmartPsiElementPointer
2529import com.intellij.psi.util.childrenOfType
30+ import java.util.Comparator
2631import mu.KotlinLogging
2732import org.utbot.intellij.plugin.models.GenerateTestsModel
2833import 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