[Gradle][KT-51583] Ensure jvm-ecosystem plugin is applied when NativeDistributionCommonizerTask is registered in root
^KT-51583 Verification Pending https://github.com/gradle/gradle/issues/20145
This commit is contained in:
committed by
Space
parent
f713782737
commit
8fcbe9902c
+9
@@ -116,6 +116,15 @@ internal val Project.commonizeNativeDistributionTask: TaskProvider<NativeDistrib
|
|||||||
return rootProject.locateOrRegisterTask(
|
return rootProject.locateOrRegisterTask(
|
||||||
"commonizeNativeDistribution",
|
"commonizeNativeDistribution",
|
||||||
invokeWhenRegistered = {
|
invokeWhenRegistered = {
|
||||||
|
/**
|
||||||
|
* https://github.com/gradle/gradle/issues/13252
|
||||||
|
* https://github.com/gradle/gradle/issues/20145
|
||||||
|
* https://youtrack.jetbrains.com/issue/KT-51583
|
||||||
|
*/
|
||||||
|
if (rootProject.plugins.findPlugin("jvm-ecosystem") == null) {
|
||||||
|
rootProject.plugins.apply("jvm-ecosystem")
|
||||||
|
}
|
||||||
|
|
||||||
commonizeTask.dependsOn(this)
|
commonizeTask.dependsOn(this)
|
||||||
rootProject.commonizeTask.dependsOn(this)
|
rootProject.commonizeTask.dependsOn(this)
|
||||||
cleanNativeDistributionCommonizerTask
|
cleanNativeDistributionCommonizerTask
|
||||||
|
|||||||
+71
-1
@@ -3,7 +3,7 @@
|
|||||||
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
|
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@file:Suppress("FunctionName")
|
@file:Suppress("FunctionName", "DuplicatedCode")
|
||||||
|
|
||||||
package org.jetbrains.kotlin.gradle
|
package org.jetbrains.kotlin.gradle
|
||||||
|
|
||||||
@@ -11,12 +11,18 @@ import org.gradle.api.internal.project.ProjectInternal
|
|||||||
import org.gradle.testfixtures.ProjectBuilder
|
import org.gradle.testfixtures.ProjectBuilder
|
||||||
import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinNativeCompilation
|
import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinNativeCompilation
|
||||||
import kotlin.test.Test
|
import kotlin.test.Test
|
||||||
|
import kotlin.test.assertNotNull
|
||||||
|
import kotlin.test.assertNull
|
||||||
|
|
||||||
class CommonizerTaskTests {
|
class CommonizerTaskTests {
|
||||||
|
|
||||||
private val rootProject = ProjectBuilder.builder().build() as ProjectInternal
|
private val rootProject = ProjectBuilder.builder().build() as ProjectInternal
|
||||||
private val subproject = ProjectBuilder.builder().withName("subproject").withParent(rootProject).build() as ProjectInternal
|
private val subproject = ProjectBuilder.builder().withName("subproject").withParent(rootProject).build() as ProjectInternal
|
||||||
|
|
||||||
|
companion object {
|
||||||
|
const val JVM_ECOSYSTEM_PLUGIN_ID = "jvm-ecosystem"
|
||||||
|
}
|
||||||
|
|
||||||
private val kotlin = subproject.applyMultiplatformPlugin().apply {
|
private val kotlin = subproject.applyMultiplatformPlugin().apply {
|
||||||
linuxX64()
|
linuxX64()
|
||||||
linuxArm64()
|
linuxArm64()
|
||||||
@@ -58,6 +64,70 @@ class CommonizerTaskTests {
|
|||||||
subproject.tasks.getByName("commonize").assertDependsOn(rootProjectCommonizeNativeDistributionTask)
|
subproject.tasks.getByName("commonize").assertDependsOn(rootProjectCommonizeNativeDistributionTask)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Check if jvm-ecosystem plugin is applied when commonizer task is applied to the root project.
|
||||||
|
* Context: https://github.com/gradle/gradle/issues/20145
|
||||||
|
* https://youtrack.jetbrains.com/issue/KT-51583
|
||||||
|
*/
|
||||||
|
@Test
|
||||||
|
fun `test commonizeNativeDistributionTask applied jvm-ecosystem plugin`() {
|
||||||
|
val rootProject = ProjectBuilder.builder().build() as ProjectInternal
|
||||||
|
val subproject = ProjectBuilder.builder().withParent(rootProject).build() as ProjectInternal
|
||||||
|
|
||||||
|
val jvmEcosystemPluginId = "jvm-ecosystem"
|
||||||
|
assertNull(rootProject.plugins.findPlugin(jvmEcosystemPluginId))
|
||||||
|
|
||||||
|
val kotlin = subproject.applyMultiplatformPlugin()
|
||||||
|
assertNull(rootProject.plugins.findPlugin(jvmEcosystemPluginId))
|
||||||
|
|
||||||
|
kotlin.linuxArm64()
|
||||||
|
kotlin.linuxX64()
|
||||||
|
|
||||||
|
rootProject.evaluate()
|
||||||
|
subproject.evaluate()
|
||||||
|
|
||||||
|
assertNotNull(rootProject.plugins.findPlugin(jvmEcosystemPluginId))
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun `test commonizeNativeDistributionTask applied jvm-ecosystem plugin - jvm-ecosystem plugin is already applied`() {
|
||||||
|
val rootProject = ProjectBuilder.builder().build() as ProjectInternal
|
||||||
|
val subproject = ProjectBuilder.builder().withParent(rootProject).build() as ProjectInternal
|
||||||
|
|
||||||
|
rootProject.plugins.apply(JVM_ECOSYSTEM_PLUGIN_ID)
|
||||||
|
assertNotNull(rootProject.plugins.findPlugin(JVM_ECOSYSTEM_PLUGIN_ID))
|
||||||
|
|
||||||
|
val kotlin = subproject.applyMultiplatformPlugin()
|
||||||
|
|
||||||
|
kotlin.linuxArm64()
|
||||||
|
kotlin.linuxX64()
|
||||||
|
|
||||||
|
rootProject.evaluate()
|
||||||
|
subproject.evaluate()
|
||||||
|
|
||||||
|
assertNotNull(rootProject.plugins.findPlugin(JVM_ECOSYSTEM_PLUGIN_ID))
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun `test commonizeNativeDistributionTask applied jvm-ecosystem plugin - java plugin is already applied`() {
|
||||||
|
val rootProject = ProjectBuilder.builder().build() as ProjectInternal
|
||||||
|
val subproject = ProjectBuilder.builder().withParent(rootProject).build() as ProjectInternal
|
||||||
|
|
||||||
|
rootProject.plugins.apply("java")
|
||||||
|
assertNotNull(rootProject.plugins.findPlugin(JVM_ECOSYSTEM_PLUGIN_ID))
|
||||||
|
|
||||||
|
val kotlin = subproject.applyMultiplatformPlugin()
|
||||||
|
|
||||||
|
kotlin.linuxArm64()
|
||||||
|
kotlin.linuxX64()
|
||||||
|
|
||||||
|
rootProject.evaluate()
|
||||||
|
subproject.evaluate()
|
||||||
|
|
||||||
|
assertNotNull(rootProject.plugins.findPlugin(JVM_ECOSYSTEM_PLUGIN_ID))
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
fun `test commonizeCInteropTask`() {
|
fun `test commonizeCInteropTask`() {
|
||||||
val commonizeCInteropTaskName = "commonizeCInterop"
|
val commonizeCInteropTaskName = "commonizeCInterop"
|
||||||
|
|||||||
Reference in New Issue
Block a user