mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
IDEA-390110 [gradle] fix: add message and description fallbacks to GradleIssueFailure
(cherry picked from commit 4637926451f81bddd052b9997181bebd425f6f92) IJ-CR-214557 GitOrigin-RevId: ad16edc376009210a59d421cf91054fe5904f93a
This commit is contained in:
committed by
intellij-monorepo-bot
parent
dd487f45e3
commit
7a605c737f
@@ -7,37 +7,41 @@ import java.nio.file.Path
|
||||
import java.util.regex.Pattern
|
||||
|
||||
internal class GradleIssueFailureImpl(
|
||||
override val message: String?,
|
||||
override val description: String?,
|
||||
message: String?,
|
||||
description: String?,
|
||||
override val causes: List<GradleIssueFailure>,
|
||||
) : GradleIssueFailure {
|
||||
|
||||
override val message: String? = message ?: causes.resolveForNonEmptyCauses { it.message }
|
||||
|
||||
override val description: String? = description ?: causes.resolveForNonEmptyCauses { it.description }
|
||||
|
||||
override val rootCause: GradleIssueFailure = causes.resolveForNonEmptyCauses { it.rootCause } ?: this
|
||||
|
||||
override val filePosition: FilePosition? = resolveFilePosition(message, description, causes)
|
||||
|
||||
override val className: String? = resolveClassName(description)
|
||||
|
||||
override val text: String = resolveFailureText(message, description, className) ?: ""
|
||||
override val text: String = resolveFailureText(message, description, className)
|
||||
}
|
||||
|
||||
internal class GradleThrowableIssueFailure(
|
||||
val throwable: Throwable,
|
||||
) : GradleIssueFailure {
|
||||
|
||||
override val message: String? = throwable.message
|
||||
override val causes: List<GradleThrowableIssueFailure> = resolveCauses(throwable)
|
||||
|
||||
override val message: String? = throwable.message ?: causes.resolveForNonEmptyCauses { it.message }
|
||||
|
||||
override val description: String = throwable.stackTraceToString()
|
||||
|
||||
override val causes: List<GradleThrowableIssueFailure> = resolveCauses(throwable)
|
||||
|
||||
override val rootCause: GradleThrowableIssueFailure = causes.resolveForNonEmptyCauses { it.rootCause } ?: this
|
||||
|
||||
override val filePosition: FilePosition? = resolveFilePosition(message, description, causes)
|
||||
override val filePosition: FilePosition? = resolveFilePosition(throwable.message, description, causes)
|
||||
|
||||
override val className: String = throwable.javaClass.name
|
||||
|
||||
override val text: String = resolveFailureText(message, description, className) ?: ""
|
||||
override val text: String = resolveFailureText(throwable.message, description, className)
|
||||
}
|
||||
|
||||
private fun resolveCauses(throwable: Throwable): List<GradleThrowableIssueFailure> {
|
||||
@@ -64,14 +68,14 @@ private fun resolveClassName(description: String?): String? {
|
||||
return candidate
|
||||
}
|
||||
|
||||
private fun resolveFailureText(message: String?, description: String?, className: String?): String? {
|
||||
private fun resolveFailureText(message: String?, description: String?, className: String?): String {
|
||||
return when {
|
||||
className != null && message != null -> "$className: $message"
|
||||
className != null && description != null -> "$className: $description"
|
||||
message != null -> message
|
||||
description != null -> description
|
||||
className != null -> className
|
||||
else -> null
|
||||
else -> ""
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+26
@@ -87,6 +87,32 @@ class GradleIssueFailureTest {
|
||||
assertSame(rootCause, failure.rootCause)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `GradleIssueFailure resolves message from cause when own message is null`() {
|
||||
val cause = GradleIssueFailure.createIssueFailure("cause message", null)
|
||||
val failure = GradleIssueFailure.createIssueFailure(null, null, listOf(cause))
|
||||
|
||||
assertEquals("cause message", failure.message)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `GradleIssueFailure resolves description from cause when own description is null`() {
|
||||
val cause = GradleIssueFailure.createIssueFailure(null, "cause description")
|
||||
val failure = GradleIssueFailure.createIssueFailure(null, null, listOf(cause))
|
||||
|
||||
assertEquals("cause description", failure.description)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `GradleIssueFailure created from Throwable resolves message from cause when throwable message is null`() {
|
||||
val causeThrowable = RuntimeException("root cause message")
|
||||
val throwable = RuntimeException(null, causeThrowable)
|
||||
|
||||
val failure = GradleIssueFailure.createIssueFailure(throwable)
|
||||
|
||||
assertEquals("root cause message", failure.message)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `GradleIssueFailure resolves class name from description`() {
|
||||
val failureMessage = "failed to find target current"
|
||||
|
||||
Reference in New Issue
Block a user