Skip to content

Commit 67a0868

Browse files
nav-navSpace Team
authored andcommitted
Avoid accessing KotlinNativeLink taskProvider when task was not executed
#KT-85628
1 parent f89e5db commit 67a0868

3 files changed

Lines changed: 29 additions & 1 deletion

File tree

libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/FusStatisticsIT.kt

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ import org.jetbrains.kotlin.gradle.report.BuildReportType
1616
import org.jetbrains.kotlin.gradle.testbase.*
1717
import org.jetbrains.kotlin.gradle.testbase.BuildOptions.IsolatedProjectsMode
1818
import org.jetbrains.kotlin.gradle.uklibs.applyMultiplatform
19+
import org.jetbrains.kotlin.gradle.uklibs.includeBuild
1920
import org.jetbrains.kotlin.gradle.util.filterBackwardCompatibilityKotlinFusFiles
2021
import org.jetbrains.kotlin.gradle.util.filterKotlinFusFiles
2122
import org.jetbrains.kotlin.gradle.util.replaceText
@@ -832,6 +833,30 @@ class FusStatisticsIT : KGPBaseTest() {
832833
return expectedFiles
833834
}
834835

836+
@DisplayName("FUS should not break project configuration for included build")
837+
@GradleTest
838+
@MppGradlePluginTests
839+
fun testProjectConfiguration(gradleVersion: GradleVersion) {
840+
project("empty", gradleVersion) {
841+
val included = project("empty", gradleVersion) {
842+
plugins {
843+
kotlin("multiplatform")
844+
}
845+
buildScriptInjection {
846+
project.applyMultiplatform {
847+
iosArm64()
848+
iosSimulatorArm64()
849+
}
850+
}
851+
}
852+
includeBuild(included)
853+
854+
build("help", "-Pkotlin.session.logger.root.path=$projectPath") {
855+
assertOutputDoesNotContainFusErrors()
856+
}
857+
}
858+
}
859+
835860
private fun TestProject.applyDokka(version: String) {
836861
buildGradle.replaceText(
837862
"plugins {",

libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/native/KotilnNativeConfigureBinariesSideEffect.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -148,10 +148,10 @@ private fun Project.createLinkTask(binary: NativeBinary) {
148148
}
149149
)
150150
.disallowChanges()
151+
KotlinNativeCacheMetrics.collectMetrics(this, task.disableCache)
151152
}
152153

153154
NativeLinkTaskMetrics.collectMetrics(this)
154-
KotlinNativeCacheMetrics.collectMetrics(this, linkTask.flatMap { it.disableCache })
155155

156156
if (binary !is TestExecutable) {
157157
tasks.named(binary.compilation.target.artifactsTaskName).dependsOn(linkTask)

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

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -267,6 +267,9 @@ class DisabledNativeCacheTest {
267267

268268
evaluate()
269269

270+
//init task to ensure configuration time metrics are collected
271+
tasks.named(LINUX_X64_LINK_DEBUG_TASK_NAME, KotlinNativeLink::class.java).get()
272+
270273
assertNotNull(
271274
collectedFusConfigurationTimeMetrics.booleanMetrics.entries.singleOrNull {
272275
it.key == BooleanMetrics.KOTLIN_NATIVE_CACHE_DISABLED && it.value

0 commit comments

Comments
 (0)