From fa4003bac56640dde0d9653e9ccccec23e25f14f Mon Sep 17 00:00:00 2001 From: Ilya Goncharov Date: Tue, 14 Apr 2020 20:17:59 +0300 Subject: [PATCH] [Gradle, JS] Useful message on exception for webpack #KT-38286 fixed --- .../org/jetbrains/kotlin/gradle/internal/exec.kt | 9 ++++----- .../gradle/targets/js/TeamCityMessageCommonClient.kt | 12 ++++++++++++ 2 files changed, 16 insertions(+), 5 deletions(-) diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/internal/exec.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/internal/exec.kt index 46582ad3571..cb145fe2215 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/internal/exec.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/internal/exec.kt @@ -75,13 +75,14 @@ internal fun Project.execWithErrorLogger(description: String, body: (ExecAction) body(exec) return project!!.operation(description) { progress(description) + val client = TeamCityMessageCommonClient(logger, this) exec.standardOutput = TCServiceMessageOutputStreamHandler( - client = TeamCityMessageCommonClient(logger, this), + client = client, onException = { }, logger = logger ) exec.errorOutput = TCServiceMessageOutputStreamHandler( - client = TeamCityMessageCommonClient(logger, this), + client = client, onException = { }, logger = logger ) @@ -89,9 +90,7 @@ internal fun Project.execWithErrorLogger(description: String, body: (ExecAction) val result = exec.execute() if (result.exitValue != 0) { error( - """ - Process '$description' returns ${result.exitValue} - """.trimIndent() + client.testFailedMessage() ) } result diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/TeamCityMessageCommonClient.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/TeamCityMessageCommonClient.kt index 86d53629de3..864a7713fca 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/TeamCityMessageCommonClient.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/TeamCityMessageCommonClient.kt @@ -10,6 +10,7 @@ import jetbrains.buildServer.messages.serviceMessages.ServiceMessage import jetbrains.buildServer.messages.serviceMessages.ServiceMessageParserCallback import org.gradle.api.logging.Logger import org.gradle.internal.logging.progress.ProgressLogger +import org.jetbrains.kotlin.gradle.utils.clearAnsiColor import java.text.ParseException class TeamCityMessageCommonClient( @@ -17,6 +18,8 @@ class TeamCityMessageCommonClient( private val progressLogger: ProgressLogger ) : ServiceMessageParserCallback { + private val errors = mutableListOf() + private val stackTraceProcessor = TeamCityMessageStackTraceProcessor() override fun parseException(e: ParseException, text: String) { @@ -29,6 +32,11 @@ class TeamCityMessageCommonClient( } } + internal fun testFailedMessage(): String { + return errors + .joinToString("\n") + } + private fun printMessage(text: String, type: String?) { val value = text.trimEnd() progressLogger.progress(value) @@ -41,6 +49,10 @@ class TeamCityMessageCommonClient( } } + when (actualType) { + ERROR, WARN -> errors.add(value.clearAnsiColor()) + } + actualType?.let { log.processLogMessage(value, it) } }