@@ -6,6 +6,8 @@ import com.intellij.execution.process.ProcessHandler
66import com.intellij.execution.runners.ExecutionEnvironment
77import com.intellij.execution.testframework.sm.SMTestRunnerConnectionUtil
88import com.intellij.execution.testframework.sm.runner.SMTRunnerEventsListener
9+ import com.intellij.execution.testframework.sm.runner.SMTestProxy.SMRootTestProxy
10+ import com.intellij.execution.testframework.sm.runner.events.TestDurationStrategy
911import com.intellij.execution.testframework.sm.runner.ui.SMTRunnerConsoleView
1012import com.intellij.openapi.actionSystem.AnAction
1113import com.intellij.openapi.externalSystem.execution.ExternalSystemExecutionConsoleManager
@@ -16,7 +18,6 @@ import com.intellij.openapi.project.Project
1618import com.intellij.openapi.util.Key
1719import io.kotest.plugin.intellij.Constants
1820import jetbrains.buildServer.messages.serviceMessages.ServiceMessagesParser
19- import org.jetbrains.plugins.gradle.service.execution.GradleRunConfiguration
2021import org.jetbrains.plugins.gradle.util.GradleConstants
2122
2223// object KotestConsoleFilterProvider: ConsoleFilterProvider {
@@ -47,7 +48,7 @@ class KotestExecutionConsoleManager : ExternalSystemExecutionConsoleManager<SMTR
4748 return emptyArray()
4849 }
4950
50- @Suppress(" UnstableApiUsage" )
51+ @Suppress(" UnstableApiUsage" , " OverrideOnly " )
5152 override fun attachExecutionConsole (
5253 project : Project ,
5354 task : ExternalSystemTask ,
@@ -59,11 +60,9 @@ class KotestExecutionConsoleManager : ExternalSystemExecutionConsoleManager<SMTR
5960 if (processHandler == null ) return null
6061 val settings = env.runnerAndConfigurationSettings ? : return null
6162
62- val runConfiguration = settings.configuration as GradleRunConfiguration
63- val consoleProperties = KotestSMTRunnerConsoleProperties (runConfiguration, env.executor)
63+ val consoleProperties = KotestSMTRunnerConsoleProperties (settings.configuration, env.executor)
6464
6565// val splitterPropertyName = SMTestRunnerConnectionUtil.getSplitterPropertyName(Constants.FrameworkName)
66- //
6766// val consoleView = KotestSMTRunnerConsoleView(consoleProperties, splitterPropertyName)
6867
6968 val consoleView = SMTestRunnerConnectionUtil .createConsole(consoleProperties)
@@ -72,6 +71,16 @@ class KotestExecutionConsoleManager : ExternalSystemExecutionConsoleManager<SMTR
7271 SMTestRunnerConnectionUtil .initConsoleView(consoleView, Constants .FRAMEWORK_NAME )
7372
7473 consoleView.resultsViewer.testsRootNode.executionId = env.executionId
74+ try {
75+ // don't know why this method is not public, and cannot figure out how to override it
76+ // see https://youtrack.jetbrains.com/issue/IJSDK-2340/set-duration-strategy-on-SMRootTestProxy
77+ val method = SMRootTestProxy ::class .java.getDeclaredMethod(" setDurationStrategy" , TestDurationStrategy ::class .java)
78+ method.isAccessible = true
79+ method.invoke(consoleView.resultsViewer.testsRootNode, TestDurationStrategy .MANUAL )
80+ } catch (e: Exception ) {
81+ println (e)
82+ e.printStackTrace()
83+ }
7584 consoleView.resultsViewer.testsRootNode.setSuiteStarted()
7685
7786 val publisher = project.messageBus.syncPublisher(SMTRunnerEventsListener .TEST_STATUS )
@@ -89,6 +98,7 @@ class KotestExecutionConsoleManager : ExternalSystemExecutionConsoleManager<SMTR
8998 }
9099 consoleView.resultsViewer.onBeforeTestingFinished(consoleView.resultsViewer.testsRootNode)
91100 publisher.onBeforeTestingFinished(consoleView.resultsViewer.testsRootNode)
101+
92102 consoleView.resultsViewer.onTestingFinished(consoleView.resultsViewer.testsRootNode)
93103 publisher.onTestingFinished(consoleView.resultsViewer.testsRootNode)
94104 }
0 commit comments