diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/CommonizerIT.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/CommonizerIT.kt index 1f62e214761..b15f88a0608 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/CommonizerIT.kt +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/CommonizerIT.kt @@ -90,6 +90,37 @@ open class CommonizerIT : KGPBaseTest() { } } + @DisplayName("KT-61359: commonize native distribution and compile with configuration cache") + @GradleTest + fun testCleanCommonizationWithConfigurationCache(gradleVersion: GradleVersion) { + project("commonizeNativeDistributionWithConfigurationCache", gradleVersion) { + val buildOptionsWithConfigurationCache = buildOptions.copy(configurationCache = true) + // Clean native distribution -> capture configuration cache state + build(":cleanNativeDistributionCommonization") + build(":compileNativeMainKotlinMetadata", buildOptions = buildOptionsWithConfigurationCache) { + assertTasksExecuted(":commonizeNativeDistribution") + assertTasksExecuted(":compileNativeMainKotlinMetadata") + assertConfigurationCacheStored() + } + + // Clean task outputs -> reuse configuration cache + build(":clean") + build(":compileNativeMainKotlinMetadata", buildOptions = buildOptionsWithConfigurationCache) { + assertTasksUpToDate(":commonizeNativeDistribution") + assertTasksExecuted(":compileNativeMainKotlinMetadata") + assertConfigurationCacheReused() + } + + // full clean -> reuse configuration cache + build("clean", ":cleanNativeDistributionCommonization") + build(":compileNativeMainKotlinMetadata", buildOptions = buildOptionsWithConfigurationCache) { + assertTasksExecuted(":commonizeNativeDistribution") + assertTasksExecuted(":compileNativeMainKotlinMetadata") + assertConfigurationCacheReused() + } + } + } + @DisplayName("Commonize Curl Interop UP-TO-DATE check") @GradleTest fun testCommonizeCurlInteropUTDCheck(gradleVersion: GradleVersion) { diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/commonizeNativeDistributionWithConfigurationCache/build.gradle.kts b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/commonizeNativeDistributionWithConfigurationCache/build.gradle.kts new file mode 100644 index 00000000000..71b0e23151e --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/commonizeNativeDistributionWithConfigurationCache/build.gradle.kts @@ -0,0 +1,13 @@ +plugins { + kotlin("multiplatform") +} + +repositories { + mavenLocal() + mavenCentral() +} + +kotlin { + linuxX64() + linuxArm64() +} \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/commonizeNativeDistributionWithConfigurationCache/src/nativeMain/kotlin/Main.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/commonizeNativeDistributionWithConfigurationCache/src/nativeMain/kotlin/Main.kt new file mode 100644 index 00000000000..b01a2121c77 --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/commonizeNativeDistributionWithConfigurationCache/src/nativeMain/kotlin/Main.kt @@ -0,0 +1,5 @@ +package lib + +fun main() { + platform.zlib.ZLIB_VERNUM +} \ No newline at end of file