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.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(
|
||||
|
||||
+40
@@ -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) }
|
||||
|
||||
|
||||
Reference in New Issue
Block a user