[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(
|
||||
"commonizeNativeDistribution",
|
||||
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)
|
||||
rootProject.commonizeTask.dependsOn(this)
|
||||
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.
|
||||
*/
|
||||
|
||||
@file:Suppress("FunctionName")
|
||||
@file:Suppress("FunctionName", "DuplicatedCode")
|
||||
|
||||
package org.jetbrains.kotlin.gradle
|
||||
|
||||
@@ -11,12 +11,18 @@ import org.gradle.api.internal.project.ProjectInternal
|
||||
import org.gradle.testfixtures.ProjectBuilder
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinNativeCompilation
|
||||
import kotlin.test.Test
|
||||
import kotlin.test.assertNotNull
|
||||
import kotlin.test.assertNull
|
||||
|
||||
class CommonizerTaskTests {
|
||||
|
||||
private val rootProject = ProjectBuilder.builder().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 {
|
||||
linuxX64()
|
||||
linuxArm64()
|
||||
@@ -58,6 +64,70 @@ class CommonizerTaskTests {
|
||||
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
|
||||
fun `test commonizeCInteropTask`() {
|
||||
val commonizeCInteropTaskName = "commonizeCInterop"
|
||||
|
||||
Reference in New Issue
Block a user