From 57f1405d95eac0413e5d794ab5996242e5b144e9 Mon Sep 17 00:00:00 2001 From: "nataliya.valtman" Date: Thu, 6 Oct 2022 14:26:12 +0200 Subject: [PATCH] Don't report compilation exceptions into error.log --- .../incremental/util/messageCollectorUtil.kt | 4 ++-- .../jetbrains/kotlin/gradle/BuildReportsIT.kt | 24 +++++++++++++++++++ .../logging/GradleErrorMessageCollector.kt | 8 +++++-- 3 files changed, 32 insertions(+), 4 deletions(-) diff --git a/compiler/incremental-compilation-impl/src/org/jetbrains/kotlin/incremental/util/messageCollectorUtil.kt b/compiler/incremental-compilation-impl/src/org/jetbrains/kotlin/incremental/util/messageCollectorUtil.kt index 8c9b36491d7..681c61c81e3 100644 --- a/compiler/incremental-compilation-impl/src/org/jetbrains/kotlin/incremental/util/messageCollectorUtil.kt +++ b/compiler/incremental-compilation-impl/src/org/jetbrains/kotlin/incremental/util/messageCollectorUtil.kt @@ -8,10 +8,10 @@ import org.jetbrains.kotlin.cli.common.messages.CompilerMessageSeverity import org.jetbrains.kotlin.cli.common.messages.MessageCollector public fun MessageCollector.reportException(e: Throwable, location: ExceptionLocation) { - report(severity = CompilerMessageSeverity.EXCEPTION, message = "$location failed:${e.message}\n${e.stackTraceToString()}") + report(severity = CompilerMessageSeverity.EXCEPTION, message = "${location.readableName} failed: ${e.message}\n${e.stackTraceToString()}") } -public enum class ExceptionLocation(val readablename: String) { +public enum class ExceptionLocation(val readableName: String) { INCREMENTAL_COMPILATION("Incremental compilation"), DAEMON("Daemon compilation"), OUT_OF_PROCESS_COMPILATION("Out of process compilation") diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/BuildReportsIT.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/BuildReportsIT.kt index 7efc7e10f82..6ac95263285 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/BuildReportsIT.kt +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/BuildReportsIT.kt @@ -173,6 +173,15 @@ class BuildReportsIT : KGPBaseTest() { @GradleTest fun testErrorsFileSmokeTest(gradleVersion: GradleVersion) { project("simpleProject", gradleVersion) { + + val lookupsTab = projectPath.resolve("build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/lookups.tab") + buildGradle.appendText(""" + tasks.named("compileKotlin") { + doLast { + new File("${lookupsTab.toUri().path}").write("Invalid contents") + } + } + """.trimIndent()) build("compileKotlin") { assertTrue { projectPath.resolve(".gradle/build_errors").listDirectoryEntries().isEmpty() } } @@ -186,4 +195,19 @@ class BuildReportsIT : KGPBaseTest() { } } + @DisplayName("Error file should not contain compilation exceptions") + @GradleTest + fun testErrorsFileWithCompilationError(gradleVersion: GradleVersion) { + project("simpleProject", gradleVersion) { + build("compileKotlin") { + assertTrue { projectPath.resolve(".gradle/build_errors").listDirectoryEntries().isEmpty() } + } + val kotlinFile = kotlinSourcesDir().resolve("helloWorld.kt") + kotlinFile.modify { it.replace("ArrayList","skjfghsjk") } + buildAndFail("compileKotlin") { + assertTrue { projectPath.resolve(".gradle/build_errors").listDirectoryEntries().isEmpty() } + } + } + } + } diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/logging/GradleErrorMessageCollector.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/logging/GradleErrorMessageCollector.kt index 2b19455ba8c..9ed5bbeff12 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/logging/GradleErrorMessageCollector.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/logging/GradleErrorMessageCollector.kt @@ -11,7 +11,11 @@ import org.jetbrains.kotlin.cli.common.messages.MessageCollector import java.io.File import java.io.FileWriter -class GradleErrorMessageCollector(private val delegate: MessageCollector? = null) : MessageCollector { +class GradleErrorMessageCollector( + private val delegate: MessageCollector? = null, + private val acceptableMessageSeverity: List = listOf(CompilerMessageSeverity.EXCEPTION) +) : MessageCollector { + private val errors = ArrayList() override fun clear() { @@ -26,7 +30,7 @@ class GradleErrorMessageCollector(private val delegate: MessageCollector? = null override fun report(severity: CompilerMessageSeverity, message: String, location: CompilerMessageSourceLocation?) { delegate?.report(severity, message, location) - if (severity in listOf(CompilerMessageSeverity.ERROR, CompilerMessageSeverity.EXCEPTION)) { + if (severity in acceptableMessageSeverity) { synchronized(errors) { errors.add(message) }