diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/native/CocoaPodsIT.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/native/CocoaPodsIT.kt index 8dc7febdb6b..e6eb74c1bcd 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/native/CocoaPodsIT.kt +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/native/CocoaPodsIT.kt @@ -250,6 +250,30 @@ class CocoaPodsIT : KGPBaseTest() { } } + @DisplayName("cinterops UTD after pod change") + @GradleTest + fun testCinteropsUTDAfterPodChange(gradleVersion: GradleVersion) { + nativeProjectWithCocoapodsAndIosAppPodFile(gradleVersion = gradleVersion) { + + val podDeclaration = """pod("Base64", version = "1.0.1")""" + buildGradleKts.addCocoapodsBlock(podDeclaration) + + buildWithCocoapodsWrapper(podImportTaskName) { + assertTasksExecuted(":cinteropBase64IOS") + } + + buildWithCocoapodsWrapper(podImportTaskName) { + assertTasksUpToDate(":cinteropBase64IOS") + } + + buildGradleKts.replaceText(podDeclaration, """pod("Base64", version = "1.1.2")""") + + buildWithCocoapodsWrapper(podImportTaskName) { + assertTasksExecuted(":cinteropBase64IOS") + } + } + } + @DisplayName("Installing pod without pod file") @GradleTest fun testPodInstallWithoutPodFile(gradleVersion: GradleVersion) { diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/native/cocoapods/KotlinCocoapodsPlugin.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/native/cocoapods/KotlinCocoapodsPlugin.kt index 6341b8ca135..9348159351c 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/native/cocoapods/KotlinCocoapodsPlugin.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/native/cocoapods/KotlinCocoapodsPlugin.kt @@ -338,6 +338,10 @@ open class KotlinCocoapodsPlugin : Plugin { val podBuildTaskProvider = project.getPodBuildTaskProvider(target, pod) val buildSettingsFileProvider = project.buildSettingsFileProvider(pod, target) interopTask.inputs.file(buildSettingsFileProvider) + + // Since we can't properly declare frameworks as inputs (see below) it's the best approximation + interopTask.inputs.files(podBuildTaskProvider.flatMap { it.srcDir }) + interopTask.dependsOn(podBuildTaskProvider) interopTask.doFirst { _ ->