Skip to content

Commit 2a445a0

Browse files
timofey-soloninSpace Team
authored and
Space Team
committed
Specify androidTarget's source sets graph in tests
^KT-65540
1 parent a8266eb commit 2a445a0

File tree

2 files changed

+119
-3
lines changed

2 files changed

+119
-3
lines changed

libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/unitTests/AssembleHierarchicalResourcesTaskTests.kt

+79-3
Original file line numberDiff line numberDiff line change
@@ -14,9 +14,8 @@ import org.jetbrains.kotlin.gradle.plugin.mpp.resources.AssembleHierarchicalReso
1414
import org.jetbrains.kotlin.gradle.plugin.mpp.resources.KotlinTargetResourcesPublication
1515
import org.jetbrains.kotlin.gradle.plugin.mpp.resources.KotlinTargetResourcesPublicationImpl
1616
import org.jetbrains.kotlin.gradle.plugin.mpp.resources.registerAssembleHierarchicalResourcesTaskProvider
17+
import org.jetbrains.kotlin.gradle.util.*
1718
import org.jetbrains.kotlin.gradle.util.assertContainsDiagnostic
18-
import org.jetbrains.kotlin.gradle.util.buildProjectWithMPP
19-
import org.jetbrains.kotlin.gradle.util.runLifecycleAwareTest
2019
import org.junit.Test
2120
import java.io.File
2221
import kotlin.test.assertEquals
@@ -118,6 +117,83 @@ class AssembleHierarchicalResourcesTaskTests {
118117
}
119118
}
120119

120+
@Test
121+
fun `test copying order - with android library - with agp source sets`() {
122+
with(buildProjectWithMPP()) {
123+
androidLibrary { compileSdk = 31 }
124+
val kotlin = multiplatformExtension
125+
val androidTarget = kotlin.androidTarget()
126+
127+
evaluate()
128+
129+
assertEquals(
130+
listOf(
131+
listOf("commonMain"),
132+
listOf("androidDebug", "androidMain")
133+
),
134+
resourceDirectoriesCopyingOrder(androidTarget.compilations.getByName("debug"))
135+
)
136+
assertEquals(
137+
listOf(
138+
listOf("commonMain"),
139+
listOf("androidMain", "androidRelease")
140+
),
141+
resourceDirectoriesCopyingOrder(androidTarget.compilations.getByName("release"))
142+
)
143+
}
144+
}
145+
146+
@Test
147+
fun `test copying order - with android library - with flavors and agp source sets`() {
148+
with(buildProjectWithMPP()) {
149+
androidLibrary {
150+
compileSdk = 31
151+
flavorDimensions += "version"
152+
productFlavors {
153+
create("demo") {
154+
it.dimension = "version"
155+
}
156+
create("full") {
157+
it.dimension = "version"
158+
}
159+
}
160+
}
161+
val kotlin = multiplatformExtension
162+
val androidTarget = kotlin.androidTarget()
163+
164+
evaluate()
165+
166+
assertEquals(
167+
listOf(
168+
listOf("commonMain"),
169+
listOf("androidDebug", "androidFull", "androidFullDebug", "androidMain"),
170+
),
171+
resourceDirectoriesCopyingOrder(androidTarget.compilations.getByName("fullDebug"))
172+
)
173+
assertEquals(
174+
listOf(
175+
listOf("commonMain"),
176+
listOf("androidFull", "androidFullRelease", "androidMain", "androidRelease"),
177+
),
178+
resourceDirectoriesCopyingOrder(androidTarget.compilations.getByName("fullRelease"))
179+
)
180+
assertEquals(
181+
listOf(
182+
listOf("commonMain"),
183+
listOf("androidDebug", "androidDemo", "androidDemoDebug", "androidMain"),
184+
),
185+
resourceDirectoriesCopyingOrder(androidTarget.compilations.getByName("demoDebug"))
186+
)
187+
assertEquals(
188+
listOf(
189+
listOf("commonMain"),
190+
listOf("androidDemo", "androidDemoRelease", "androidMain", "androidRelease"),
191+
),
192+
resourceDirectoriesCopyingOrder(androidTarget.compilations.getByName("demoRelease"))
193+
)
194+
}
195+
}
196+
121197
private fun Project.resourceDirectoriesCopyingOrder(
122198
compilation: KotlinCompilation<*>,
123199
): List<List<String>> {
@@ -130,7 +206,7 @@ class AssembleHierarchicalResourcesTaskTests {
130206

131207
private fun Project.registerFakeResourcesTask(compilation: KotlinCompilation<*>): TaskProvider<AssembleHierarchicalResourcesTask> {
132208
return compilation.registerAssembleHierarchicalResourcesTaskProvider(
133-
"test",
209+
"test${compilation.name}",
134210
resources = KotlinTargetResourcesPublicationImpl.TargetResources(
135211
{ ss ->
136212
KotlinTargetResourcesPublication.ResourceRoot(

libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/unitTests/KotlinAndroidDependsOnEdgesTest.kt

+40
Original file line numberDiff line numberDiff line change
@@ -10,10 +10,16 @@ package org.jetbrains.kotlin.gradle.unitTests
1010
import com.android.build.gradle.LibraryExtension
1111
import org.gradle.api.internal.project.ProjectInternal
1212
import org.gradle.testfixtures.ProjectBuilder
13+
import org.jetbrains.kotlin.cfg.pseudocode.and
1314
import org.jetbrains.kotlin.gradle.dsl.KotlinMultiplatformExtension
1415
import org.jetbrains.kotlin.gradle.dsl.kotlinExtension
16+
import org.jetbrains.kotlin.gradle.dsl.multiplatformExtension
1517
import org.jetbrains.kotlin.gradle.plugin.KotlinSourceSet
1618
import org.jetbrains.kotlin.gradle.util.addBuildEventsListenerRegistryMock
19+
import org.jetbrains.kotlin.gradle.util.androidLibrary
20+
import org.jetbrains.kotlin.gradle.util.buildProjectWithMPP
21+
import org.jetbrains.kotlin.gradle.util.kotlin
22+
import org.jetbrains.kotlin.tooling.core.withClosure
1723
import kotlin.test.Test
1824
import kotlin.test.assertEquals
1925

@@ -108,6 +114,40 @@ class KotlinAndroidDependsOnEdgesTest {
108114
)
109115
}
110116

117+
@Test
118+
fun `dependsOn closure for android source sets`() {
119+
val project = buildProjectWithMPP {
120+
androidLibrary {
121+
compileSdk = 31
122+
}
123+
kotlin {
124+
androidTarget()
125+
}
126+
}.evaluate()
127+
128+
val androidCompilations = project.multiplatformExtension.androidTarget().compilations
129+
130+
assertEquals(
131+
listOf(
132+
"androidDebug",
133+
"androidMain",
134+
"commonMain",
135+
),
136+
androidCompilations.getByName("debug").kotlinSourceSets
137+
.withClosure { sourceSet: KotlinSourceSet -> sourceSet.dependsOn }
138+
.map { it.name },
139+
)
140+
assertEquals(
141+
listOf(
142+
"androidDebug",
143+
"commonMain",
144+
),
145+
androidCompilations.getByName("debug").defaultSourceSet
146+
.withClosure { sourceSet: KotlinSourceSet -> sourceSet.dependsOn }
147+
.map { it.name },
148+
)
149+
}
150+
111151
private fun createProject() = ProjectBuilder.builder().build()
112152
.also { addBuildEventsListenerRegistryMock(it) }
113153

0 commit comments

Comments
 (0)