[MPP] Inject CInteropCommonizerTask from outside instead of using a
future ^KT-58712
This commit is contained in:
committed by
Space Team
parent
9ef5ce2af4
commit
5026778cd1
+1
@@ -106,6 +106,7 @@ internal suspend fun Project.copyCommonizeCInteropForIdeTask(): TaskProvider<Cop
|
|||||||
if (commonizeCInteropTask != null) {
|
if (commonizeCInteropTask != null) {
|
||||||
return locateOrRegisterTask(
|
return locateOrRegisterTask(
|
||||||
"copyCommonizeCInteropForIde",
|
"copyCommonizeCInteropForIde",
|
||||||
|
args = listOf(commonizeCInteropTask),
|
||||||
invokeWhenRegistered = {
|
invokeWhenRegistered = {
|
||||||
@OptIn(Idea222Api::class)
|
@OptIn(Idea222Api::class)
|
||||||
ideaImportDependsOn(this)
|
ideaImportDependsOn(this)
|
||||||
|
|||||||
+3
-4
@@ -9,14 +9,13 @@ import org.gradle.api.provider.Provider
|
|||||||
import org.gradle.api.tasks.*
|
import org.gradle.api.tasks.*
|
||||||
import org.gradle.work.DisableCachingByDefault
|
import org.gradle.work.DisableCachingByDefault
|
||||||
import org.gradle.work.NormalizeLineEndings
|
import org.gradle.work.NormalizeLineEndings
|
||||||
import org.jetbrains.kotlin.gradle.utils.future
|
|
||||||
import java.io.File
|
import java.io.File
|
||||||
|
import javax.inject.Inject
|
||||||
|
|
||||||
@DisableCachingByDefault
|
@DisableCachingByDefault
|
||||||
internal open class CopyCommonizeCInteropForIdeTask : AbstractCInteropCommonizerTask() {
|
internal open class CopyCommonizeCInteropForIdeTask @Inject constructor(
|
||||||
|
|
||||||
private val commonizeCInteropTask: TaskProvider<CInteropCommonizerTask>
|
private val commonizeCInteropTask: TaskProvider<CInteropCommonizerTask>
|
||||||
get() = project.future { project.commonizeCInteropTask() }.getOrThrow() ?: throw IllegalStateException("Missing commonizeCInteropTask")
|
) : AbstractCInteropCommonizerTask() {
|
||||||
|
|
||||||
@get:IgnoreEmptyDirectories
|
@get:IgnoreEmptyDirectories
|
||||||
@get:InputFiles
|
@get:InputFiles
|
||||||
|
|||||||
+11
@@ -11,6 +11,7 @@ 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 org.jetbrains.kotlin.gradle.targets.native.internal.cInteropCommonizationEnabled
|
import org.jetbrains.kotlin.gradle.targets.native.internal.cInteropCommonizationEnabled
|
||||||
|
import org.jetbrains.kotlin.gradle.targets.native.internal.copyCommonizeCInteropForIdeTask
|
||||||
import org.jetbrains.kotlin.gradle.util.*
|
import org.jetbrains.kotlin.gradle.util.*
|
||||||
import kotlin.test.*
|
import kotlin.test.*
|
||||||
|
|
||||||
@@ -167,4 +168,14 @@ class CommonizerTaskTests {
|
|||||||
assertFalse(subproject.cInteropCommonizationEnabled())
|
assertFalse(subproject.cInteropCommonizationEnabled())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun `test copyCommonizeCInteropForIdeTask creation - doesn't fail`() {
|
||||||
|
val project = ProjectBuilder.builder().build()
|
||||||
|
project.applyMultiplatformPlugin()
|
||||||
|
project.enableCInteropCommonization(true)
|
||||||
|
project.runLifecycleAwareTest {
|
||||||
|
project.copyCommonizeCInteropForIdeTask()?.get()?.cInteropCommonizerTaskOutputDirectories
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user