diff --git a/main-actions/src/main/scala/sbt/ForkTests.scala b/main-actions/src/main/scala/sbt/ForkTests.scala index 25eb00c33..af1773a58 100755 --- a/main-actions/src/main/scala/sbt/ForkTests.scala +++ b/main-actions/src/main/scala/sbt/ForkTests.scala @@ -211,7 +211,11 @@ private class React( case NonFatal(_) => () override def notifyExit(p: Process): Unit = - if !process.isAlive then promise.success(process.exitValue()) + if !process.isAlive && !promise.isCompleted then + val exitCode = process.exitValue() + if exitCode != 0 then + promise.failure(new RuntimeException(s"Forked test process exited with code $exitCode")) + else promise.success(exitCode) def processNotification(o: JsonObject): Unit = val method = o.getAsJsonPrimitive("method").getAsString()