From 1a519a815915b698b98e0e42aeff642c8cde60e2 Mon Sep 17 00:00:00 2001 From: "sebastian.sellmair" Date: Mon, 10 Oct 2022 20:31:56 +0200 Subject: [PATCH] [Gradle][MPP] Add test cases for KotlinTargetHierarchy* ^KT-53570 Verification Pending --- .../KotlinTargetHierarchyDescriptorTest.kt | 48 +++++++++++++++++++ .../gradle/KotlinTargetHierarchyDslTest.kt | 19 +++++++- 2 files changed, 65 insertions(+), 2 deletions(-) diff --git a/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/KotlinTargetHierarchyDescriptorTest.kt b/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/KotlinTargetHierarchyDescriptorTest.kt index 3c5aca901f5..aa9e5a2db8d 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/KotlinTargetHierarchyDescriptorTest.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/KotlinTargetHierarchyDescriptorTest.kt @@ -189,6 +189,54 @@ class KotlinTargetHierarchyDescriptorTest { cycleStack ) } + + @Test + fun `test - filterCompilations`() { + val descriptor = KotlinTargetHierarchyDescriptor { + filterCompilations { it.name in setOf("a", "b") } + common { + group("x") { + includeCompilationIf { true } + } + } + } + + assertEquals( + hierarchy { + group("common") { + group("x") + } + }, + descriptor.buildKotlinTargetHierarchy(kotlin.linuxX64().compilations.maybeCreate("a")) + ) + + assertEquals( + descriptor.buildKotlinTargetHierarchy(kotlin.linuxX64().compilations.maybeCreate("a")), + descriptor.buildKotlinTargetHierarchy(kotlin.linuxX64().compilations.maybeCreate("b")) + ) + + assertNull( + descriptor.buildKotlinTargetHierarchy(kotlin.linuxX64().compilations.maybeCreate("c")) + ) + } + + @Test + fun `test - filterCompilations - include them again`() { + val descriptor = KotlinTargetHierarchyDescriptor { + includeCompilationIf { true } + filterCompilations { it.name == "a" } + } + + assertNotNull(descriptor.buildKotlinTargetHierarchy(kotlin.linuxX64().compilations.maybeCreate("a"))) + assertNull(descriptor.buildKotlinTargetHierarchy(kotlin.linuxX64().compilations.maybeCreate("b"))) + + val extended = descriptor.extend { + includeCompilationIf { true } // <- adds all compilations back again! + } + + assertNull(descriptor.buildKotlinTargetHierarchy(kotlin.linuxX64().compilations.maybeCreate("b"))) + assertNotNull(extended.buildKotlinTargetHierarchy(kotlin.linuxX64().compilations.maybeCreate("b"))) + } } private class TestHierarchyBuilder(private val node: Node) { diff --git a/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/KotlinTargetHierarchyDslTest.kt b/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/KotlinTargetHierarchyDslTest.kt index b46dacd98ef..f658a2a6f5d 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/KotlinTargetHierarchyDslTest.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/KotlinTargetHierarchyDslTest.kt @@ -11,8 +11,9 @@ import org.jetbrains.kotlin.gradle.dsl.KotlinMultiplatformExtension import org.jetbrains.kotlin.gradle.dsl.multiplatformExtension import org.jetbrains.kotlin.gradle.plugin.KotlinSourceSet import org.jetbrains.kotlin.gradle.plugin.KotlinTargetHierarchyDescriptor -import kotlin.test.Test -import kotlin.test.assertEquals +import org.jetbrains.kotlin.gradle.plugin.mpp.targetHierarchy.buildKotlinTargetHierarchy +import org.jetbrains.kotlin.gradle.plugin.mpp.targetHierarchy.naturalKotlinTargetHierarchy +import kotlin.test.* class KotlinTargetHierarchyDslTest { @@ -177,6 +178,20 @@ class KotlinTargetHierarchyDslTest { ) } + @Test + fun `test - hierarchy default - is only applied to main and test compilations`() { + assertNotNull(naturalKotlinTargetHierarchy.buildKotlinTargetHierarchy(kotlin.linuxX64().compilations.main)) + assertNotNull(naturalKotlinTargetHierarchy.buildKotlinTargetHierarchy(kotlin.linuxX64().compilations.test)) + assertNull(naturalKotlinTargetHierarchy.buildKotlinTargetHierarchy(kotlin.linuxX64().compilations.maybeCreate("custom"))) + + kotlin.targetHierarchy.default() + kotlin.linuxX64().compilations.maybeCreate("custom").defaultSourceSet.let { customSourceSet -> + if (customSourceSet.dependsOn.isNotEmpty()) { + fail("Expected no dependsOn SourceSets for $customSourceSet (${customSourceSet.dependsOn})") + } + } + } + @Test fun `test - hierarchy apply - extend`() { val descriptor = KotlinTargetHierarchyDescriptor {