[Gradle] Fix invalidating iOS framework after import

^KT-49430 Verification Pending
This commit is contained in:
Artem Daugel-Dauge
2023-01-18 21:59:38 +01:00
committed by Space Team
parent 8a34d1f430
commit c2e092fe4a
5 changed files with 150 additions and 35 deletions
@@ -397,6 +397,75 @@ class CocoaPodsIT : BaseGradleIT() {
project.testWithWrapper(dummyTaskName)
}
@Test
fun testImportUTDAfterLinkingFramework() {
val linkTaskName = ":linkPodDebugFrameworkIOS"
project.gradleBuildScript().appendToCocoapodsBlock("""
framework {
baseName = "kotlin-library"
}
name = "kotlin-library"
podfile = project.file("ios-app/Podfile")
""".trimIndent())
hooks.addHook {
assertTasksExecuted(dummyTaskName)
assertTasksExecuted(podInstallTaskName)
}
project.testImport()
hooks.rewriteHooks {
assertTasksExecuted(linkTaskName)
}
project.testWithWrapper(linkTaskName)
hooks.rewriteHooks {
assertTasksUpToDate(dummyTaskName)
assertTasksUpToDate(podInstallTaskName)
}
project.testImport()
}
@Test
fun testChangeFrameworkTypeUTD() {
project.gradleBuildScript().appendToCocoapodsBlock("""
framework {
baseName = "kotlin-library"
}
name = "kotlin-library"
podfile = project.file("ios-app/Podfile")
""".trimIndent())
hooks.addHook {
assertTasksExecuted(dummyTaskName)
assertTasksExecuted(podInstallTaskName)
}
project.testImport()
hooks.rewriteHooks {
assertTasksUpToDate(dummyTaskName)
assertTasksUpToDate(podInstallTaskName)
}
project.testImport()
project.gradleBuildScript().appendToFrameworkBlock("isStatic = true")
hooks.rewriteHooks {
assertTasksExecuted(dummyTaskName)
assertTasksExecuted(podInstallTaskName)
}
project.testImport()
hooks.rewriteHooks {
assertTasksUpToDate(dummyTaskName)
assertTasksUpToDate(podInstallTaskName)
}
project.testImport()
}
@Test
fun basicUTDTest() {
val tasks = listOf(
@@ -771,10 +840,10 @@ class CocoaPodsIT : BaseGradleIT() {
fun testUseDynamicFramework() {
with(project) {
gradleBuildScript().addPod(defaultPodName, produceGitBlock(defaultPodRepo))
gradleBuildScript().appendToFrameworkBlock("isStatic=false")
gradleBuildScript().appendToFrameworkBlock("isStatic = false")
hooks.addHook {
// Check that an output framework is a dynamic framework
val framework = fileInWorkingDir("build/cocoapods/framework/cocoapods.framework/cocoapods")
val framework = fileInWorkingDir("build/bin/iOS/podDebugFramework/cocoapods.framework/cocoapods")
with(runProcess(listOf("file", framework.absolutePath), projectDir, environmentVariables = getEnvs())) {
assertTrue(isSuccessful)
assertTrue(output.contains("dynamically linked shared library"))
@@ -788,6 +857,27 @@ class CocoaPodsIT : BaseGradleIT() {
}
}
@Test
fun testUseStaticFramework() {
with(project) {
gradleBuildScript().addPod(defaultPodName, produceGitBlock(defaultPodRepo))
gradleBuildScript().appendToFrameworkBlock("isStatic = true")
hooks.addHook {
// Check that an output framework is a static framework
val framework = fileInWorkingDir("build/bin/iOS/podDebugFramework/cocoapods.framework/cocoapods")
with(runProcess(listOf("file", framework.absolutePath), projectDir, environmentVariables = getEnvs())) {
assertTrue(isSuccessful)
assertTrue(output.contains("current ar archive random library"))
}
}
test(
"linkPodDebugFrameworkIOS",
"-Pkotlin.native.cocoapods.generate.wrapper=true"
)
}
}
@Test
fun testCocoapodsWithRegularFrameworkDefinition() {
with(project) {