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