diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/native/KotlinNativeCompilerDownloadIT.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/native/KotlinNativeCompilerDownloadIT.kt index 6c009ee9910af..c46bfc56f2a0a 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/native/KotlinNativeCompilerDownloadIT.kt +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/native/KotlinNativeCompilerDownloadIT.kt @@ -9,6 +9,7 @@ import org.gradle.util.GradleVersion import org.jetbrains.kotlin.gradle.testbase.* import org.jetbrains.kotlin.gradle.testbase.TestVersions.Kotlin.STABLE_RELEASE import org.jetbrains.kotlin.gradle.util.capitalize +import org.jetbrains.kotlin.gradle.util.replaceFirst import org.jetbrains.kotlin.konan.target.HostManager import org.jetbrains.kotlin.konan.target.presetName import org.junit.jupiter.api.DisplayName @@ -100,6 +101,39 @@ class KotlinNativeCompilerDownloadIT : KGPBaseTest() { } } + @DisplayName("KT-65617: check that `addKotlinNativeBundleConfiguration` does not configure dependencies after configuration has been resolved") + @GradleTest + fun checkThatKonanConfigurationCouldBeConfiguredOnlyOnce(gradleVersion: GradleVersion, @TempDir konanTemp: Path) { + nativeProject( + "commonize-native-distribution", + gradleVersion, + buildOptions = defaultBuildOptions.copy( + konanDataDir = konanTemp, + ), + ) { + buildGradleKts.replaceFirst( + "plugins {", + """ + @file:Suppress("INVISIBLE_REFERENCE", "INVISIBLE_MEMBER") + import org.jetbrains.kotlin.gradle.targets.native.toolchain.KotlinNativeBundleArtifactFormat + plugins { + """.trimIndent() + ) + buildGradleKts.appendText( + """ + + tasks.create("taskWithConfigurationResolvedConfiguration") { + dependsOn(":commonizeNativeDistribution") + doFirst { + KotlinNativeBundleArtifactFormat.addKotlinNativeBundleConfiguration(project.rootProject) + } + } + """.trimIndent() + ) + build(":commonizeNativeDistribution", "taskWithConfigurationResolvedConfiguration") + } + } + @DisplayName("KT-58303: Downloading Kotlin Native on configuration phase(deprecated version)") @GradleTest fun shouldDownloadKotlinNativeOnConfigurationPhaseWithToolchainDisabled(gradleVersion: GradleVersion, @TempDir konanTemp: Path) {