[Gradle] Test that framework configurations task dependencies
^KT-63011
This commit is contained in:
committed by
Space Team
parent
999b0f7099
commit
5aa8ecca9b
+27
@@ -9,6 +9,7 @@ import org.gradle.api.Project
|
|||||||
import org.gradle.api.artifacts.Configuration
|
import org.gradle.api.artifacts.Configuration
|
||||||
import org.jetbrains.kotlin.gradle.dsl.KotlinMultiplatformExtension
|
import org.jetbrains.kotlin.gradle.dsl.KotlinMultiplatformExtension
|
||||||
import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinNativeTarget
|
import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinNativeTarget
|
||||||
|
import org.jetbrains.kotlin.gradle.util.assertConfigurationsHaveTaskDependencies
|
||||||
import org.jetbrains.kotlin.gradle.util.buildProjectWithMPP
|
import org.jetbrains.kotlin.gradle.util.buildProjectWithMPP
|
||||||
import org.jetbrains.kotlin.gradle.util.kotlin
|
import org.jetbrains.kotlin.gradle.util.kotlin
|
||||||
import kotlin.test.*
|
import kotlin.test.*
|
||||||
@@ -100,6 +101,32 @@ class FatFrameworksTest {
|
|||||||
assertEquals("barDebugFramework", barFat.attributes.getAttribute(KotlinNativeTarget.kotlinNativeFrameworkNameAttribute))
|
assertEquals("barDebugFramework", barFat.attributes.getAttribute(KotlinNativeTarget.kotlinNativeFrameworkNameAttribute))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun `consumable configurations of frameworks have correct dependencies on producing tasks`() {
|
||||||
|
val project = buildProjectWithMPP {
|
||||||
|
kotlin {
|
||||||
|
iosX64 { binaries.framework("foo", listOf(DEBUG)) }
|
||||||
|
iosArm64 { binaries.framework("foo", listOf(DEBUG)) }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
project.evaluate()
|
||||||
|
|
||||||
|
project.assertConfigurationsHaveTaskDependencies(
|
||||||
|
"fooDebugFrameworkIosX64",
|
||||||
|
":linkFooDebugFrameworkIosX64"
|
||||||
|
)
|
||||||
|
|
||||||
|
project.assertConfigurationsHaveTaskDependencies(
|
||||||
|
"fooDebugFrameworkIosArm64",
|
||||||
|
":linkFooDebugFrameworkIosArm64"
|
||||||
|
)
|
||||||
|
|
||||||
|
project.assertConfigurationsHaveTaskDependencies(
|
||||||
|
"fooDebugFrameworkIosFat",
|
||||||
|
":linkFooDebugFrameworkIosFat"
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
private fun testFatFrameworkGrouping(
|
private fun testFatFrameworkGrouping(
|
||||||
vararg allExpectedFatFrameworks: String,
|
vararg allExpectedFatFrameworks: String,
|
||||||
configureTargets: KotlinMultiplatformExtension.() -> Unit,
|
configureTargets: KotlinMultiplatformExtension.() -> Unit,
|
||||||
|
|||||||
+17
@@ -110,4 +110,21 @@ fun Project.assertNotContainsDependencies(configurationName: String, vararg depe
|
|||||||
inline fun <reified T> assertIsInstance(value: Any?): T {
|
inline fun <reified T> assertIsInstance(value: Any?): T {
|
||||||
if (value is T) return value
|
if (value is T) return value
|
||||||
fail("Expected $value to implement ${T::class.java}")
|
fail("Expected $value to implement ${T::class.java}")
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Assert that given consumable configuration [configurationName] depends on [expectedTaskNames] tasks
|
||||||
|
*/
|
||||||
|
fun Project.assertConfigurationsHaveTaskDependencies(
|
||||||
|
configurationName: String,
|
||||||
|
vararg expectedTaskNames: String
|
||||||
|
) {
|
||||||
|
val actualNames = configurations
|
||||||
|
.getByName(configurationName)
|
||||||
|
.outgoing
|
||||||
|
.artifacts
|
||||||
|
.buildDependencies.getDependencies(null)
|
||||||
|
.map { it.path }
|
||||||
|
|
||||||
|
assertEquals(expectedTaskNames.toSet(), actualNames.toSet(), "Unexpected task dependencies for $configurationName")
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user