[Gradle] Add KotlinAndroidTargetVariantTypeDslImplTest to check refines edges

KT-34662
This commit is contained in:
Sebastian Sellmair
2023-03-09 15:38:55 +01:00
committed by Space Team
parent 40603bbda7
commit b502f7cd03
@@ -3,19 +3,20 @@
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
*/
@file:Suppress("FunctionName")
@file:Suppress("FunctionName", "DuplicatedCode")
package org.jetbrains.kotlin.gradle.unitTests
import junit.framework.TestCase.assertNull
import org.jetbrains.kotlin.gradle.dsl.multiplatformExtension
import org.jetbrains.kotlin.gradle.plugin.*
import org.jetbrains.kotlin.gradle.plugin.KotlinPluginLifecycle
import org.jetbrains.kotlin.gradle.plugin.KotlinPluginLifecycle.Stage.AfterFinaliseRefinesEdges
import org.jetbrains.kotlin.gradle.plugin.awaitFinalValue
import org.jetbrains.kotlin.gradle.plugin.currentKotlinPluginLifecycle
import org.jetbrains.kotlin.gradle.plugin.kotlinPluginLifecycle
import org.jetbrains.kotlin.gradle.targets.android.KotlinAndroidTargetVariantTypeDslImpl
import org.jetbrains.kotlin.gradle.util.buildProjectWithMPP
import org.jetbrains.kotlin.gradle.util.runLifecycleAwareTest
import org.jetbrains.kotlin.gradle.util.*
import org.junit.Test
import kotlin.test.assertEquals
import kotlin.test.assertFails
@@ -51,4 +52,53 @@ class KotlinAndroidTargetVariantTypeDslImplTest {
assertFails { dsl.targetHierarchy.module.set(KotlinTargetHierarchy.ModuleName("y")) }
}
}
@Test
fun `test - module - is respected in default refines edges`() {
val project = buildProject {
setMultiplatformAndroidSourceSetLayoutVersion(2)
applyMultiplatformPlugin()
androidLibrary { compileSdk = 33 }
}
val kotlin = project.multiplatformExtension
project.runLifecycleAwareTest {
kotlin.android {
unitTest.targetHierarchy.module.set(KotlinTargetHierarchy.ModuleName.test)
instrumentedTest.targetHierarchy.module.set(KotlinTargetHierarchy.ModuleName.test)
}
await(AfterFinaliseRefinesEdges)
assertEquals(setOf("commonTest"), kotlin.sourceSets.getByName("androidInstrumentedTest").dependsOn.map { it.name }.toSet())
assertEquals(setOf("commonTest"), kotlin.sourceSets.getByName("androidUnitTest").dependsOn.map { it.name }.toSet())
}
}
@Test
fun `test - module - is respected in targetHierarchy`() {
val project = buildProject {
setMultiplatformAndroidSourceSetLayoutVersion(2)
applyMultiplatformPlugin()
androidLibrary { compileSdk = 33 }
}
val kotlin = project.multiplatformExtension
project.runLifecycleAwareTest {
kotlin.android {
unitTest.targetHierarchy.module.set(KotlinTargetHierarchy.ModuleName("xxx"))
instrumentedTest.targetHierarchy.module.set(KotlinTargetHierarchy.ModuleName("yyy"))
}
kotlin.targetHierarchy.default {
withModule(KotlinTargetHierarchy.ModuleName("xxx"))
withModule(KotlinTargetHierarchy.ModuleName("yyy"))
}
await(AfterFinaliseRefinesEdges)
assertEquals(setOf("commonXxx"), kotlin.sourceSets.getByName("androidUnitTest").dependsOn.map { it.name }.toSet())
assertEquals(setOf("commonYyy"), kotlin.sourceSets.getByName("androidInstrumentedTest").dependsOn.map { it.name }.toSet())
}
}
}