diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/BuildReportsIT.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/BuildReportsIT.kt index 81ebf71a0e4..75060bbb12f 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/BuildReportsIT.kt +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/BuildReportsIT.kt @@ -16,6 +16,7 @@ import java.nio.file.Path import kotlin.io.path.* import kotlin.test.assertTrue import org.jetbrains.kotlin.gradle.dsl.KotlinVersion +import org.jetbrains.kotlin.gradle.testbase.TestVersions.ThirdPartyDependencies.GRADLE_ENTERPRISE_PLUGIN_VERSION @DisplayName("Build reports") @JvmGradlePluginTests @@ -371,4 +372,47 @@ class BuildReportsIT : KGPBaseTest() { } } + @DisplayName("build reports work with init script") + @GradleTestVersions( + minVersion = TestVersions.Gradle.MIN_SUPPORTED, + additionalVersions = [TestVersions.Gradle.G_7_6, TestVersions.Gradle.G_8_0], + maxVersion = TestVersions.Gradle.G_8_1 + ) + @GradleTest + fun testBuildReportsWithInitScript(gradleVersion: GradleVersion) { + project("simpleProject", gradleVersion) { + gradleProperties.modify { "$it\nkotlin.build.report.output=BUILD_SCAN,FILE\n" } + + val initScript = projectPath.resolve("init.gradle").createFile() + initScript.modify { + """ + initscript { + repositories { + maven { url = 'https://plugins.gradle.org/m2/' } + } + + dependencies { + classpath 'com.gradle:gradle-enterprise-gradle-plugin:$GRADLE_ENTERPRISE_PLUGIN_VERSION' + } + } + + beforeSettings { + it.pluginManager.apply(com.gradle.enterprise.gradleplugin.GradleEnterprisePlugin) + } + """.trimIndent() + } + + build( + "compileKotlin", + "-I", "init.gradle", + ) + + build( + "compileKotlin", + "-I", "init.gradle", + enableBuildScan = true, + ) + } + } + } diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/testbase/TestVersions.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/testbase/TestVersions.kt index 109d0f32a0d..c3369d7d9cd 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/testbase/TestVersions.kt +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/testbase/TestVersions.kt @@ -82,5 +82,6 @@ interface TestVersions { object ThirdPartyDependencies { const val SHADOW_PLUGIN_VERSION = "8.1.1" + const val GRADLE_ENTERPRISE_PLUGIN_VERSION = "3.13.4" } } diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/report/BuildScanExtensionHolder.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/report/BuildScanExtensionHolder.kt index 499307c6ffd..e6f8ed30555 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/report/BuildScanExtensionHolder.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/report/BuildScanExtensionHolder.kt @@ -17,6 +17,10 @@ class BuildScanExtensionHolder(val buildScan: BuildScanExtension) : java.io.Seri // Build scan plugin is applied, but BuildScanExtension class is not available due to Gradle classpath isolation // Could be reproduced by applying Gradle enterprise plugin via init script: KT-59589 null + } catch (e: NoClassDefFoundError) { + // Build scan plugin is applied, but BuildScanExtension class is not available due to Gradle classpath isolation + // Could be reproduced by applying Gradle enterprise plugin via init script: KT-59589 + null } return buildScanExtension?.let { BuildScanExtensionHolder(it) }