diff --git a/packages/kilo-jetbrains/backend/src/test/kotlin/ai/kilocode/backend/cli/KiloBackendCliKillTest.kt b/packages/kilo-jetbrains/backend/src/test/kotlin/ai/kilocode/backend/cli/KiloBackendCliKillTest.kt index 4ca13c260e4..6ff58fd4972 100644 --- a/packages/kilo-jetbrains/backend/src/test/kotlin/ai/kilocode/backend/cli/KiloBackendCliKillTest.kt +++ b/packages/kilo-jetbrains/backend/src/test/kotlin/ai/kilocode/backend/cli/KiloBackendCliKillTest.kt @@ -33,7 +33,7 @@ class KiloBackendCliKillTest { assertTrue(proc.waitFor(PROCESS_TIMEOUT_SECONDS, TimeUnit.SECONDS), "parent process did not exit") assertFalse(proc.isAlive) - kids.forEach { child -> assertFalse(child.isAlive, "child process ${child.pid()} is still alive") } + kids.forEach { child -> assertTrue(exited(child), "child process ${child.pid()} is still alive") } } finally { cleanup(proc) } @@ -78,6 +78,14 @@ class KiloBackendCliKillTest { return proc.toHandle().descendants().toList() } + private fun exited(child: ProcessHandle): Boolean { + if (!child.isAlive) return true + return runCatching { + child.onExit().get(PROCESS_TIMEOUT_SECONDS, TimeUnit.SECONDS) + true + }.getOrDefault(!child.isAlive) + } + private fun cleanup(proc: Process) { proc.toHandle().descendants().forEach { it.destroyForcibly() } proc.destroyForcibly()