[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.jetbrains.kotlin.gradle.dsl.KotlinMultiplatformExtension
|
||||
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.kotlin
|
||||
import kotlin.test.*
|
||||
@@ -100,6 +101,32 @@ class FatFrameworksTest {
|
||||
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(
|
||||
vararg allExpectedFatFrameworks: String,
|
||||
configureTargets: KotlinMultiplatformExtension.() -> Unit,
|
||||
|
||||
+17
@@ -110,4 +110,21 @@ fun Project.assertNotContainsDependencies(configurationName: String, vararg depe
|
||||
inline fun <reified T> assertIsInstance(value: Any?): T {
|
||||
if (value is T) return value
|
||||
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