From 9bb2a2468d826658b98048ba6a38afdeb684cc99 Mon Sep 17 00:00:00 2001 From: "Alexander.Likhachev" Date: Thu, 19 Jan 2023 18:01:33 +0100 Subject: [PATCH] [Gradle] Suppress warnings only for the Gradle versions that produce them KT-55972 Related --- .../jetbrains/kotlin/gradle/BaseGradleIT.kt | 25 +++++--- .../gradle/BuildIdeaKpmProjectModelIT.kt | 10 ++-- .../jetbrains/kotlin/gradle/CommonizerIT.kt | 13 +++-- .../kotlin/gradle/ConfigurationAvoidanceIT.kt | 7 ++- .../kotlin/gradle/HierarchicalMppIT.kt | 9 ++- .../kotlin/gradle/Kotlin2JsGradlePluginIT.kt | 7 ++- .../kotlin/gradle/KpmCompilerPluginMppIT.kt | 25 ++++---- .../kotlin/gradle/MultiplatformGradleIT.kt | 11 ++-- .../kotlin/gradle/NewMultiplatformIT.kt | 12 ++-- .../gradle/VariantAwareDependenciesMppIT.kt | 10 ++-- .../gradle/android/KotlinAndroidMppIT.kt | 12 ++-- ...MultiplatformAndroidSourceSetLayoutV2IT.kt | 13 ++--- .../mpp/AndroidAndJavaConsumeMppLibIT.kt | 36 ++++++------ .../kotlin/gradle/native/AppleFrameworkIT.kt | 57 ++++++++++++------- .../kotlin/gradle/native/CocoaPodsIT.kt | 16 +++--- .../kotlin/gradle/native/GeneralNativeIT.kt | 13 +++-- .../kotlin/gradle/native/XCFrameworkIT.kt | 16 +++--- .../kotlin/gradle/tasks/CleanDataTaskIT.kt | 7 ++- .../kotlin/gradle/testbase/BuildOptions.kt | 25 +++++++- 19 files changed, 199 insertions(+), 125 deletions(-) diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/BaseGradleIT.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/BaseGradleIT.kt index 0de104480b3..6a652752f4c 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/BaseGradleIT.kt +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/BaseGradleIT.kt @@ -282,7 +282,10 @@ abstract class BaseGradleIT { val enableCompatibilityMetadataVariant: Boolean? = null, val withReports: List = emptyList(), val enableKpmModelMapping: Boolean? = null, - ) + ) { + val safeAndroidGradlePluginVersion: AGPVersion + get() = androidGradlePluginVersion ?: error("AGP version is expected to be set") + } enum class ConfigurationCacheProblems { FAIL, WARN @@ -1018,16 +1021,24 @@ fun BaseGradleIT.BuildOptions.withFreeCommandLineArgument(argument: String) = co freeCommandLineArgs = freeCommandLineArgs + argument ) -fun BaseGradleIT.BuildOptions.suppressDeprecationWarningsOnAgpLessThan( - agpVersion: AGPVersion, - @Suppress("UNUSED_PARAMETER") reason: String // just to require specifying a reason for suppressing +fun BaseGradleIT.BuildOptions.suppressDeprecationWarningsOn( + @Suppress("UNUSED_PARAMETER") reason: String, // just to require specifying a reason for suppressing + predicate: (BaseGradleIT.BuildOptions) -> Boolean ) = - if ((androidGradlePluginVersion ?: error("AGP version expected to be configured")) >= agpVersion) { - this + if (predicate(this)) { + copy(warningMode = WarningMode.Summary) } else { - copy(warningMode = WarningMode.All) + this } +fun BaseGradleIT.BuildOptions.suppressDeprecationWarningsSinceGradleVersion( + gradleVersion: String, + currentGradleVersion: String, + reason: String +) = suppressDeprecationWarningsOn(reason) { + GradleVersion.version(currentGradleVersion) >= GradleVersion.version(gradleVersion) +} + private const val MAVEN_LOCAL_URL_PLACEHOLDER = "" internal const val PLUGIN_MARKER_VERSION_PLACEHOLDER = "" diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/BuildIdeaKpmProjectModelIT.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/BuildIdeaKpmProjectModelIT.kt index b238bdcb50a..1d0e7c19910 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/BuildIdeaKpmProjectModelIT.kt +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/BuildIdeaKpmProjectModelIT.kt @@ -5,7 +5,6 @@ package org.jetbrains.kotlin.gradle -import org.gradle.api.logging.configuration.WarningMode import org.gradle.util.GradleVersion import org.jetbrains.kotlin.gradle.testbase.* import org.junit.jupiter.api.Disabled @@ -20,9 +19,12 @@ class BuildIdeaKpmProjectModelIT : KGPBaseTest() { @DisplayName("Check 'buildIdeaKpmProjectModel' creates expected files") fun `test - simple kpm project`(gradleVersion: GradleVersion) { project( - "kpm-simple", gradleVersion, buildOptions = defaultBuildOptions.copy( - // Workaround for KT-55751 - warningMode = WarningMode.None, + "kpm-simple", + gradleVersion, + buildOptions = defaultBuildOptions.suppressDeprecationWarningsSinceGradleVersion( + TestVersions.Gradle.G_7_4, + gradleVersion, + "Workaround for KT-55751" ) ) { build("buildIdeaKpmProjectModel") { diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/CommonizerIT.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/CommonizerIT.kt index b2967fd4d52..8d9383a1169 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/CommonizerIT.kt +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/CommonizerIT.kt @@ -7,9 +7,9 @@ package org.jetbrains.kotlin.gradle import groovy.json.StringEscapeUtils import org.gradle.api.logging.LogLevel.INFO -import org.gradle.api.logging.configuration.WarningMode import org.gradle.internal.os.OperatingSystem import org.jetbrains.kotlin.commonizer.CommonizerTarget +import org.jetbrains.kotlin.gradle.testbase.TestVersions import org.jetbrains.kotlin.gradle.util.reportSourceSetCommonizerDependencies import org.jetbrains.kotlin.incremental.testingUtils.assertEqualDirectories import org.jetbrains.kotlin.konan.target.HostManager @@ -415,12 +415,15 @@ class CommonizerIT : BaseGradleIT() { @Test fun `test KT-49735 two kotlin targets with same konanTarget`() { with(Project("commonize-kt-49735-twoKotlinTargets-oneKonanTarget")) { + val currentGradleVersion = chooseWrapperVersionOrFinishTest() build( ":assemble", - options = defaultBuildOptions().copy( - // Workaround for KT-55751 - warningMode = WarningMode.None, - ) + options = defaultBuildOptions() + .suppressDeprecationWarningsSinceGradleVersion( + TestVersions.Gradle.G_7_4, + currentGradleVersion, + "Workaround for KT-55751" + ) ) { assertTasksExecuted(":compileCommonMainKotlinMetadata") assertSuccessful() diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/ConfigurationAvoidanceIT.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/ConfigurationAvoidanceIT.kt index f29ca5b1198..2ea3f7f2bb6 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/ConfigurationAvoidanceIT.kt +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/ConfigurationAvoidanceIT.kt @@ -157,9 +157,10 @@ class ConfigurationAvoidanceIT : KGPBaseTest() { "kotlin-js-browser-project", gradleVersion, kts = true, - buildOptions = defaultBuildOptions.copy( - // bug in Gradle: https://github.com/gradle/gradle/issues/15796 - warningMode = if (gradleVersion < GradleVersion.version("7.0")) WarningMode.Summary else defaultBuildOptions.warningMode + buildOptions = defaultBuildOptions.suppressDeprecationWarningsUntilGradleVersion( + TestVersions.Gradle.G_7_0, + gradleVersion, + "bug in Gradle: https://github.com/gradle/gradle/issues/15796" ) ) } diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/HierarchicalMppIT.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/HierarchicalMppIT.kt index 061577ee636..f0016de78cf 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/HierarchicalMppIT.kt +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/HierarchicalMppIT.kt @@ -6,7 +6,6 @@ package org.jetbrains.kotlin.gradle import org.gradle.api.logging.LogLevel -import org.gradle.api.logging.configuration.WarningMode import org.gradle.testkit.runner.BuildResult import org.gradle.util.GradleVersion import org.jetbrains.kotlin.gradle.internals.MULTIPLATFORM_PROJECT_METADATA_JSON_FILE_NAME @@ -328,8 +327,12 @@ class HierarchicalMppIT : KGPBaseTest() { @DisplayName("KT-48370: Multiplatform Gradle build fails for Native targets with \"we cannot choose between the following variants of project\"") fun testMultiModulesHmppKt48370(gradleVersion: GradleVersion) { project( - "hierarchical-mpp-multi-modules", gradleVersion, buildOptions = defaultBuildOptions.copy( - warningMode = WarningMode.All // Workaround for KT-55751 + "hierarchical-mpp-multi-modules", + gradleVersion, + buildOptions = defaultBuildOptions.suppressDeprecationWarningsSinceGradleVersion( + TestVersions.Gradle.G_7_4, + gradleVersion, + "Workaround for KT-55751" ) ) { build("assemble") diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/Kotlin2JsGradlePluginIT.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/Kotlin2JsGradlePluginIT.kt index d1d3127ba49..474a2b1af1a 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/Kotlin2JsGradlePluginIT.kt +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/Kotlin2JsGradlePluginIT.kt @@ -1604,9 +1604,10 @@ class GeneralKotlin2JsGradlePluginIT : KGPBaseTest() { project( "cleanTask", gradleVersion, - buildOptions = defaultBuildOptions.copy( - // bug in Gradle: https://github.com/gradle/gradle/issues/15796 - warningMode = if (gradleVersion < GradleVersion.version("7.0")) WarningMode.None else defaultBuildOptions.warningMode + buildOptions = defaultBuildOptions.suppressDeprecationWarningsUntilGradleVersion( + TestVersions.Gradle.G_7_0, + gradleVersion, + "bug in Gradle: https://github.com/gradle/gradle/issues/15796" ) ) { build("checkDownloadedFolder") diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/KpmCompilerPluginMppIT.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/KpmCompilerPluginMppIT.kt index 49db3f89eba..fdaf81b2cdb 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/KpmCompilerPluginMppIT.kt +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/KpmCompilerPluginMppIT.kt @@ -5,23 +5,24 @@ package org.jetbrains.kotlin.gradle -import org.gradle.api.logging.configuration.WarningMode +import org.jetbrains.kotlin.gradle.testbase.TestVersions import org.junit.Test import kotlin.test.Ignore import kotlin.test.assertTrue class KpmCompilerPluginMppIT : BaseGradleIT() { - override fun defaultBuildOptions() = super.defaultBuildOptions().copy( - // Workaround for KT-55751 - warningMode = WarningMode.None, - ) - @Test @Ignore - fun testTransientPluginOptions() { - val project = transformProjectWithPluginsDsl("kpmTransientPluginOptions") + fun testTransientPluginOptions() = with(transformProjectWithPluginsDsl("kpmTransientPluginOptions")) { + val currentGradleVersion = chooseWrapperVersionOrFinishTest() + val options = defaultBuildOptions().suppressDeprecationWarningsSinceGradleVersion( + TestVersions.Gradle.G_7_4, + currentGradleVersion, + "Workaround for KT-55751" + ) + fun updatePluginOptions(regularOptionValue: String, transientOptionValue: String) { - project.gradleProperties().writeText( + gradleProperties().writeText( """ test-plugin.regular=$regularOptionValue test-plugin.transient=$transientOptionValue @@ -30,7 +31,7 @@ class KpmCompilerPluginMppIT : BaseGradleIT() { } updatePluginOptions("XXX", "YYY") - project.build("compileKotlin") { + build("compileKotlin", options = options) { assertSuccessful() assertTasksExecuted(":compileKotlinJvm") compilerArgs(":compileKotlinJvm").also { args -> @@ -47,14 +48,14 @@ class KpmCompilerPluginMppIT : BaseGradleIT() { // When transient plugin option change updatePluginOptions("XXX", "ZZZ") - project.build("compileKotlin") { + build("compileKotlin", options = options) { assertSuccessful() assertTasksUpToDate(":compileKotlinJvm") } // When regular plugin option change updatePluginOptions("ZZZ", "ZZZ") - project.build("compileKotlin") { + build("compileKotlin", options = options) { assertSuccessful() assertTasksExecuted(":compileKotlinJvm") compilerArgs(":compileKotlinJvm").also { args -> diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/MultiplatformGradleIT.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/MultiplatformGradleIT.kt index 8b11ce5b0ff..3cb65a7c771 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/MultiplatformGradleIT.kt +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/MultiplatformGradleIT.kt @@ -18,6 +18,7 @@ package org.jetbrains.kotlin.gradle import com.intellij.testFramework.TestDataPath import org.gradle.api.logging.LogLevel +import org.gradle.util.GradleVersion import org.jetbrains.kotlin.gradle.internals.KOTLIN_12X_MPP_DEPRECATION_WARNING import org.jetbrains.kotlin.gradle.plugin.EXPECTED_BY_CONFIG_NAME import org.jetbrains.kotlin.gradle.plugin.IMPLEMENT_CONFIG_NAME @@ -350,15 +351,17 @@ class MultiplatformGradleIT : BaseGradleIT() { projectName = "kt-35942-android" ) ) { + val currentGradleVersion = chooseWrapperVersionOrFinishTest() build( ":lib1:compileDebugUnitTestKotlin", options = defaultBuildOptions().copy( androidGradlePluginVersion = AGPVersion.v4_2_0, androidHome = KtTestUtil.findAndroidSdk().also { acceptAndroidSdkLicenses(it) }, - ).suppressDeprecationWarningsOnAgpLessThan( - AGPVersion.v7_3_0, - "uses deprecated IncrementalTaskInputs; relies on FileTrees for ignoring empty directories when using @SkipWhenEmpty" - ) + ).suppressDeprecationWarningsOn( + "AGP uses deprecated IncrementalTaskInputs (Gradle 7.5); relies on FileTrees for ignoring empty directories when using @SkipWhenEmpty (Gradle 7.4)" + ) { options -> + GradleVersion.version(currentGradleVersion) >= GradleVersion.version(TestVersions.Gradle.G_7_5) && options.safeAndroidGradlePluginVersion < AGPVersion.v7_3_0 + } ) { assertSuccessful() assertTasksExecuted(":lib1:compileDebugKotlin") diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/NewMultiplatformIT.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/NewMultiplatformIT.kt index 8ae302b938e..ae72c90db45 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/NewMultiplatformIT.kt +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/NewMultiplatformIT.kt @@ -7,7 +7,6 @@ package org.jetbrains.kotlin.gradle import org.gradle.api.logging.LogLevel import org.jetbrains.kotlin.gradle.native.GeneralNativeIT.Companion.withNativeCommandLineArguments import org.jetbrains.kotlin.gradle.native.GeneralNativeIT.Companion.containsSequentially -import org.gradle.api.logging.configuration.WarningMode import org.gradle.util.GradleVersion import org.jetbrains.kotlin.gradle.native.* import org.jetbrains.kotlin.gradle.native.MPPNativeTargets @@ -28,7 +27,6 @@ import org.jetbrains.kotlin.konan.target.HostManager import org.jetbrains.kotlin.library.KLIB_PROPERTY_SHORT_NAME import org.jetbrains.kotlin.library.KLIB_PROPERTY_UNIQUE_NAME import org.junit.Assert -import org.junit.Ignore import org.junit.Test import java.util.* import java.util.jar.JarFile @@ -1572,15 +1570,17 @@ class NewMultiplatformIT : BaseGradleIT() { fun testUnusedSourceSetsReportAndroid() = with(Project("new-mpp-android", gradleVersion)) { setupWorkingDir() + val currentGradleVersion = chooseWrapperVersionOrFinishTest() build( "assembleDebug", // https://issuetracker.google.com/issues/152187160 options = defaultBuildOptions().copy( androidGradlePluginVersion = AGPVersion.v4_2_0, - ).suppressDeprecationWarningsOnAgpLessThan( - AGPVersion.v7_3_0, - "uses deprecated IncrementalTaskInputs; relies on FileTrees for ignoring empty directories when using @SkipWhenEmpty" - ) + ).suppressDeprecationWarningsOn( + "AGP uses deprecated IncrementalTaskInputs (Gradle 7.5); relies on FileTrees for ignoring empty directories when using @SkipWhenEmpty (Gradle 7.4)" + ) { options -> + GradleVersion.version(currentGradleVersion) >= GradleVersion.version(TestVersions.Gradle.G_7_5) && options.safeAndroidGradlePluginVersion < AGPVersion.v7_3_0 + } ) { assertSuccessful() assertNotContains( diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/VariantAwareDependenciesMppIT.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/VariantAwareDependenciesMppIT.kt index 30cb98907af..04661e0161f 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/VariantAwareDependenciesMppIT.kt +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/VariantAwareDependenciesMppIT.kt @@ -5,9 +5,9 @@ package org.jetbrains.kotlin.gradle -import org.gradle.api.logging.configuration.WarningMode import org.gradle.util.GradleVersion import org.jetbrains.kotlin.gradle.plugin.KotlinJsCompilerType +import org.jetbrains.kotlin.gradle.testbase.TestVersions import org.jetbrains.kotlin.gradle.util.* import org.junit.Test import kotlin.test.assertTrue @@ -358,11 +358,13 @@ class VariantAwareDependenciesMppIT : BaseGradleIT() { """ ) + val currentGradleVersion = chooseWrapperVersionOrFinishTest() build( resolveConfigurationTaskName, - options = defaultBuildOptions().copy( - // Workaround for KT-55751 - warningMode = WarningMode.None, + options = defaultBuildOptions().suppressDeprecationWarningsSinceGradleVersion( + TestVersions.Gradle.G_7_4, + currentGradleVersion, + "Workaround for KT-55751" ) ) { assertSuccessful() diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/android/KotlinAndroidMppIT.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/android/KotlinAndroidMppIT.kt index 0e3a6a0c965..e13b40866cb 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/android/KotlinAndroidMppIT.kt +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/android/KotlinAndroidMppIT.kt @@ -854,12 +854,12 @@ class KotlinAndroidMppIT : KGPBaseTest() { project( "new-mpp-android-agp-compatibility", consumerGradleVersion, - buildOptions = defaultBuildOptions.copy( - androidVersion = consumerAgpVersion, - // Workaround for a deprecation warning from AGP - // Relying on FileTrees for ignoring empty directories when using @SkipWhenEmpty has been deprecated. - warningMode = if (AGPVersion.fromString(consumerAgpVersion) <= AGPVersion.v7_1_0) WarningMode.None else WarningMode.Fail, - ), + buildOptions = defaultBuildOptions.copy(androidVersion = consumerAgpVersion) + .suppressDeprecationWarningsOn( + "AGP relies on FileTrees for ignoring empty directories when using @SkipWhenEmpty which has been deprecated." + ) { options -> + consumerGradleVersion >= GradleVersion.version(TestVersions.Gradle.G_7_4) && AGPVersion.fromString(options.safeAndroidVersion) < AGPVersion.v7_1_0 + }, buildJdk = jdkVersion.location, localRepoDir = tempDir ) { diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/android/MultiplatformAndroidSourceSetLayoutV2IT.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/android/MultiplatformAndroidSourceSetLayoutV2IT.kt index f401e874b4c..b67882730ac 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/android/MultiplatformAndroidSourceSetLayoutV2IT.kt +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/android/MultiplatformAndroidSourceSetLayoutV2IT.kt @@ -5,7 +5,6 @@ package org.jetbrains.kotlin.gradle.android -import org.gradle.api.logging.configuration.WarningMode import org.gradle.util.GradleVersion import org.jetbrains.kotlin.gradle.testbase.* import org.jetbrains.kotlin.gradle.util.AGPVersion @@ -24,12 +23,12 @@ class MultiplatformAndroidSourceSetLayoutV2IT : KGPBaseTest() { project( "multiplatformAndroidSourceSetLayout2", gradleVersion, - defaultBuildOptions.copy( - androidVersion = agpVersion, - // Workaround for a deprecation warning from AGP - // Relying on FileTrees for ignoring empty directories when using @SkipWhenEmpty has been deprecated. - warningMode = if (AGPVersion.fromString(agpVersion) <= AGPVersion.v7_1_0) WarningMode.None else WarningMode.Fail, - ), + defaultBuildOptions.copy(androidVersion = agpVersion) + .suppressDeprecationWarningsOn( + "AGP relies on FileTrees for ignoring empty directories when using @SkipWhenEmpty which has been deprecated." + ) { options -> + gradleVersion >= GradleVersion.version(TestVersions.Gradle.G_7_4) && AGPVersion.fromString(options.safeAndroidVersion) < AGPVersion.v7_1_0 + }, buildJdk = jdkVersion.location ) { build("test") { diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/mpp/AndroidAndJavaConsumeMppLibIT.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/mpp/AndroidAndJavaConsumeMppLibIT.kt index db67c7cd93b..d379137fdf7 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/mpp/AndroidAndJavaConsumeMppLibIT.kt +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/mpp/AndroidAndJavaConsumeMppLibIT.kt @@ -8,9 +8,7 @@ package org.jetbrains.kotlin.gradle.mpp import org.gradle.api.logging.configuration.WarningMode import org.gradle.util.GradleVersion -import org.jetbrains.kotlin.gradle.BaseGradleIT -import org.jetbrains.kotlin.gradle.GradleVersionRequired -import org.jetbrains.kotlin.gradle.chooseWrapperVersionOrFinishTest +import org.jetbrains.kotlin.gradle.* import org.jetbrains.kotlin.gradle.embedProject import org.jetbrains.kotlin.gradle.mpp.ResolvedVariantChecker.ResolvedVariantRequest import org.jetbrains.kotlin.gradle.testbase.TestVersions @@ -122,17 +120,20 @@ abstract class AndroidAndJavaConsumeMppLibIT : BaseGradleIT() { val jdk11Home = File(System.getProperty("jdk11Home")) Assume.assumeTrue("This test requires JDK11 for AGP7", jdk11Home.isDirectory) - val producerBuildOptions = defaultBuildOptions().copy( - javaHome = jdk11Home, - androidHome = KtTestUtil.findAndroidSdk(), - androidGradlePluginVersion = producerAgpVersion, - // Workaround for a deprecation warning from AGP - // Relying on FileTrees for ignoring empty directories when using @SkipWhenEmpty has been deprecated. - warningMode = if (producerAgpVersion <= AGPVersion.v7_1_0) WarningMode.None else WarningMode.Fail, - ) - producerBuildOptions.androidHome?.let { acceptAndroidSdkLicenses(it) } + val producerBuildOptions: BuildOptions dependencyProject = Project("new-mpp-android", producerGradleVersion).apply { + val usedProducerGradleVersion = chooseWrapperVersionOrFinishTest() + producerBuildOptions = defaultBuildOptions().copy( + javaHome = jdk11Home, + androidHome = KtTestUtil.findAndroidSdk(), + androidGradlePluginVersion = producerAgpVersion, + ).suppressDeprecationWarningsOn( + "AGP relies on FileTrees for ignoring empty directories when using @SkipWhenEmpty which has been deprecated (Gradle 7.4)" + ) { + GradleVersion.version(usedProducerGradleVersion) >= GradleVersion.version(TestVersions.Gradle.G_7_4) && producerAgpVersion < AGPVersion.v7_1_0 + } + producerBuildOptions.androidHome?.let { acceptAndroidSdkLicenses(it) } projectDir.deleteRecursively() setupWorkingDir() // Don't need custom attributes here @@ -288,15 +289,16 @@ abstract class AndroidAndJavaConsumeMppLibIT : BaseGradleIT() { "com.example:lib:1.0" else ":${dependencyProject.projectName}:lib" - val consumerWarningMode = - if (consumerAgpVersion >= AGPVersion.v7_3_0 || GradleVersion.version(usedConsumerGradleVersion) < GradleVersion.version("7.5")) WarningMode.Fail else WarningMode.None val consumerBuildOptions = defaultBuildOptions().copy( javaHome = File(System.getProperty("jdk11Home")), androidHome = KtTestUtil.findAndroidSdk(), androidGradlePluginVersion = consumerAgpVersion, - kotlinVersion = withKotlinVersion ?: defaultBuildOptions().kotlinVersion, - warningMode = consumerWarningMode - ) + kotlinVersion = withKotlinVersion ?: defaultBuildOptions().kotlinVersion + ).suppressDeprecationWarningsOn( + "AGP uses deprecated IncrementalTaskInputs (Gradle 7.5)" + ) { + GradleVersion.version(usedConsumerGradleVersion) >= GradleVersion.version(TestVersions.Gradle.G_7_5) && consumerAgpVersion < AGPVersion.v7_3_0 + } val variantCheckRequests = mutableMapOf() 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 feb562f59bf..f64fe2f2dc2 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 @@ -5,10 +5,9 @@ package org.jetbrains.kotlin.gradle.native -import org.gradle.api.logging.configuration.WarningMode -import org.jetbrains.kotlin.gradle.BaseGradleIT -import org.jetbrains.kotlin.gradle.GradleVersionRequired -import org.jetbrains.kotlin.gradle.suppressDeprecationWarningsOnAgpLessThan +import org.gradle.util.GradleVersion +import org.jetbrains.kotlin.gradle.* +import org.jetbrains.kotlin.gradle.testbase.TestVersions import org.jetbrains.kotlin.gradle.util.AGPVersion import org.jetbrains.kotlin.gradle.util.modify import org.jetbrains.kotlin.konan.target.HostManager @@ -35,6 +34,7 @@ class AppleFrameworkIT : BaseGradleIT() { @Test fun `assemble AppleFrameworkForXcode tasks for IosArm64`() { with(Project("sharedAppleFramework")) { + val currentGradleVersion = chooseWrapperVersionOrFinishTest() val options: BuildOptions = defaultBuildOptions().copy( customEnvironmentVariables = mapOf( "CONFIGURATION" to "debug", @@ -43,8 +43,10 @@ class AppleFrameworkIT : BaseGradleIT() { "TARGET_BUILD_DIR" to "no use", "FRAMEWORKS_FOLDER_PATH" to "no use" ), - // Workaround for KT-55751 - warningMode = WarningMode.None, + ).suppressDeprecationWarningsSinceGradleVersion( + TestVersions.Gradle.G_7_4, + currentGradleVersion, + "Workaround for KT-55751" ) build("assembleDebugAppleFrameworkForXcodeIosArm64", options = options) { assertSuccessful() @@ -65,6 +67,7 @@ class AppleFrameworkIT : BaseGradleIT() { @Test fun `assemble fat AppleFrameworkForXcode tasks for Arm64 and X64 simulators`() { with(Project("sharedAppleFramework")) { + val currentGradleVersion = chooseWrapperVersionOrFinishTest() val options: BuildOptions = defaultBuildOptions().copy( customEnvironmentVariables = mapOf( "CONFIGURATION" to "Release", @@ -73,8 +76,10 @@ class AppleFrameworkIT : BaseGradleIT() { "TARGET_BUILD_DIR" to "no use", "FRAMEWORKS_FOLDER_PATH" to "no use" ), - // Workaround for KT-55751 - warningMode = WarningMode.None, + ).suppressDeprecationWarningsSinceGradleVersion( + TestVersions.Gradle.G_7_4, + currentGradleVersion, + "Workaround for KT-55751" ) build("assembleReleaseAppleFrameworkForXcode", options = options) { assertSuccessful() @@ -90,6 +95,7 @@ class AppleFrameworkIT : BaseGradleIT() { @Test fun `check that macOS framework has symlinks`() { with(Project("sharedAppleFramework")) { + val currentGradleVersion = chooseWrapperVersionOrFinishTest() val options: BuildOptions = defaultBuildOptions().copy( customEnvironmentVariables = mapOf( "CONFIGURATION" to "debug", @@ -98,9 +104,11 @@ class AppleFrameworkIT : BaseGradleIT() { "EXPANDED_CODE_SIGN_IDENTITY" to "-", "TARGET_BUILD_DIR" to workingDir.absolutePath, "FRAMEWORKS_FOLDER_PATH" to "${projectName}/build/xcode-derived" - ), - // Workaround for KT-55751 - warningMode = WarningMode.None, + ) + ).suppressDeprecationWarningsSinceGradleVersion( + TestVersions.Gradle.G_7_4, + currentGradleVersion, + "Workaround for KT-55751" ) build(":shared:embedAndSignAppleFrameworkForXcode", options = options) { assertSuccessful() @@ -128,6 +136,7 @@ class AppleFrameworkIT : BaseGradleIT() { @Test fun `check all registered tasks with Xcode environment for Debug IosArm64 configuration`() { with(Project("sharedAppleFramework")) { + val currentGradleVersion = chooseWrapperVersionOrFinishTest() val options: BuildOptions = defaultBuildOptions().copy( customEnvironmentVariables = mapOf( "CONFIGURATION" to "Debug", @@ -137,10 +146,11 @@ class AppleFrameworkIT : BaseGradleIT() { "TARGET_BUILD_DIR" to "testBuildDir", "FRAMEWORKS_FOLDER_PATH" to "testFrameworksDir" ) - ).suppressDeprecationWarningsOnAgpLessThan( - AGPVersion.v7_3_0, - "uses deprecated IncrementalTaskInputs" - ) + ).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 + } build("tasks", options = options) { assertSuccessful() assertTasksRegistered( @@ -162,16 +172,18 @@ class AppleFrameworkIT : BaseGradleIT() { @Test fun `check embedAndSignAppleFrameworkForXcode was registered without required Xcode environments`() { with(Project("sharedAppleFramework")) { + val currentGradleVersion = chooseWrapperVersionOrFinishTest() val options: BuildOptions = defaultBuildOptions().copy( customEnvironmentVariables = mapOf( "CONFIGURATION" to "Debug", "SDK_NAME" to "iphoneos", "ARCHS" to "arm64" ) - ).suppressDeprecationWarningsOnAgpLessThan( - AGPVersion.v7_3_0, - "uses deprecated IncrementalTaskInputs" - ) + ).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 + } build("tasks", options = options) { assertSuccessful() assertTasksRegistered( @@ -199,6 +211,7 @@ class AppleFrameworkIT : BaseGradleIT() { @Test fun `check that static framework for Arm64 is built but is not embedded`() { with(Project("sharedAppleFramework")) { + val currentGradleVersion = chooseWrapperVersionOrFinishTest() val options: BuildOptions = defaultBuildOptions().copy( customEnvironmentVariables = mapOf( "CONFIGURATION" to "debug", @@ -207,8 +220,10 @@ class AppleFrameworkIT : BaseGradleIT() { "TARGET_BUILD_DIR" to "no use", "FRAMEWORKS_FOLDER_PATH" to "no use" ), - // Workaround for KT-55751 - warningMode = WarningMode.None, + ).suppressDeprecationWarningsSinceGradleVersion( + TestVersions.Gradle.G_7_4, + currentGradleVersion, + "Workaround for KT-55751" ) setupWorkingDir() projectDir.resolve("shared/build.gradle.kts").modify { 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 ed72e271b9c..37a8754dfe8 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 @@ -5,9 +5,7 @@ package org.jetbrains.kotlin.gradle.native -import org.gradle.api.logging.configuration.WarningMode -import org.jetbrains.kotlin.gradle.BaseGradleIT -import org.jetbrains.kotlin.gradle.GradleVersionRequired +import org.jetbrains.kotlin.gradle.* import org.jetbrains.kotlin.gradle.plugin.cocoapods.KotlinCocoapodsPlugin.Companion.DUMMY_FRAMEWORK_TASK_NAME import org.jetbrains.kotlin.gradle.plugin.cocoapods.KotlinCocoapodsPlugin.Companion.POD_BUILD_TASK_NAME import org.jetbrains.kotlin.gradle.plugin.cocoapods.KotlinCocoapodsPlugin.Companion.POD_GEN_TASK_NAME @@ -1249,11 +1247,15 @@ class CocoaPodsIT : BaseGradleIT() { taskName: String, vararg args: String ) { + val currentGradleVersion = chooseWrapperVersionOrFinishTest() // check that test executable - build(taskName, *args, options = defaultBuildOptions().copy( - // Workaround for KT-55751 - warningMode = WarningMode.None, - )) { + build( + taskName, *args, options = defaultBuildOptions().suppressDeprecationWarningsSinceGradleVersion( + TestVersions.Gradle.G_7_4, + currentGradleVersion, + "Workaround for KT-55751" + ) + ) { //base checks assertSuccessful() hooks.trigger(this) diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/native/GeneralNativeIT.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/native/GeneralNativeIT.kt index a639435330a..0900910f020 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/native/GeneralNativeIT.kt +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/native/GeneralNativeIT.kt @@ -6,7 +6,6 @@ package org.jetbrains.kotlin.gradle.native import com.intellij.testFramework.TestDataFile -import org.gradle.api.logging.configuration.WarningMode import org.gradle.util.GradleVersion import org.jdom.input.SAXBuilder import org.jetbrains.kotlin.gradle.* @@ -15,6 +14,7 @@ import org.jetbrains.kotlin.gradle.internals.DISABLED_NATIVE_TARGETS_REPORTER_WA import org.jetbrains.kotlin.gradle.internals.NO_NATIVE_STDLIB_PROPERTY_WARNING import org.jetbrains.kotlin.gradle.internals.NO_NATIVE_STDLIB_WARNING import org.jetbrains.kotlin.gradle.plugin.mpp.NativeOutputKind +import org.jetbrains.kotlin.gradle.testbase.TestVersions import org.jetbrains.kotlin.gradle.transformProjectWithPluginsDsl import org.jetbrains.kotlin.gradle.util.modify import org.jetbrains.kotlin.gradle.util.runProcess @@ -312,12 +312,15 @@ class GeneralNativeIT : BaseGradleIT() { transformNativeTestProjectWithPluginDsl("frameworks", directoryPrefix = "native-binaries") ) { fun assemble(check: CompiledProject.() -> Unit) { + val currentGradleVersion = chooseWrapperVersionOrFinishTest() build( "assemble", - options = defaultBuildOptions().copy( - // Workaround for KT-55751 - warningMode = WarningMode.None, - ), + options = defaultBuildOptions() + .suppressDeprecationWarningsSinceGradleVersion( + TestVersions.Gradle.G_7_4, + currentGradleVersion, + "Workaround for KT-55751" + ), check = check ) } diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/native/XCFrameworkIT.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/native/XCFrameworkIT.kt index 68fc07679b2..3b9507f43bf 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/native/XCFrameworkIT.kt +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/native/XCFrameworkIT.kt @@ -5,9 +5,9 @@ package org.jetbrains.kotlin.gradle.native -import org.jetbrains.kotlin.gradle.BaseGradleIT -import org.jetbrains.kotlin.gradle.GradleVersionRequired -import org.jetbrains.kotlin.gradle.suppressDeprecationWarningsOnAgpLessThan +import org.gradle.util.GradleVersion +import org.jetbrains.kotlin.gradle.* +import org.jetbrains.kotlin.gradle.testbase.TestVersions import org.jetbrains.kotlin.gradle.transformProjectWithPluginsDsl import org.jetbrains.kotlin.gradle.util.AGPVersion import org.jetbrains.kotlin.konan.target.HostManager @@ -94,10 +94,12 @@ class XCFrameworkIT : BaseGradleIT() { @Test fun `check there aren't XCFramework tasks without declaration in build script`() { with(Project("sharedAppleFramework")) { - val options = defaultBuildOptions().suppressDeprecationWarningsOnAgpLessThan( - AGPVersion.v7_3_0, - "uses deprecated IncrementalTaskInputs" - ) + val currentGradleVersion = chooseWrapperVersionOrFinishTest() + val options = defaultBuildOptions().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 + } build("tasks", options = options) { assertSuccessful() assertTasksNotRegistered( diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/tasks/CleanDataTaskIT.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/tasks/CleanDataTaskIT.kt index 7228549d209..f88042241cd 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/tasks/CleanDataTaskIT.kt +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/tasks/CleanDataTaskIT.kt @@ -20,9 +20,10 @@ class CleanDataTaskIT : KGPBaseTest() { project( "cleanTask", gradleVersion, - buildOptions = defaultBuildOptions.copy( - // bug in Gradle: https://github.com/gradle/gradle/issues/15796 - warningMode = if (gradleVersion < GradleVersion.version("7.0")) WarningMode.Summary else defaultBuildOptions.warningMode + buildOptions = defaultBuildOptions.suppressDeprecationWarningsUntilGradleVersion( + TestVersions.Gradle.G_7_0, + gradleVersion, + "bug in Gradle: https://github.com/gradle/gradle/issues/15796" ) ) { build("testCleanTask") diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/testbase/BuildOptions.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/testbase/BuildOptions.kt index 3c422faa174..cb00d0ada7f 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/testbase/BuildOptions.kt +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/testbase/BuildOptions.kt @@ -12,6 +12,8 @@ import org.jetbrains.kotlin.cli.common.CompilerSystemProperties.COMPILE_INCREMEN import org.jetbrains.kotlin.gradle.BaseGradleIT import org.jetbrains.kotlin.gradle.plugin.KotlinJsCompilerType import org.jetbrains.kotlin.gradle.report.BuildReportType +import org.jetbrains.kotlin.gradle.suppressDeprecationWarningsOn +import org.jetbrains.kotlin.gradle.util.AGPVersion import org.junit.jupiter.api.condition.OS import java.util.* @@ -40,6 +42,9 @@ data class BuildOptions( val statisticsForceValidation: Boolean = true, val usePreciseOutputsBackup: Boolean? = null, ) { + val safeAndroidVersion: String + get() = androidVersion ?: error("AGP version is expected to be set") + data class KaptOptions( val verbose: Boolean = false, val incrementalKapt: Boolean = false, @@ -153,4 +158,22 @@ data class BuildOptions( return arguments.toList() } -} \ No newline at end of file +} + +fun BuildOptions.suppressDeprecationWarningsOn( + @Suppress("UNUSED_PARAMETER") reason: String, // just to require specifying a reason for suppressing + predicate: (BuildOptions) -> Boolean +) = if (predicate(this)) { + copy(warningMode = WarningMode.Summary) +} else { + this +} + +fun BuildOptions.suppressDeprecationWarningsSinceGradleVersion( + gradleVersion: String, + currentGradleVersion: GradleVersion, + reason: String +) = suppressDeprecationWarningsOn(reason) { + currentGradleVersion >= GradleVersion.version(gradleVersion) +} +