From ed144a106dbe8ef3d4eec81d4c64e0156ab9bc33 Mon Sep 17 00:00:00 2001 From: "Nataliya.Valtman" Date: Wed, 13 Dec 2023 17:24:23 +0100 Subject: [PATCH] Add test for case when BuildFusService can't be injected #KT-63990 --- .../kotlin/gradle/ProjectIsolationIT.kt | 16 ++++++++++++++++ .../kotlin/gradle/testbase/BuildOptions.kt | 8 +++++--- .../build.gradle.kts | 2 ++ .../buildSrc/build.gradle.kts | 9 +++++++++ .../src/main/kotlin/my-conventions.gradle.kts | 0 5 files changed, 32 insertions(+), 3 deletions(-) create mode 100644 libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kt-63990-buildSrcWithKotlinJvmPlugin/build.gradle.kts create mode 100644 libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kt-63990-buildSrcWithKotlinJvmPlugin/buildSrc/build.gradle.kts create mode 100644 libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kt-63990-buildSrcWithKotlinJvmPlugin/buildSrc/src/main/kotlin/my-conventions.gradle.kts diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/ProjectIsolationIT.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/ProjectIsolationIT.kt index 8d06fa2bcf1..beedf962907 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/ProjectIsolationIT.kt +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/ProjectIsolationIT.kt @@ -28,4 +28,20 @@ class ProjectIsolationIT : KGPBaseTest() { build(":main-project:compileKotlin") } } + + @DisplayName("project with buildSrc should be compatible with project isolation") + @GradleTestVersions( + minVersion = TestVersions.Gradle.G_7_4 + ) + @JvmGradlePluginTests + @GradleTest + fun testProjectIsolationWithBuildSrc(gradleVersion: GradleVersion) { + project( + projectName = "kt-63990-buildSrcWithKotlinJvmPlugin", + gradleVersion = gradleVersion, + buildOptions = defaultBuildOptions.copy(configurationCache = null) + ) { + build("tasks") + } + } } 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 60ffdc04b50..8770086ebad 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 @@ -24,7 +24,7 @@ data class BuildOptions( val stacktraceMode: String? = StacktraceOption.FULL_STACKTRACE_LONG_OPTION, val kotlinVersion: String = TestVersions.Kotlin.CURRENT, val warningMode: WarningMode = WarningMode.Fail, - val configurationCache: Boolean = false, + val configurationCache: Boolean? = false, //null value is only for cases, when project isolation is used without configuration cache. Otherwise Gradle runner will throw exception "The configuration cache cannot be disabled when isolated projects is enabled." val projectIsolation: Boolean = false, val configurationCacheProblems: BaseGradleIT.ConfigurationCacheProblems = BaseGradleIT.ConfigurationCacheProblems.FAIL, val parallel: Boolean = true, @@ -117,8 +117,10 @@ data class BuildOptions( WarningMode.None -> arguments.add("--warning-mode=none") } - arguments.add("-Dorg.gradle.unsafe.configuration-cache=$configurationCache") - arguments.add("-Dorg.gradle.unsafe.configuration-cache-problems=${configurationCacheProblems.name.lowercase(Locale.getDefault())}") + if (configurationCache != null) { + arguments.add("-Dorg.gradle.unsafe.configuration-cache=$configurationCache") + arguments.add("-Dorg.gradle.unsafe.configuration-cache-problems=${configurationCacheProblems.name.lowercase(Locale.getDefault())}") + } if (gradleVersion >= GradleVersion.version("7.1")) { arguments.add("-Dorg.gradle.unsafe.isolated-projects=$projectIsolation") diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kt-63990-buildSrcWithKotlinJvmPlugin/build.gradle.kts b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kt-63990-buildSrcWithKotlinJvmPlugin/build.gradle.kts new file mode 100644 index 00000000000..d18c3d33a15 --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kt-63990-buildSrcWithKotlinJvmPlugin/build.gradle.kts @@ -0,0 +1,2 @@ +plugins { +} \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kt-63990-buildSrcWithKotlinJvmPlugin/buildSrc/build.gradle.kts b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kt-63990-buildSrcWithKotlinJvmPlugin/buildSrc/build.gradle.kts new file mode 100644 index 00000000000..4912c7d9bee --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kt-63990-buildSrcWithKotlinJvmPlugin/buildSrc/build.gradle.kts @@ -0,0 +1,9 @@ +plugins { + kotlin("jvm") +} + +repositories { + mavenLocal() + mavenCentral() + gradlePluginPortal() +} \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kt-63990-buildSrcWithKotlinJvmPlugin/buildSrc/src/main/kotlin/my-conventions.gradle.kts b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kt-63990-buildSrcWithKotlinJvmPlugin/buildSrc/src/main/kotlin/my-conventions.gradle.kts new file mode 100644 index 00000000000..e69de29bb2d