@@ -2,10 +2,14 @@ package org.utbot.intellij.plugin.util
2
2
3
3
import com.intellij.coverage.CoverageExecutor
4
4
import com.intellij.execution.ExecutorRegistry
5
+ import com.intellij.execution.JavaTestConfigurationBase
5
6
import com.intellij.execution.Location
6
7
import com.intellij.execution.PsiLocation
7
8
import com.intellij.execution.RunManagerEx
8
9
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
9
13
import com.intellij.execution.executors.DefaultRunExecutor
10
14
import com.intellij.execution.runners.ExecutionUtil
11
15
import com.intellij.execution.runners.ProgramRunner
@@ -23,6 +27,7 @@ import com.intellij.psi.PsiElement
23
27
import com.intellij.psi.PsiFile
24
28
import com.intellij.psi.SmartPsiElementPointer
25
29
import com.intellij.psi.util.childrenOfType
30
+ import java.util.Comparator
26
31
import mu.KotlinLogging
27
32
import org.utbot.intellij.plugin.models.GenerateTestsModel
28
33
import org.utbot.intellij.plugin.util.IntelliJApiHelper.run
@@ -86,10 +91,20 @@ class RunConfigurationHelper {
86
91
)
87
92
run (IntelliJApiHelper .Target .THREAD_POOL ) {
88
93
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
90
105
})
91
106
92
- val settings = if (configurations.isNullOrEmpty ()) null else configurations[0 ].configurationSettings
107
+ val settings = if (configurations.isEmpty ()) null else configurations[0 ].configurationSettings
93
108
if (settings != null ) {
94
109
val executor = if (ProgramRunner .getRunner(CoverageExecutor .EXECUTOR_ID , settings.configuration) != null ) {
95
110
ExecutorRegistry .getInstance().getExecutorById(CoverageExecutor .EXECUTOR_ID ) ? : DefaultRunExecutor .getRunExecutorInstance()
@@ -114,5 +129,6 @@ class RunConfigurationHelper {
114
129
}
115
130
}
116
131
132
+ private fun RunConfiguration.isPatternBased () = this is JavaTestConfigurationBase && testType == " pattern"
117
133
}
118
134
}
0 commit comments