From b502f7cd03af0722494d26ae05aa0925d7ff2bb2 Mon Sep 17 00:00:00 2001 From: Sebastian Sellmair Date: Thu, 9 Mar 2023 15:38:55 +0100 Subject: [PATCH] [Gradle] Add KotlinAndroidTargetVariantTypeDslImplTest to check refines edges KT-34662 --- ...tlinAndroidTargetVariantTypeDslImplTest.kt | 56 ++++++++++++++++++- 1 file changed, 53 insertions(+), 3 deletions(-) diff --git a/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/unitTests/KotlinAndroidTargetVariantTypeDslImplTest.kt b/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/unitTests/KotlinAndroidTargetVariantTypeDslImplTest.kt index b8436bc327f..a94d61f4dc8 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/unitTests/KotlinAndroidTargetVariantTypeDslImplTest.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/unitTests/KotlinAndroidTargetVariantTypeDslImplTest.kt @@ -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()) + } + } } \ No newline at end of file