From b0cc245beb577def4535ba4928099377365e8e6e Mon Sep 17 00:00:00 2001 From: "Nataliya.Valtman" Date: Wed, 13 Dec 2023 11:38:17 +0100 Subject: [PATCH] Avoid throwing exception 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 .../gradle/plugin/StatisticsBuildFlowManager.kt | 2 +- 6 files changed, 33 insertions(+), 4 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 8d06fa2bcf1da..beedf962907fd 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 77c6d84879028..2c0ba65d95573 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, @@ -114,8 +114,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 0000000000000..d18c3d33a15e4 --- /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 0000000000000..4912c7d9bee6e --- /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 0000000000000..e69de29bb2d1d diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/StatisticsBuildFlowManager.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/StatisticsBuildFlowManager.kt index cc937c0841e34..cb436cc06cbb4 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/StatisticsBuildFlowManager.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/StatisticsBuildFlowManager.kt @@ -72,7 +72,7 @@ internal class BuildFinishFlowAction : FlowAction