KT-49771 - podInstall task is not executed after adding a pod dependency to the shared module
#KT-49771
This commit is contained in:
committed by
Space
parent
f48436b35e
commit
a695d9bf59
+34
@@ -52,6 +52,7 @@ class CocoaPodsIT : BaseGradleIT() {
|
||||
super.defaultBuildOptions().copy(customEnvironmentVariables = getEnvs())
|
||||
|
||||
val PODFILE_IMPORT_DIRECTIVE_PLACEHOLDER = "<import_mode_directive>"
|
||||
val PODFILE_IMPORT_POD_PLACEHOLDER = "#import_pod_directive"
|
||||
|
||||
private val cocoapodsSingleKtPod = "native-cocoapods-single"
|
||||
private val cocoapodsMultipleKtPods = "native-cocoapods-multiple"
|
||||
@@ -979,6 +980,33 @@ class CocoaPodsIT : BaseGradleIT() {
|
||||
project.testWithWrapper(":podPublishXCFramework")
|
||||
}
|
||||
|
||||
@Test
|
||||
fun testPodInstallUpToDateCheck() {
|
||||
project = getProjectByName(cocoapodsSingleKtPod)
|
||||
val subProjectName = "kotlin-library"
|
||||
val subprojectPodImportTask = ":$subProjectName$podImportTaskName"
|
||||
val subprojectPodspecTask = ":$subProjectName$podspecTaskName"
|
||||
val subprojectPodInstallTask = ":$subProjectName$podInstallTaskName"
|
||||
with(project) {
|
||||
preparePodfile("ios-app", ImportMode.FRAMEWORKS)
|
||||
build(subprojectPodImportTask, "-Pkotlin.native.cocoapods.generate.wrapper=true") {
|
||||
assertTasksExecuted(listOf(subprojectPodspecTask, subprojectPodInstallTask))
|
||||
}
|
||||
gradleBuildScript(subProjectName).addPod(defaultPodName)
|
||||
build(subprojectPodImportTask, "-Pkotlin.native.cocoapods.generate.wrapper=true") {
|
||||
assertTasksExecuted(listOf(subprojectPodspecTask, subprojectPodInstallTask))
|
||||
}
|
||||
build(subprojectPodImportTask, "-Pkotlin.native.cocoapods.generate.wrapper=true") {
|
||||
assertTasksNotExecuted(listOf(subprojectPodspecTask, subprojectPodInstallTask))
|
||||
}
|
||||
addPodToPodfile("ios-app", defaultPodName)
|
||||
build(subprojectPodImportTask, "-Pkotlin.native.cocoapods.generate.wrapper=true") {
|
||||
assertTasksNotExecuted(listOf(subprojectPodspecTask))
|
||||
assertTasksExecuted(listOf(subprojectPodInstallTask))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// paths
|
||||
|
||||
private fun CompiledProject.url() = externalSources().resolve("url")
|
||||
@@ -1459,6 +1487,12 @@ class CocoaPodsIT : BaseGradleIT() {
|
||||
}
|
||||
}
|
||||
|
||||
private fun Project.addPodToPodfile(iosAppLocation: String, pod: String) {
|
||||
val iosAppDir = projectDir.resolve(iosAppLocation)
|
||||
iosAppDir.resolve("Podfile").takeIf { it.exists() }?.modify {
|
||||
it.replace(PODFILE_IMPORT_POD_PLACEHOLDER, "pod '$pod'")
|
||||
}
|
||||
}
|
||||
|
||||
private fun kotlinLibraryPodspecContent(frameworkName: String? = null) = """
|
||||
Pod::Spec.new do |spec|
|
||||
|
||||
+1
@@ -6,4 +6,5 @@ target 'ios-app' do
|
||||
pod 'pod_dependency', :path => '../pod_dependency'
|
||||
pod 'subspec_dependency', :path => '../subspec_dependency'
|
||||
pod 'kotlin_library', :path => '../kotlin-library'
|
||||
#import_pod_directive
|
||||
end
|
||||
+1
@@ -397,6 +397,7 @@ open class KotlinCocoapodsPlugin : Plugin<Project> {
|
||||
it.group = TASK_GROUP
|
||||
it.description = "Invokes `pod install` call within Podfile location directory"
|
||||
it.podfile.set(cocoapodsExtension.podfile)
|
||||
it.podspec.set(podspecTaskProvider.map { podspecTask -> podspecTask.outputFile })
|
||||
it.frameworkName = project.provider { cocoapodsExtension.frameworkNameInternal }
|
||||
it.dependsOn(podspecTaskProvider)
|
||||
}
|
||||
|
||||
+7
-1
@@ -56,9 +56,15 @@ open class PodInstallTask : DefaultTask() {
|
||||
internal lateinit var frameworkName: Provider<String>
|
||||
|
||||
@get:Optional
|
||||
@get:Input
|
||||
@get:PathSensitive(PathSensitivity.ABSOLUTE)
|
||||
@get:InputFile
|
||||
internal val podfile = project.objects.property(File::class.java)
|
||||
|
||||
@get:Optional
|
||||
@get:PathSensitive(PathSensitivity.ABSOLUTE)
|
||||
@get:InputFile
|
||||
internal val podspec = project.objects.property(File::class.java)
|
||||
|
||||
@get:Optional
|
||||
@get:OutputDirectory
|
||||
internal val podsXcodeProjDirProvider: Provider<File>?
|
||||
|
||||
Reference in New Issue
Block a user