From cb64234192a0be02b6c9cd09b1c44be7fc1644da Mon Sep 17 00:00:00 2001 From: Yahor Berdnikau Date: Tue, 28 Nov 2023 09:37:19 +0100 Subject: [PATCH] [Gradle] Fix test data using deprecated conventions ^KT-63369 Fixed --- .../org/jetbrains/kotlin/gradle/Kapt3IT.kt | 2 +- .../kotlin/gradle/KotlinGradlePluginIT.kt | 16 +++++------ .../kotlin/gradle/NewMultiplatformIT.kt | 4 ++- .../org/jetbrains/kotlin/gradle/UpToDateIT.kt | 23 +++++++++++++++- .../kotlin/gradle/testbase/testHelpers.kt | 27 +++++++++++++++++++ .../incrementalChangeInPlugin/build.gradle | 2 -- .../testProject/kt-29971/mpp-lib/build.gradle | 5 +++- .../sample-app-without-kotlin/build.gradle | 4 ++- .../sample-old-style-app/app-jvm/build.gradle | 4 ++- 9 files changed, 71 insertions(+), 16 deletions(-) diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/Kapt3IT.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/Kapt3IT.kt index 957201fa973..e845fc9425b 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/Kapt3IT.kt +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/Kapt3IT.kt @@ -1067,7 +1067,7 @@ open class Kapt3IT : Kapt3BaseIT() { buildJdk = jdk.location ) { buildGradle.append( - "\nsourceCompatibility = '8'" + "\njava.sourceCompatibility = JavaVersion.VERSION_1_8" ) // because Java sourceCompatibility is fixed JVM target will different with JDK 11 on Gradle 8 diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/KotlinGradlePluginIT.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/KotlinGradlePluginIT.kt index 17a834fadfe..ef50d23ffd0 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/KotlinGradlePluginIT.kt +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/KotlinGradlePluginIT.kt @@ -336,7 +336,7 @@ class KotlinGradleIT : KGPBaseTest() { fun testArchiveBaseNameForModuleName(gradleVersion: GradleVersion) { project("simpleProject", gradleVersion) { val archivesBaseName = "myArchivesBaseName" - buildGradle.appendText("\narchivesBaseName = '$archivesBaseName'") + addArchivesBaseNameCompat(archivesBaseName) // Add top-level members to force generation of the *.kotlin_module files for the two source sets val mainHelloWorldKt = kotlinSourcesDir().resolve("helloWorld.kt") @@ -439,15 +439,15 @@ class KotlinGradleIT : KGPBaseTest() { @GradleTest fun testModuleNameFiltering(gradleVersion: GradleVersion) { project("typeAlias", gradleVersion) { // Use a Project with a top-level typealias + addArchivesBaseNameCompat("""a/really\\trick\n\rmodule\tname""") + buildGradle.appendText( """ - - archivesBaseName = 'a/really\\trick\n\rmodule\tname' - - tasks.withType(Jar.class).configureEach { - archiveBaseName.set('typeAlias') - } - """.trimIndent() + | + |tasks.withType(Jar.class).configureEach { + | archiveBaseName.set('typeAlias') + |} + """.trimMargin() ) build("classes") { 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 8fa6b8ea049..ac1f960bcf8 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 @@ -421,7 +421,9 @@ open class NewMultiplatformIT : BaseGradleIT() { } } - mainClassName = 'com.example.lib.CommonKt' + application { + mainClass = 'com.example.lib.CommonKt' + } dependencies { jvm6MainImplementation("com.google.dagger:dagger:2.24") diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/UpToDateIT.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/UpToDateIT.kt index 0469b059035..de2026c22f9 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/UpToDateIT.kt +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/UpToDateIT.kt @@ -51,7 +51,7 @@ class UpToDateIT : KGPBaseTest() { emptyMutation, OptionMutation("compileKotlin.kotlinOptions.jvmTarget", "'1.8'", "'11'"), OptionMutation("compileKotlin.kotlinOptions.freeCompilerArgs", "[]", "['-Xallow-kotlin-package']"), - OptionMutation("archivesBaseName", "'someName'", "'otherName'"), + archivesBaseNameOutputMutation("someName", "otherName"), subpluginOptionMutation, subpluginOptionMutationWithKapt, externalOutputMutation, @@ -223,6 +223,27 @@ class UpToDateIT : KGPBaseTest() { } } + private fun archivesBaseNameOutputMutation( + oldName: String, + newName: String, + ) = object : ProjectMutation { + override fun initProject(project: TestProject) { + project.addArchivesBaseNameCompat(oldName) + } + + override fun mutateProject(project: TestProject) { + project.buildGradle.modify { + it.replace("archivesBaseName = '$oldName'", "archivesBaseName = '$newName'") + } + } + + override fun checkAfterRebuild(buildResult: BuildResult) { + buildResult.assertTasksExecuted(":compileKotlin") + } + + override val name: String = "archiveBaseNameOutputMutation" + } + private interface ProjectMutation { fun initProject(project: TestProject) fun mutateProject(project: TestProject) diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/testbase/testHelpers.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/testbase/testHelpers.kt index 6fa211b1d8f..a1428021b20 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/testbase/testHelpers.kt +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/testbase/testHelpers.kt @@ -5,6 +5,7 @@ package org.jetbrains.kotlin.gradle.testbase +import org.gradle.util.GradleVersion import java.nio.file.Paths import java.nio.file.attribute.PosixFilePermission import kotlin.io.path.* @@ -164,4 +165,30 @@ fun GradleProject.addPropertyToGradleProperties( ) } +} + +/** + * Configures 'archivesBaseName' in Gradle older and newer versions compatible way avoiding + * deprecation warnings. + */ +internal fun TestProject.addArchivesBaseNameCompat( + archivesBaseName: String +) { + if (gradleVersion < GradleVersion.version(TestVersions.Gradle.G_7_1)) { + buildGradle.appendText( + """ + | + |archivesBaseName = '$archivesBaseName' + """.trimMargin() + ) + } else { + buildGradle.appendText( + """ + | + |base { + | archivesBaseName = '$archivesBaseName' + |} + """.trimMargin() + ) + } } \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/compilerPlugins/incrementalChangeInPlugin/build.gradle b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/compilerPlugins/incrementalChangeInPlugin/build.gradle index 62254c6f99f..2bdfa0dbf45 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/compilerPlugins/incrementalChangeInPlugin/build.gradle +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/compilerPlugins/incrementalChangeInPlugin/build.gradle @@ -3,8 +3,6 @@ plugins { id 'org.jetbrains.kotlin.jvm' } -sourceCompatibility = 1.8 - allprojects { repositories { mavenLocal() diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kt-29971/mpp-lib/build.gradle b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kt-29971/mpp-lib/build.gradle index b5b3c4bf85f..ffd1a21e86a 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kt-29971/mpp-lib/build.gradle +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kt-29971/mpp-lib/build.gradle @@ -21,4 +21,7 @@ kotlin { // While this plugin seems not to do anything in this setup, IT IS needed to reproduce KT-29971 plugins.apply("application") -mainClassName = "foo" \ No newline at end of file + +application { + mainClass = "foo" +} \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/new-mpp-lib-and-app/sample-app-without-kotlin/build.gradle b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/new-mpp-lib-and-app/sample-app-without-kotlin/build.gradle index ed2753d5d41..43d647e439f 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/new-mpp-lib-and-app/sample-app-without-kotlin/build.gradle +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/new-mpp-lib-and-app/sample-app-without-kotlin/build.gradle @@ -12,4 +12,6 @@ dependencies { implementation 'com.example:sample-lib:1.0' } -mainClassName = 'A' \ No newline at end of file +application { + mainClass = 'A' +} \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/new-mpp-lib-and-app/sample-old-style-app/app-jvm/build.gradle b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/new-mpp-lib-and-app/sample-old-style-app/app-jvm/build.gradle index 04ee34aa550..82b23da4c1b 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/new-mpp-lib-and-app/sample-old-style-app/app-jvm/build.gradle +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/new-mpp-lib-and-app/sample-old-style-app/app-jvm/build.gradle @@ -5,4 +5,6 @@ dependencies { implementation 'com.example:sample-lib:1.0' } -mainClassName = 'com.example.app.JvmAppKt' \ No newline at end of file +application { + mainClass = 'com.example.app.JvmAppKt' +} \ No newline at end of file