diff --git a/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/util/lifecycleUtils.kt b/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/util/lifecycleUtils.kt index a44e86eec28..74424c075d4 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/util/lifecycleUtils.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/util/lifecycleUtils.kt @@ -8,8 +8,17 @@ package org.jetbrains.kotlin.gradle.util import org.gradle.api.Project import org.gradle.api.internal.project.ProjectInternal import org.jetbrains.kotlin.gradle.plugin.kotlinPluginLifecycle +import org.jetbrains.kotlin.tooling.core.withLinearClosure +import java.lang.AssertionError fun Project.runLifecycleAwareTest(block: suspend Project.() -> Unit) { kotlinPluginLifecycle.launch { block() } - (this as ProjectInternal).evaluate() + try { + (this as ProjectInternal).evaluate() + } catch (t: Throwable) { + /* Prefer throwing AssertionError directly, if possible */ + val allCauses = t.withLinearClosure { it.cause } + allCauses.find { it is AssertionError }?.let { throw it } + throw t + } } \ No newline at end of file