From 82d947d3a42f4d84ca07aa4cf9a651443ef775e8 Mon Sep 17 00:00:00 2001 From: Yahor Berdnikau Date: Wed, 6 Oct 2021 16:57:33 +0200 Subject: [PATCH] Migrate ConfigurationAvoidanceIT tests into new DSL. ^KT-45745 In Progress --- .../kotlin/gradle/ConfigurationAvoidanceIT.kt | 128 ++++++++++-------- .../PureAndroidAndJavaConsumeMppLibIT.kt | 2 +- .../AndroidProject/Android/build.gradle | 6 +- .../AndroidProject/Lib/build.gradle | 6 +- .../AndroidProject/Test/build.gradle | 6 +- .../testProject/AndroidProject/build.gradle | 16 +-- .../AndroidProject/settings.gradle | 26 ++++ 7 files changed, 114 insertions(+), 76 deletions(-) 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 e13494d9112..fbfb81cfca1 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 @@ -5,70 +5,90 @@ package org.jetbrains.kotlin.gradle -import org.jetbrains.kotlin.gradle.util.AGPVersion -import org.junit.Test +import org.gradle.util.GradleVersion +import org.jetbrains.kotlin.gradle.testbase.* +import org.junit.jupiter.api.DisplayName +import kotlin.io.path.ExperimentalPathApi +import kotlin.io.path.appendText -class ConfigurationAvoidanceIT : BaseGradleIT() { +@DisplayName("Tasks configuration avoidance") +@SimpleGradlePluginTests +@OptIn(ExperimentalPathApi::class) +class ConfigurationAvoidanceIT : KGPBaseTest() { - @Test - fun testUnrelatedTaskNotConfigured() = with(Project("simpleProject")) { - setupWorkingDir() + @DisplayName("Unrelated tasks are not configured") + @GradleTest + fun testUnrelatedTaskNotConfigured(gradleVersion: GradleVersion) { + project("simpleProject", gradleVersion) { - val expensivelyConfiguredTaskName = "expensivelyConfiguredTask" - val triggeredExpensiveConfigurationText = "Triggered expensive configuration!" + val expensivelyConfiguredTaskName = "expensivelyConfiguredTask" - gradleBuildScript().appendText("\n" + """ - tasks.register("$expensivelyConfiguredTaskName") { - println("$triggeredExpensiveConfigurationText") - } - """.trimIndent()) - - build("compileKotlin") { - assertSuccessful() - assertNotContains(triggeredExpensiveConfigurationText) - } - } - - @Test - fun testAndroidUnrelatedTaskNotConfigured() = with( - Project( - "AndroidProject", - gradleVersionRequirement = GradleVersionRequired.AtLeast("6.7.1") - ) - ) { - setupWorkingDir() - - listOf("Android", "Test").forEach { subproject -> - gradleBuildScript(subproject).appendText("\n" + """ - android { - applicationVariants.all { - it.getAidlCompileProvider().configure { - throw new RuntimeException("Task should not be configured.") - } - } + @Suppress("GroovyAssignabilityCheck") + rootBuildGradle.appendText( + //language=Groovy + """ + + tasks.register("$expensivelyConfiguredTaskName") { + throw new GradleException("Should not configure expensive task!") } """.trimIndent() ) + + build("compileKotlin") } + } - gradleBuildScript("Lib").appendText( - "\n" + """ - android { - libraryVariants.all { - it.getAidlCompileProvider().configure { - throw new RuntimeException("Task should not be configured.") - } - } - } - """.trimIndent() - ) - - build( - "help", options = defaultBuildOptions().copy( - androidGradlePluginVersion = AGPVersion.v4_2_0 - ) + @DisplayName("Android tasks are not configured") + @GradleTestVersions(minVersion = "6.7.1") + @GradleTest + fun testAndroidUnrelatedTaskNotConfigured(gradleVersion: GradleVersion) { + project( + "AndroidProject", + gradleVersion ) { - assertSuccessful() + + listOf("Android", "Test").forEach { subproject -> + projectPath + .resolve(subproject) + .resolve("build.gradle") + .appendText( + //language=Groovy + """ + + android { + applicationVariants.all { + it.getAidlCompileProvider().configure { + throw new RuntimeException("Task should not be configured.") + } + } + } + """.trimIndent() + ) + } + + projectPath + .resolve("Lib") + .resolve("build.gradle") + .appendText( + //language=Groovy + """ + + android { + libraryVariants.all { + it.getAidlCompileProvider().configure { + throw new RuntimeException("Task should not be configured.") + } + } + } + """.trimIndent() + ) + + build( + "help", + buildOptions = defaultBuildOptions.copy( + androidVersion = TestVersions.AGP.AGP_42 + ) + ) } } } \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/PureAndroidAndJavaConsumeMppLibIT.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/PureAndroidAndJavaConsumeMppLibIT.kt index b5291454825..0fc1cf7e626 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/PureAndroidAndJavaConsumeMppLibIT.kt +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/PureAndroidAndJavaConsumeMppLibIT.kt @@ -102,7 +102,7 @@ class PureAndroidAndJavaConsumeMppLibIT : BaseGradleIT() { gradleBuildScript("Lib").apply { writeText( // Remove the Kotlin plugin from the consumer project to check how pure-AGP Kotlin-less consumers resolve the dependency - readText().checkedReplace("apply plugin: 'kotlin-android'", "//").let { text -> + readText().checkedReplace("id 'org.jetbrains.kotlin.android'", "//").let { text -> // If the test case doesn't assume flavors, remove the flavor setup lines: if (useFlavors) text else text.lines().filter { !it.trim().startsWith("flavor") }.joinToString("\n") } + "\n" + """ diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/AndroidProject/Android/build.gradle b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/AndroidProject/Android/build.gradle index 28abf49d10b..5180a83d1d4 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/AndroidProject/Android/build.gradle +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/AndroidProject/Android/build.gradle @@ -1,7 +1,9 @@ import org.gradle.util.VersionNumber -apply plugin: 'com.android.application' -apply plugin: 'kotlin-android' +plugins { + id 'com.android.application' + id 'org.jetbrains.kotlin.android' +} android { compileSdkVersion 22 diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/AndroidProject/Lib/build.gradle b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/AndroidProject/Lib/build.gradle index 4f3ddd1150f..b4f1505a074 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/AndroidProject/Lib/build.gradle +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/AndroidProject/Lib/build.gradle @@ -1,5 +1,7 @@ -apply plugin: 'com.android.library' -apply plugin: 'kotlin-android' +plugins { + id 'com.android.library' + id 'org.jetbrains.kotlin.android' +} dependencies { implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version" diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/AndroidProject/Test/build.gradle b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/AndroidProject/Test/build.gradle index 23dda290031..08d17978da4 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/AndroidProject/Test/build.gradle +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/AndroidProject/Test/build.gradle @@ -1,7 +1,9 @@ import org.gradle.util.VersionNumber -apply plugin: 'com.android.test' -apply plugin: 'kotlin-android' +plugins { + id 'com.android.test' + id 'org.jetbrains.kotlin.android' +} dependencies { implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version" diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/AndroidProject/build.gradle b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/AndroidProject/build.gradle index 9413952d5e6..9ba5e7ad32e 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/AndroidProject/build.gradle +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/AndroidProject/build.gradle @@ -1,21 +1,7 @@ -buildscript { - repositories { - mavenLocal() - google() - mavenCentral() - maven { url = uri("https://jcenter.bintray.com/") } - } - dependencies { - classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" - classpath('com.android.tools.build:gradle:' + android_tools_version) - } -} - allprojects { repositories { mavenLocal() google() mavenCentral() - maven { url = uri("https://jcenter.bintray.com/") } } -} \ No newline at end of file +} diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/AndroidProject/settings.gradle b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/AndroidProject/settings.gradle index db94fbc4f4f..457173910a0 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/AndroidProject/settings.gradle +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/AndroidProject/settings.gradle @@ -1 +1,27 @@ +pluginManagement { + repositories { + mavenLocal() + mavenCentral() + google() + gradlePluginPortal() + } + + plugins { + id "org.jetbrains.kotlin.jvm" version "$kotlin_version" + id "org.jetbrains.kotlin.kapt" version "$kotlin_version" + id "org.jetbrains.kotlin.android" version "$kotlin_version" + } + + resolutionStrategy { + eachPlugin { + if (requested.id.id == "com.android.application" || + requested.id.id == "com.android.library" || + requested.id.id == "com.android.feature" || + requested.id.id == "com.android.test") { + useModule("com.android.tools.build:gradle:$android_tools_version") + } + } + } +} + include ':Android', ':Lib', ':Test'