[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",
"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",
@@ -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<CompiledProject.() -> 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<String>) {
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)