[MPP] Assert that the coroutine block actually runs
^KT-58712
This commit is contained in:
committed by
Space Team
parent
3ac009ea38
commit
2760a25e2c
+16
@@ -8,11 +8,14 @@
|
||||
package org.jetbrains.kotlin.gradle.unitTests
|
||||
|
||||
import org.gradle.api.ProjectConfigurationException
|
||||
import org.gradle.internal.impldep.org.testng.TestException
|
||||
import org.gradle.testfixtures.ProjectBuilder
|
||||
import org.jetbrains.kotlin.gradle.plugin.*
|
||||
import org.jetbrains.kotlin.gradle.plugin.KotlinPluginLifecycle.IllegalLifecycleException
|
||||
import org.jetbrains.kotlin.gradle.plugin.KotlinPluginLifecycle.ProjectConfigurationResult.Failure
|
||||
import org.jetbrains.kotlin.gradle.plugin.KotlinPluginLifecycle.Stage
|
||||
import org.jetbrains.kotlin.gradle.plugin.KotlinPluginLifecycle.Stage.*
|
||||
import org.jetbrains.kotlin.gradle.util.applyMultiplatformPlugin
|
||||
import org.jetbrains.kotlin.gradle.util.buildProjectWithMPP
|
||||
import org.jetbrains.kotlin.gradle.util.runLifecycleAwareTest
|
||||
import org.jetbrains.kotlin.gradle.utils.future
|
||||
@@ -553,4 +556,17 @@ class KotlinPluginLifecycleTest {
|
||||
assertTrue(FinaliseDsl !in Stage.until(FinaliseDsl))
|
||||
assertTrue(FinaliseDsl.previousOrFirst in Stage.until(FinaliseDsl))
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `test - runLifecycleAwareTest - in a project with lifecycle`() {
|
||||
val project = ProjectBuilder.builder().build()
|
||||
project.applyMultiplatformPlugin()
|
||||
project.runLifecycleAwareTest{}
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `test - runLifecycleAwareTest - in a project without lifecycle`() {
|
||||
val project = ProjectBuilder.builder().build()
|
||||
assertFailsWith<AssertionError> { project.runLifecycleAwareTest{} }
|
||||
}
|
||||
}
|
||||
+6
-1
@@ -10,11 +10,16 @@ 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
|
||||
import kotlin.test.assertTrue
|
||||
|
||||
fun Project.runLifecycleAwareTest(block: suspend Project.() -> Unit) {
|
||||
kotlinPluginLifecycle.launch { block() }
|
||||
kotlinPluginLifecycle.launch {
|
||||
block()
|
||||
}
|
||||
try {
|
||||
(this as ProjectInternal).evaluate()
|
||||
assertTrue(kotlinPluginLifecycle.isStarted)
|
||||
assertTrue(kotlinPluginLifecycle.isFinished)
|
||||
} catch (t: Throwable) {
|
||||
/* Prefer throwing AssertionError directly, if possible */
|
||||
val allCauses = t.withLinearClosure { it.cause }
|
||||
|
||||
Reference in New Issue
Block a user