[Gradle] Provide granular Gradle warnings suppression for CocoaPodsIT

^KT-56162 Fixed
This commit is contained in:
Artem Daugel-Dauge
2023-01-24 22:18:45 +01:00
committed by Space Team
parent 2922f85a98
commit b1b744b863
2 changed files with 119 additions and 39 deletions
@@ -179,12 +179,10 @@ class AppleFrameworkIT : BaseGradleIT() {
"SDK_NAME" to "iphoneos", "SDK_NAME" to "iphoneos",
"ARCHS" to "arm64" "ARCHS" to "arm64"
) )
).suppressDeprecationWarningsOn( )
"AGP uses deprecated IncrementalTaskInputs (Gradle 7.5)" build("tasks", options = options.suppressDeprecationWarningsOn("AGP uses deprecated IncrementalTaskInputs (Gradle 7.5)") {
) { options ->
GradleVersion.version(currentGradleVersion) >= GradleVersion.version(TestVersions.Gradle.G_7_5) && options.safeAndroidGradlePluginVersion < AGPVersion.v7_3_0 GradleVersion.version(currentGradleVersion) >= GradleVersion.version(TestVersions.Gradle.G_7_5) && options.safeAndroidGradlePluginVersion < AGPVersion.v7_3_0
} }) {
build("tasks", options = options) {
assertSuccessful() assertSuccessful()
assertTasksRegistered( assertTasksRegistered(
":shared:embedAndSignAppleFrameworkForXcode", ":shared:embedAndSignAppleFrameworkForXcode",
@@ -180,10 +180,41 @@ class CocoaPodsIT : BaseGradleIT() {
} }
@Test @Test
fun testPodImportSingle() = doTestImportSingle() fun testPodImportSingle() {
val project = getProjectByName(cocoapodsSingleKtPod)
project.preparePodfile("ios-app", ImportMode.FRAMEWORKS)
project.testImportWithAsserts()
suppressGradleWarningsForKt55751()
hooks.rewriteHooks {
podImportAsserts("kotlin-library")
}
project.testSynthetic(":kotlin-library:podImport")
}
@Test @Test
fun testPodImportMultiple() = doTestImportMultiple() fun testPodImportMultiple() {
val project = getProjectByName(cocoapodsMultipleKtPods)
project.preparePodfile("ios-app", ImportMode.FRAMEWORKS)
hooks.suppressGradleWarningsForKt55751 = false
project.testImportWithAsserts()
hooks.suppressGradleWarningsForKt55751 = true
hooks.rewriteHooks {
podImportAsserts("kotlin-library")
}
project.testSynthetic(":kotlin-library:podImport")
hooks.suppressGradleWarningsForKt55751 = false
hooks.rewriteHooks {
podImportAsserts("second-library")
}
project.testSynthetic(":second-library:podImport")
}
@Test @Test
fun testPodspecMultiple() = doTestPodspec( fun testPodspecMultiple() = doTestPodspec(
@@ -236,6 +267,8 @@ class CocoaPodsIT : BaseGradleIT() {
@Test @Test
fun testSpecReposImport() { fun testSpecReposImport() {
suppressGradleWarningsForKt55751()
val podName = "example" val podName = "example"
val podRepo = "https://github.com/alozhkin/spec_repo" val podRepo = "https://github.com/alozhkin/spec_repo"
with(project.gradleBuildScript()) { with(project.gradleBuildScript()) {
@@ -296,26 +329,36 @@ class CocoaPodsIT : BaseGradleIT() {
@Test @Test
fun testPodDownloadGitNoTagNorCommit() { fun testPodDownloadGitNoTagNorCommit() {
suppressGradleWarningsForKt55751()
doTestGit() doTestGit()
} }
@Test @Test
fun testPodDownloadGitTag() { fun testPodDownloadGitTag() {
suppressGradleWarningsForKt55751()
doTestGit(tag = "4.0.0") doTestGit(tag = "4.0.0")
} }
@Test @Test
fun testPodDownloadGitCommit() { fun testPodDownloadGitCommit() {
suppressGradleWarningsForKt55751()
doTestGit(commit = "9c07ac0a5645abb58850253eeb109ed0dca515c1") doTestGit(commit = "9c07ac0a5645abb58850253eeb109ed0dca515c1")
} }
@Test @Test
fun testPodDownloadGitBranch() { fun testPodDownloadGitBranch() {
suppressGradleWarningsForKt55751()
doTestGit(branch = "2974") doTestGit(branch = "2974")
} }
@Test @Test
fun testPodDownloadGitSubspec() { fun testPodDownloadGitSubspec() {
suppressGradleWarningsForKt55751()
doTestGit( doTestGit(
repo = "https://github.com/SDWebImage/SDWebImage.git", repo = "https://github.com/SDWebImage/SDWebImage.git",
pod = "SDWebImage/MapKit", pod = "SDWebImage/MapKit",
@@ -325,6 +368,8 @@ class CocoaPodsIT : BaseGradleIT() {
@Test @Test
fun testPodDownloadGitBranchAndCommit() { fun testPodDownloadGitBranchAndCommit() {
suppressGradleWarningsForKt55751()
val branch = "2974" val branch = "2974"
val commit = "21637dd6164c0641e414bdaf3885af6f1ef15aee" val commit = "21637dd6164c0641e414bdaf3885af6f1ef15aee"
with(project.gradleBuildScript()) { with(project.gradleBuildScript()) {
@@ -336,6 +381,8 @@ class CocoaPodsIT : BaseGradleIT() {
// tag priority is bigger than branch priority // tag priority is bigger than branch priority
@Test @Test
fun testPodDownloadGitBranchAndTag() { fun testPodDownloadGitBranchAndTag() {
suppressGradleWarningsForKt55751()
val branch = "2974" val branch = "2974"
val tag = "4.0.0" val tag = "4.0.0"
with(project.gradleBuildScript()) { with(project.gradleBuildScript()) {
@@ -346,6 +393,8 @@ class CocoaPodsIT : BaseGradleIT() {
@Test @Test
fun testDownloadAndImport() { fun testDownloadAndImport() {
suppressGradleWarningsForKt55751()
val tag = "4.0.0" val tag = "4.0.0"
with(project.gradleBuildScript()) { with(project.gradleBuildScript()) {
addPod(defaultPodName, produceGitBlock(defaultPodRepo, tagName = tag)) addPod(defaultPodName, produceGitBlock(defaultPodRepo, tagName = tag))
@@ -409,17 +458,20 @@ class CocoaPodsIT : BaseGradleIT() {
""".trimIndent()) """.trimIndent())
hooks.suppressGradleWarningsForKt55751 = false
hooks.addHook { hooks.addHook {
assertTasksExecuted(dummyTaskName) assertTasksExecuted(dummyTaskName)
assertTasksExecuted(podInstallTaskName) assertTasksExecuted(podInstallTaskName)
} }
project.testImport() project.testImport()
hooks.suppressGradleWarningsForKt55751 = true
hooks.rewriteHooks { hooks.rewriteHooks {
assertTasksExecuted(linkTaskName) assertTasksExecuted(linkTaskName)
} }
project.testWithWrapper(linkTaskName) project.testWithWrapper(linkTaskName)
hooks.suppressGradleWarningsForKt55751 = false
hooks.rewriteHooks { hooks.rewriteHooks {
assertTasksUpToDate(dummyTaskName) assertTasksUpToDate(dummyTaskName)
assertTasksUpToDate(podInstallTaskName) assertTasksUpToDate(podInstallTaskName)
@@ -468,6 +520,8 @@ class CocoaPodsIT : BaseGradleIT() {
@Test @Test
fun basicUTDTest() { fun basicUTDTest() {
suppressGradleWarningsForKt55751()
val tasks = listOf( val tasks = listOf(
podspecTaskName, podspecTaskName,
defaultPodGenTaskName, defaultPodGenTaskName,
@@ -529,6 +583,8 @@ class CocoaPodsIT : BaseGradleIT() {
@Test @Test
fun testUTDPodAdded() { fun testUTDPodAdded() {
suppressGradleWarningsForKt55751()
with(project.gradleBuildScript()) { with(project.gradleBuildScript()) {
addPod(defaultPodName, produceGitBlock(defaultPodRepo)) addPod(defaultPodName, produceGitBlock(defaultPodRepo))
} }
@@ -576,6 +632,8 @@ class CocoaPodsIT : BaseGradleIT() {
@Test @Test
fun testImportSubspecs() { fun testImportSubspecs() {
suppressGradleWarningsForKt55751()
with(project.gradleBuildScript()) { with(project.gradleBuildScript()) {
addPod("SDWebImage/Core") addPod("SDWebImage/Core")
addPod("SDWebImage/MapKit") addPod("SDWebImage/MapKit")
@@ -585,6 +643,8 @@ class CocoaPodsIT : BaseGradleIT() {
@Test @Test
fun testUTDTargetAdded() { fun testUTDTargetAdded() {
suppressGradleWarningsForKt55751()
with(project.gradleBuildScript()) { with(project.gradleBuildScript()) {
addPod(defaultPodName, produceGitBlock(defaultPodRepo)) addPod(defaultPodName, produceGitBlock(defaultPodRepo))
appendToCocoapodsBlock("osx.deploymentTarget = \"10.15\"") appendToCocoapodsBlock("osx.deploymentTarget = \"10.15\"")
@@ -706,6 +766,8 @@ class CocoaPodsIT : BaseGradleIT() {
@Test @Test
fun testUTDBuild() { fun testUTDBuild() {
suppressGradleWarningsForKt55751()
with(project.gradleBuildScript()) { with(project.gradleBuildScript()) {
addPod(defaultPodName, produceGitBlock()) addPod(defaultPodName, produceGitBlock())
} }
@@ -738,14 +800,17 @@ class CocoaPodsIT : BaseGradleIT() {
with(project.gradleBuildScript()) { with(project.gradleBuildScript()) {
addPod(defaultPodName, produceGitBlock()) addPod(defaultPodName, produceGitBlock())
} }
hooks.suppressGradleWarningsForKt55751 = true
hooks.addHook { hooks.addHook {
assertTasksExecuted(defaultBuildTaskName) assertTasksExecuted(defaultBuildTaskName)
} }
project.testImport() project.testImport()
hooks.suppressGradleWarningsForKt55751 = false
hooks.rewriteHooks {} hooks.rewriteHooks {}
project.test(":clean") project.test(":clean")
hooks.suppressGradleWarningsForKt55751 = true
hooks.addHook { hooks.addHook {
assertTasksExecuted(defaultBuildTaskName) assertTasksExecuted(defaultBuildTaskName)
} }
@@ -762,6 +827,8 @@ class CocoaPodsIT : BaseGradleIT() {
@Test @Test
fun testGroovyDownloadAndImport() { fun testGroovyDownloadAndImport() {
suppressGradleWarningsForKt55751()
val project = getProjectByName(groovyTemplateProjectName) val project = getProjectByName(groovyTemplateProjectName)
val tag = "4.0.0" val tag = "4.0.0"
with(project.gradleBuildScript()) { with(project.gradleBuildScript()) {
@@ -775,6 +842,8 @@ class CocoaPodsIT : BaseGradleIT() {
@Test @Test
fun supportPodsWithDependencies() { fun supportPodsWithDependencies() {
suppressGradleWarningsForKt55751()
with(project.gradleBuildScript()) { with(project.gradleBuildScript()) {
addPod("AlamofireImage") addPod("AlamofireImage")
} }
@@ -783,6 +852,8 @@ class CocoaPodsIT : BaseGradleIT() {
@Test @Test
fun testCustomPackageName() { fun testCustomPackageName() {
suppressGradleWarningsForKt55751()
with(project.gradleBuildScript()) { with(project.gradleBuildScript()) {
addPod("AFNetworking", "packageName = \"AFNetworking\"") addPod("AFNetworking", "packageName = \"AFNetworking\"")
} }
@@ -803,6 +874,8 @@ class CocoaPodsIT : BaseGradleIT() {
@Test @Test
fun testCinteropExtraOpts() { fun testCinteropExtraOpts() {
suppressGradleWarningsForKt55751()
with(project) { with(project) {
gradleBuildScript().addPod("AFNetworking", "extraOpts = listOf(\"-help\")") gradleBuildScript().addPod("AFNetworking", "extraOpts = listOf(\"-help\")")
hooks.addHook { hooks.addHook {
@@ -814,6 +887,8 @@ class CocoaPodsIT : BaseGradleIT() {
@Test @Test
fun testUseLibrariesMode() { fun testUseLibrariesMode() {
suppressGradleWarningsForKt55751()
with(project) { with(project) {
gradleBuildScript().appendToCocoapodsBlock("useLibraries()") gradleBuildScript().appendToCocoapodsBlock("useLibraries()")
gradleBuildScript().addPod("AFNetworking", configuration = "headers = \"AFNetworking/AFNetworking.h\"") gradleBuildScript().addPod("AFNetworking", configuration = "headers = \"AFNetworking/AFNetworking.h\"")
@@ -824,6 +899,8 @@ class CocoaPodsIT : BaseGradleIT() {
@Test @Test
fun testUseLibrariesModeWarnWhenPodIsAddedWithoutHeadersSpecified() { fun testUseLibrariesModeWarnWhenPodIsAddedWithoutHeadersSpecified() {
suppressGradleWarningsForKt55751()
with(project) { with(project) {
gradleBuildScript().appendToCocoapodsBlock("useLibraries()") gradleBuildScript().appendToCocoapodsBlock("useLibraries()")
gradleBuildScript().addPod("AFNetworking") gradleBuildScript().addPod("AFNetworking")
@@ -838,6 +915,8 @@ class CocoaPodsIT : BaseGradleIT() {
@Test @Test
fun testUseDynamicFramework() { fun testUseDynamicFramework() {
suppressGradleWarningsForKt55751()
with(project) { with(project) {
gradleBuildScript().addPod(defaultPodName, produceGitBlock(defaultPodRepo)) gradleBuildScript().addPod(defaultPodName, produceGitBlock(defaultPodRepo))
gradleBuildScript().appendToFrameworkBlock("isStatic = false") gradleBuildScript().appendToFrameworkBlock("isStatic = false")
@@ -859,6 +938,8 @@ class CocoaPodsIT : BaseGradleIT() {
@Test @Test
fun testUseStaticFramework() { fun testUseStaticFramework() {
suppressGradleWarningsForKt55751()
with(project) { with(project) {
gradleBuildScript().addPod(defaultPodName, produceGitBlock(defaultPodRepo)) gradleBuildScript().addPod(defaultPodName, produceGitBlock(defaultPodRepo))
gradleBuildScript().appendToFrameworkBlock("isStatic = true") gradleBuildScript().appendToFrameworkBlock("isStatic = true")
@@ -888,6 +969,8 @@ class CocoaPodsIT : BaseGradleIT() {
@Test @Test
fun testSyncFramework() { fun testSyncFramework() {
suppressGradleWarningsForKt55751()
with(project) { with(project) {
hooks.addHook { hooks.addHook {
assertTasksExecuted(":linkPodDebugFrameworkIOS") assertTasksExecuted(":linkPodDebugFrameworkIOS")
@@ -904,6 +987,8 @@ class CocoaPodsIT : BaseGradleIT() {
@Test @Test
fun testSyncFrameworkCustomXcodeConfiguration() { fun testSyncFrameworkCustomXcodeConfiguration() {
suppressGradleWarningsForKt55751()
with(project) { with(project) {
gradleBuildScript().appendToCocoapodsBlock("xcodeConfigurationToNativeBuildType[\"CUSTOM\"] = org.jetbrains.kotlin.gradle.plugin.mpp.NativeBuildType.DEBUG\n") gradleBuildScript().appendToCocoapodsBlock("xcodeConfigurationToNativeBuildType[\"CUSTOM\"] = org.jetbrains.kotlin.gradle.plugin.mpp.NativeBuildType.DEBUG\n")
hooks.addHook { hooks.addHook {
@@ -1060,11 +1145,16 @@ class CocoaPodsIT : BaseGradleIT() {
} }
@Test @Test
fun testPodDependencyInUnitTests() = fun testPodDependencyInUnitTests() {
suppressGradleWarningsForKt55751()
getProjectByName(cocoapodsTestsProjectName).testWithWrapper(":iosX64Test") getProjectByName(cocoapodsTestsProjectName).testWithWrapper(":iosX64Test")
}
@Test @Test
fun testCinteropUpToDate() { fun testCinteropUpToDate() {
suppressGradleWarningsForKt55751()
project.gradleBuildScript().addPod(defaultPodName, produceGitBlock(defaultPodRepo)) project.gradleBuildScript().addPod(defaultPodName, produceGitBlock(defaultPodRepo))
project.testImport() project.testImport()
hooks.addHook { hooks.addHook {
@@ -1108,6 +1198,8 @@ class CocoaPodsIT : BaseGradleIT() {
@Test @Test
fun testPodPublishing() { fun testPodPublishing() {
suppressGradleWarningsForKt55751()
hooks.addHook { hooks.addHook {
assertTasksExecuted(":podPublishReleaseXCFramework") assertTasksExecuted(":podPublishReleaseXCFramework")
assertTasksExecuted(":podPublishDebugXCFramework") assertTasksExecuted(":podPublishDebugXCFramework")
@@ -1130,6 +1222,8 @@ class CocoaPodsIT : BaseGradleIT() {
@Test @Test
fun testPodPublishingWithCustomProperties() { fun testPodPublishingWithCustomProperties() {
suppressGradleWarningsForKt55751()
with(project.gradleBuildScript()) { with(project.gradleBuildScript()) {
appendToCocoapodsBlock("name = \"CustomPod\"") appendToCocoapodsBlock("name = \"CustomPod\"")
@@ -1190,6 +1284,8 @@ class CocoaPodsIT : BaseGradleIT() {
@Test @Test
fun testCinteropKlibsProvideLinkerOptsToFramework() = with(project) { fun testCinteropKlibsProvideLinkerOptsToFramework() = with(project) {
suppressGradleWarningsForKt55751()
gradleBuildScript().addPod("AFNetworking") gradleBuildScript().addPod("AFNetworking")
testWithWrapper(":cinteropAFNetworkingIOS") testWithWrapper(":cinteropAFNetworkingIOS")
@@ -1276,6 +1372,8 @@ class CocoaPodsIT : BaseGradleIT() {
private class CustomHooks { private class CustomHooks {
private val hooks = mutableSetOf<CompiledProject.() -> Unit>() private val hooks = mutableSetOf<CompiledProject.() -> Unit>()
var suppressGradleWarningsForKt55751 = false
fun addHook(hook: CompiledProject.() -> Unit) { fun addHook(hook: CompiledProject.() -> Unit) {
hooks.add(hook) hooks.add(hook)
} }
@@ -1292,29 +1390,8 @@ class CocoaPodsIT : BaseGradleIT() {
} }
} }
private fun doTestImportSingle() { private fun suppressGradleWarningsForKt55751() {
val project = getProjectByName(cocoapodsSingleKtPod) hooks.suppressGradleWarningsForKt55751 = true
val subprojects = listOf("kotlin-library")
doTestPodImport(project, subprojects)
}
private fun doTestImportMultiple() {
val project = getProjectByName(cocoapodsMultipleKtPods)
val subprojects = listOf("kotlin-library", "second-library")
doTestPodImport(project, subprojects)
}
private fun doTestPodImport(project: BaseGradleIT.Project, subprojects: List<String>) {
with(project) {
preparePodfile("ios-app", ImportMode.FRAMEWORKS)
}
project.testImportWithAsserts()
subprojects.forEach {
hooks.rewriteHooks {
podImportAsserts(it)
}
project.testSynthetic(":$it:podImport")
}
} }
private fun doTestGit( private fun doTestGit(
@@ -1368,15 +1445,20 @@ class CocoaPodsIT : BaseGradleIT() {
taskName: String, taskName: String,
vararg args: String vararg args: String
) { ) {
val currentGradleVersion = chooseWrapperVersionOrFinishTest() val buildOptions = defaultBuildOptions().run {
if (hooks.suppressGradleWarningsForKt55751) {
suppressDeprecationWarningsSinceGradleVersion(
TestVersions.Gradle.G_7_4,
chooseWrapperVersionOrFinishTest(),
"Workaround for KT-55751"
)
} else {
this
}
}
// check that test executable // check that test executable
build( build(taskName, *args, options = buildOptions) {
taskName, *args, options = defaultBuildOptions().suppressDeprecationWarningsSinceGradleVersion(
TestVersions.Gradle.G_7_4,
currentGradleVersion,
"Workaround for KT-55751"
)
) {
//base checks //base checks
assertSuccessful() assertSuccessful()
hooks.trigger(this) hooks.trigger(this)