Don't report compilation exceptions into error.log

This commit is contained in:
nataliya.valtman
2022-10-06 14:26:12 +02:00
committed by Space Team
parent 2379185398
commit 57f1405d95
3 changed files with 32 additions and 4 deletions
@@ -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")
@@ -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() }
}
}
}
}
@@ -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<CompilerMessageSeverity> = listOf(CompilerMessageSeverity.EXCEPTION)
) : MessageCollector {
private val errors = ArrayList<String>()
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)
}