Catch NoClassDefFoundError when BuildScanExtension is not found

Add simple test with init script

#KT-59589
This commit is contained in:
Nataliya.Valtman
2023-07-07 18:20:33 +02:00
committed by Space Team
parent 1642eaa48a
commit 27043bd8a6
3 changed files with 49 additions and 0 deletions
@@ -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,
)
}
}
}
@@ -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"
}
}
@@ -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) }