[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 withReports: List<BuildReportType> = 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 = "<mavenLocalUrl>"
internal const val PLUGIN_MARKER_VERSION_PLACEHOLDER = "<pluginMarkerVersion>"
@@ -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") {
@@ -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()
@@ -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"
)
)
}
@@ -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")
@@ -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")
@@ -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 ->
@@ -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")
@@ -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(
@@ -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()
@@ -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
) {
@@ -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") {
@@ -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<ResolvedVariantRequest, String>()
@@ -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 {
@@ -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)
@@ -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
)
}
@@ -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(
@@ -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")
@@ -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()
}
}
}
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)
}