[coroutine][debugger] Unit test support added for Gradle run configurations.

This commit is contained in:
Vladimir Ilmov
2019-11-20 13:17:17 +03:00
parent 82cdcb421b
commit f05a452ef2
6 changed files with 52 additions and 10 deletions
@@ -102,7 +102,7 @@ class CoroutineDumpAction : AnAction(), AnAction.TransparentUpdate {
return
}
val debuggerSession = DebuggerManagerEx.getInstanceEx(project).context.debuggerSession
presentation.isEnabled = debuggerSession != null && debuggerSession.isAttached && Registry.`is`("kotlin.debugger" + ".coroutines")
presentation.isEnabled = debuggerSession != null && debuggerSession.isAttached && isCoroutineDebuggerEnabled()
presentation.isVisible = presentation.isEnabled
}
}
@@ -91,18 +91,15 @@ internal var Project.listenerCreated: Boolean? by UserDataProperty(Key.create("C
internal fun isCoroutineDebuggerEnabled() = Registry.`is`("kotlin.debugger.coroutines")
internal fun <T : RunConfigurationBase<*>?> initializeCoroutineAgent(
params: JavaParameters,
it: String?,
configuration: T
): Boolean {
internal fun initializeCoroutineAgent(params: JavaParameters, it: String?) {
params.vmParametersList?.add("-javaagent:$it")
params.vmParametersList?.add("-ea")
}
internal fun <T : RunConfigurationBase<*>?> registerProjectCoroutineListener(configuration: T) {
val project = (configuration as RunConfigurationBase<*>).project
// add listener to put coroutines tab into debugger tab
if (project.listenerCreated != true) { // prevent multiple listeners creation
CoroutineXDebuggerManagerListener(project).attach()
return true
}
return false
}
@@ -29,7 +29,8 @@ class CoroutinesDebugConfigurationExtension : RunConfigurationExtension() {
if (runnerSettings is DebuggingRunnerData) {
try {
val kotlinxCoroutinesClassPathLib = params?.classPath?.pathList?.first { it.contains("kotlinx-coroutines-debug") }
initializeCoroutineAgent(params!!, kotlinxCoroutinesClassPathLib, configuration)
initializeCoroutineAgent(params!!, kotlinxCoroutinesClassPathLib)
registerProjectCoroutineListener(configuration)
} catch (e: NoSuchElementException) {
log.warn("'kotlinx-coroutines-debug' not found in classpath. Coroutine debugger disabled.")
}
@@ -29,7 +29,8 @@ class CoroutinesDebugConfigurationExtension : RunConfigurationExtension() {
if (runnerSettings is DebuggingRunnerData) {
try {
val kotlinxCoroutinesClassPathLib = params?.classPath?.pathList?.first { it.contains("kotlinx-coroutines-debug") }
initializeCoroutineAgent(params!!, kotlinxCoroutinesClassPathLib, configuration)
initializeCoroutineAgent(params!!, kotlinxCoroutinesClassPathLib)
registerProjectCoroutineListener(configuration)
} catch (e: NoSuchElementException) {
log.warn("'kotlinx-coroutines-debug' not found in classpath. Coroutine debugger disabled.")
}