[Gradle] Suppress warnings only for the Gradle versions that produce them

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