Specify androidTarget's source sets graph in tests
^KT-65540
This commit is contained in:
committed by
Space Team
parent
a8266eb20e
commit
2a445a04b0
+79
-3
@@ -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.KotlinTargetResourcesPublication
|
||||||
import org.jetbrains.kotlin.gradle.plugin.mpp.resources.KotlinTargetResourcesPublicationImpl
|
import org.jetbrains.kotlin.gradle.plugin.mpp.resources.KotlinTargetResourcesPublicationImpl
|
||||||
import org.jetbrains.kotlin.gradle.plugin.mpp.resources.registerAssembleHierarchicalResourcesTaskProvider
|
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.assertContainsDiagnostic
|
||||||
import org.jetbrains.kotlin.gradle.util.buildProjectWithMPP
|
|
||||||
import org.jetbrains.kotlin.gradle.util.runLifecycleAwareTest
|
|
||||||
import org.junit.Test
|
import org.junit.Test
|
||||||
import java.io.File
|
import java.io.File
|
||||||
import kotlin.test.assertEquals
|
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(
|
private fun Project.resourceDirectoriesCopyingOrder(
|
||||||
compilation: KotlinCompilation<*>,
|
compilation: KotlinCompilation<*>,
|
||||||
): List<List<String>> {
|
): List<List<String>> {
|
||||||
@@ -130,7 +206,7 @@ class AssembleHierarchicalResourcesTaskTests {
|
|||||||
|
|
||||||
private fun Project.registerFakeResourcesTask(compilation: KotlinCompilation<*>): TaskProvider<AssembleHierarchicalResourcesTask> {
|
private fun Project.registerFakeResourcesTask(compilation: KotlinCompilation<*>): TaskProvider<AssembleHierarchicalResourcesTask> {
|
||||||
return compilation.registerAssembleHierarchicalResourcesTaskProvider(
|
return compilation.registerAssembleHierarchicalResourcesTaskProvider(
|
||||||
"test",
|
"test${compilation.name}",
|
||||||
resources = KotlinTargetResourcesPublicationImpl.TargetResources(
|
resources = KotlinTargetResourcesPublicationImpl.TargetResources(
|
||||||
{ ss ->
|
{ ss ->
|
||||||
KotlinTargetResourcesPublication.ResourceRoot(
|
KotlinTargetResourcesPublication.ResourceRoot(
|
||||||
|
|||||||
+40
@@ -10,10 +10,16 @@ package org.jetbrains.kotlin.gradle.unitTests
|
|||||||
import com.android.build.gradle.LibraryExtension
|
import com.android.build.gradle.LibraryExtension
|
||||||
import org.gradle.api.internal.project.ProjectInternal
|
import org.gradle.api.internal.project.ProjectInternal
|
||||||
import org.gradle.testfixtures.ProjectBuilder
|
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.KotlinMultiplatformExtension
|
||||||
import org.jetbrains.kotlin.gradle.dsl.kotlinExtension
|
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.plugin.KotlinSourceSet
|
||||||
import org.jetbrains.kotlin.gradle.util.addBuildEventsListenerRegistryMock
|
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.Test
|
||||||
import kotlin.test.assertEquals
|
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()
|
private fun createProject() = ProjectBuilder.builder().build()
|
||||||
.also { addBuildEventsListenerRegistryMock(it) }
|
.also { addBuildEventsListenerRegistryMock(it) }
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user