Skip to content

Commit 30c5f5b

Browse files
authored
Fixed durations (#340)
1 parent baf291c commit 30c5f5b

5 files changed

Lines changed: 22 additions & 12 deletions

File tree

build.gradle.kts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@ val descriptors = listOf(
7676
),
7777
)
7878

79-
val productName = System.getenv("PRODUCT_NAME") ?: "IC-242"
79+
val productName = System.getenv("PRODUCT_NAME") ?: "IC-243"
8080
val jvmTargetVersion = System.getenv("JVM_TARGET") ?: "17"
8181
val descriptor = descriptors.first { it.sourceFolder == productName }
8282

gradle.properties

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,3 +8,5 @@ org.gradle.caching=true
88
sandbox = /tmp/
99

1010
kotlin.stdlib.default.dependency = false
11+
org.gradle.jvmargs=-Xmx4g -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8
12+
systemProp.org.gradle.jvmargs=-Xmx4g -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8

src/main/kotlin/io/kotest/plugin/intellij/console/KotestExecutionConsoleManager.kt

Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@ import com.intellij.execution.process.ProcessHandler
66
import com.intellij.execution.runners.ExecutionEnvironment
77
import com.intellij.execution.testframework.sm.SMTestRunnerConnectionUtil
88
import 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
911
import com.intellij.execution.testframework.sm.runner.ui.SMTRunnerConsoleView
1012
import com.intellij.openapi.actionSystem.AnAction
1113
import com.intellij.openapi.externalSystem.execution.ExternalSystemExecutionConsoleManager
@@ -16,7 +18,6 @@ import com.intellij.openapi.project.Project
1618
import com.intellij.openapi.util.Key
1719
import io.kotest.plugin.intellij.Constants
1820
import jetbrains.buildServer.messages.serviceMessages.ServiceMessagesParser
19-
import org.jetbrains.plugins.gradle.service.execution.GradleRunConfiguration
2021
import 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
}

src/main/kotlin/io/kotest/plugin/intellij/console/KotestSMTRunnerConsoleProperties.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,17 +2,17 @@ package io.kotest.plugin.intellij.console
22

33
import com.intellij.execution.Executor
44
import com.intellij.execution.Location
5+
import com.intellij.execution.configurations.RunConfiguration
56
import com.intellij.execution.testframework.JavaAwareTestConsoleProperties
67
import com.intellij.execution.testframework.sm.runner.SMTRunnerConsoleProperties
78
import com.intellij.execution.testframework.sm.runner.SMTestLocator
8-
import com.intellij.openapi.externalSystem.service.execution.ExternalSystemRunConfiguration
99
import com.intellij.pom.Navigatable
1010
import io.kotest.plugin.intellij.Constants
1111
import io.kotest.plugin.intellij.KotestTestLocator
1212
import javax.swing.tree.TreeSelectionModel
1313

1414
class KotestSMTRunnerConsoleProperties(
15-
conf: ExternalSystemRunConfiguration,
15+
conf: RunConfiguration,
1616
executor: Executor
1717
) : SMTRunnerConsoleProperties(conf, Constants.FRAMEWORK_NAME, executor) {
1818

src/main/kotlin/io/kotest/plugin/intellij/console/KotestServiceMessageCallback.kt

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ class KotestServiceMessageCallback(
4747
proxy.setFinished()
4848
val attrs = MessageAttributeParser.parse(msg)
4949
// this will actually be ignored due to a bug in intellij
50-
proxy.setDuration(attrs.duration?.inWholeMilliseconds ?: 0L)
50+
attrs.duration?.let { proxy.setDuration(attrs.duration.inWholeMilliseconds) }
5151
console.resultsViewer.onSuiteFinished(proxy)
5252
publisher.onSuiteFinished(proxy)
5353
}
@@ -61,7 +61,7 @@ class KotestServiceMessageCallback(
6161
val proxy = getProxy(msg)
6262
proxy.setFinished()
6363
val attrs = MessageAttributeParser.parse(msg)
64-
proxy.setDuration(attrs.duration?.inWholeMilliseconds ?: 0L)
64+
attrs.duration?.let { proxy.setDuration(attrs.duration.inWholeMilliseconds) }
6565
console.resultsViewer.onTestFinished(proxy)
6666
publisher.onTestFinished(proxy)
6767
}
@@ -96,6 +96,4 @@ class KotestServiceMessageCallback(
9696
val attrs = MessageAttributeParser.parse(msg)
9797
return proxies[attrs.id] ?: error("Proxy ${attrs.id} not found")
9898
}
99-
100-
10199
}

0 commit comments

Comments
 (0)