[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
|
package org.jetbrains.kotlin.gradle.unitTests
|
||||||
|
|
||||||
import org.gradle.api.ProjectConfigurationException
|
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.*
|
||||||
import org.jetbrains.kotlin.gradle.plugin.KotlinPluginLifecycle.IllegalLifecycleException
|
import org.jetbrains.kotlin.gradle.plugin.KotlinPluginLifecycle.IllegalLifecycleException
|
||||||
import org.jetbrains.kotlin.gradle.plugin.KotlinPluginLifecycle.ProjectConfigurationResult.Failure
|
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.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.buildProjectWithMPP
|
||||||
import org.jetbrains.kotlin.gradle.util.runLifecycleAwareTest
|
import org.jetbrains.kotlin.gradle.util.runLifecycleAwareTest
|
||||||
import org.jetbrains.kotlin.gradle.utils.future
|
import org.jetbrains.kotlin.gradle.utils.future
|
||||||
@@ -553,4 +556,17 @@ class KotlinPluginLifecycleTest {
|
|||||||
assertTrue(FinaliseDsl !in Stage.until(FinaliseDsl))
|
assertTrue(FinaliseDsl !in Stage.until(FinaliseDsl))
|
||||||
assertTrue(FinaliseDsl.previousOrFirst 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.gradle.plugin.kotlinPluginLifecycle
|
||||||
import org.jetbrains.kotlin.tooling.core.withLinearClosure
|
import org.jetbrains.kotlin.tooling.core.withLinearClosure
|
||||||
import java.lang.AssertionError
|
import java.lang.AssertionError
|
||||||
|
import kotlin.test.assertTrue
|
||||||
|
|
||||||
fun Project.runLifecycleAwareTest(block: suspend Project.() -> Unit) {
|
fun Project.runLifecycleAwareTest(block: suspend Project.() -> Unit) {
|
||||||
kotlinPluginLifecycle.launch { block() }
|
kotlinPluginLifecycle.launch {
|
||||||
|
block()
|
||||||
|
}
|
||||||
try {
|
try {
|
||||||
(this as ProjectInternal).evaluate()
|
(this as ProjectInternal).evaluate()
|
||||||
|
assertTrue(kotlinPluginLifecycle.isStarted)
|
||||||
|
assertTrue(kotlinPluginLifecycle.isFinished)
|
||||||
} catch (t: Throwable) {
|
} catch (t: Throwable) {
|
||||||
/* Prefer throwing AssertionError directly, if possible */
|
/* Prefer throwing AssertionError directly, if possible */
|
||||||
val allCauses = t.withLinearClosure { it.cause }
|
val allCauses = t.withLinearClosure { it.cause }
|
||||||
|
|||||||
Reference in New Issue
Block a user