Specify androidTarget's source sets graph in tests

^KT-65540
This commit is contained in:
Timofey Solonin
2024-02-27 13:31:02 +01:00
committed by Space Team
parent a8266eb20e
commit 2a445a04b0
2 changed files with 119 additions and 3 deletions
@@ -14,9 +14,8 @@ import org.jetbrains.kotlin.gradle.plugin.mpp.resources.AssembleHierarchicalReso
import org.jetbrains.kotlin.gradle.plugin.mpp.resources.KotlinTargetResourcesPublication
import org.jetbrains.kotlin.gradle.plugin.mpp.resources.KotlinTargetResourcesPublicationImpl
import org.jetbrains.kotlin.gradle.plugin.mpp.resources.registerAssembleHierarchicalResourcesTaskProvider
import org.jetbrains.kotlin.gradle.util.*
import org.jetbrains.kotlin.gradle.util.assertContainsDiagnostic
import org.jetbrains.kotlin.gradle.util.buildProjectWithMPP
import org.jetbrains.kotlin.gradle.util.runLifecycleAwareTest
import org.junit.Test
import java.io.File
import kotlin.test.assertEquals
@@ -118,6 +117,83 @@ class AssembleHierarchicalResourcesTaskTests {
}
}
@Test
fun `test copying order - with android library - with agp source sets`() {
with(buildProjectWithMPP()) {
androidLibrary { compileSdk = 31 }
val kotlin = multiplatformExtension
val androidTarget = kotlin.androidTarget()
evaluate()
assertEquals(
listOf(
listOf("commonMain"),
listOf("androidDebug", "androidMain")
),
resourceDirectoriesCopyingOrder(androidTarget.compilations.getByName("debug"))
)
assertEquals(
listOf(
listOf("commonMain"),
listOf("androidMain", "androidRelease")
),
resourceDirectoriesCopyingOrder(androidTarget.compilations.getByName("release"))
)
}
}
@Test
fun `test copying order - with android library - with flavors and agp source sets`() {
with(buildProjectWithMPP()) {
androidLibrary {
compileSdk = 31
flavorDimensions += "version"
productFlavors {
create("demo") {
it.dimension = "version"
}
create("full") {
it.dimension = "version"
}
}
}
val kotlin = multiplatformExtension
val androidTarget = kotlin.androidTarget()
evaluate()
assertEquals(
listOf(
listOf("commonMain"),
listOf("androidDebug", "androidFull", "androidFullDebug", "androidMain"),
),
resourceDirectoriesCopyingOrder(androidTarget.compilations.getByName("fullDebug"))
)
assertEquals(
listOf(
listOf("commonMain"),
listOf("androidFull", "androidFullRelease", "androidMain", "androidRelease"),
),
resourceDirectoriesCopyingOrder(androidTarget.compilations.getByName("fullRelease"))
)
assertEquals(
listOf(
listOf("commonMain"),
listOf("androidDebug", "androidDemo", "androidDemoDebug", "androidMain"),
),
resourceDirectoriesCopyingOrder(androidTarget.compilations.getByName("demoDebug"))
)
assertEquals(
listOf(
listOf("commonMain"),
listOf("androidDemo", "androidDemoRelease", "androidMain", "androidRelease"),
),
resourceDirectoriesCopyingOrder(androidTarget.compilations.getByName("demoRelease"))
)
}
}
private fun Project.resourceDirectoriesCopyingOrder(
compilation: KotlinCompilation<*>,
): List<List<String>> {
@@ -130,7 +206,7 @@ class AssembleHierarchicalResourcesTaskTests {
private fun Project.registerFakeResourcesTask(compilation: KotlinCompilation<*>): TaskProvider<AssembleHierarchicalResourcesTask> {
return compilation.registerAssembleHierarchicalResourcesTaskProvider(
"test",
"test${compilation.name}",
resources = KotlinTargetResourcesPublicationImpl.TargetResources(
{ ss ->
KotlinTargetResourcesPublication.ResourceRoot(
@@ -10,10 +10,16 @@ package org.jetbrains.kotlin.gradle.unitTests
import com.android.build.gradle.LibraryExtension
import org.gradle.api.internal.project.ProjectInternal
import org.gradle.testfixtures.ProjectBuilder
import org.jetbrains.kotlin.cfg.pseudocode.and
import org.jetbrains.kotlin.gradle.dsl.KotlinMultiplatformExtension
import org.jetbrains.kotlin.gradle.dsl.kotlinExtension
import org.jetbrains.kotlin.gradle.dsl.multiplatformExtension
import org.jetbrains.kotlin.gradle.plugin.KotlinSourceSet
import org.jetbrains.kotlin.gradle.util.addBuildEventsListenerRegistryMock
import org.jetbrains.kotlin.gradle.util.androidLibrary
import org.jetbrains.kotlin.gradle.util.buildProjectWithMPP
import org.jetbrains.kotlin.gradle.util.kotlin
import org.jetbrains.kotlin.tooling.core.withClosure
import kotlin.test.Test
import kotlin.test.assertEquals
@@ -108,6 +114,40 @@ class KotlinAndroidDependsOnEdgesTest {
)
}
@Test
fun `dependsOn closure for android source sets`() {
val project = buildProjectWithMPP {
androidLibrary {
compileSdk = 31
}
kotlin {
androidTarget()
}
}.evaluate()
val androidCompilations = project.multiplatformExtension.androidTarget().compilations
assertEquals(
listOf(
"androidDebug",
"androidMain",
"commonMain",
),
androidCompilations.getByName("debug").kotlinSourceSets
.withClosure { sourceSet: KotlinSourceSet -> sourceSet.dependsOn }
.map { it.name },
)
assertEquals(
listOf(
"androidDebug",
"commonMain",
),
androidCompilations.getByName("debug").defaultSourceSet
.withClosure { sourceSet: KotlinSourceSet -> sourceSet.dependsOn }
.map { it.name },
)
}
private fun createProject() = ProjectBuilder.builder().build()
.also { addBuildEventsListenerRegistryMock(it) }