[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) {
|
||||
return locateOrRegisterTask(
|
||||
"copyCommonizeCInteropForIde",
|
||||
args = listOf(commonizeCInteropTask),
|
||||
invokeWhenRegistered = {
|
||||
@OptIn(Idea222Api::class)
|
||||
ideaImportDependsOn(this)
|
||||
|
||||
+3
-4
@@ -9,14 +9,13 @@ import org.gradle.api.provider.Provider
|
||||
import org.gradle.api.tasks.*
|
||||
import org.gradle.work.DisableCachingByDefault
|
||||
import org.gradle.work.NormalizeLineEndings
|
||||
import org.jetbrains.kotlin.gradle.utils.future
|
||||
import java.io.File
|
||||
import javax.inject.Inject
|
||||
|
||||
@DisableCachingByDefault
|
||||
internal open class CopyCommonizeCInteropForIdeTask : AbstractCInteropCommonizerTask() {
|
||||
|
||||
internal open class CopyCommonizeCInteropForIdeTask @Inject constructor(
|
||||
private val commonizeCInteropTask: TaskProvider<CInteropCommonizerTask>
|
||||
get() = project.future { project.commonizeCInteropTask() }.getOrThrow() ?: throw IllegalStateException("Missing commonizeCInteropTask")
|
||||
) : AbstractCInteropCommonizerTask() {
|
||||
|
||||
@get:IgnoreEmptyDirectories
|
||||
@get:InputFiles
|
||||
|
||||
+11
@@ -11,6 +11,7 @@ import org.gradle.api.internal.project.ProjectInternal
|
||||
import org.gradle.testfixtures.ProjectBuilder
|
||||
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.copyCommonizeCInteropForIdeTask
|
||||
import org.jetbrains.kotlin.gradle.util.*
|
||||
import kotlin.test.*
|
||||
|
||||
@@ -167,4 +168,14 @@ class CommonizerTaskTests {
|
||||
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