Enable publishing test build build-scan.

^KT-45745 In Progress
This commit is contained in:
Yahor Berdnikau
2021-10-05 17:46:39 +02:00
parent 27081231d9
commit 862d46f58b
3 changed files with 45 additions and 3 deletions
@@ -14,6 +14,7 @@ internal val DEFAULT_GROOVY_SETTINGS_FILE =
repositories { repositories {
mavenLocal() mavenLocal()
mavenCentral() mavenCentral()
gradlePluginPortal()
} }
plugins { plugins {
@@ -30,6 +30,7 @@ fun KGPBaseTest.project(
gradleVersion: GradleVersion, gradleVersion: GradleVersion,
buildOptions: KGPBaseTest.BuildOptions = defaultBuildOptions, buildOptions: KGPBaseTest.BuildOptions = defaultBuildOptions,
forceOutput: Boolean = false, forceOutput: Boolean = false,
enableBuildScan: Boolean = false,
addHeapDumpOptions: Boolean = true, addHeapDumpOptions: Boolean = true,
enableGradleDebug: Boolean = false, enableGradleDebug: Boolean = false,
projectPathAdditionalSuffix: String = "", projectPathAdditionalSuffix: String = "",
@@ -60,7 +61,8 @@ fun KGPBaseTest.project(
projectPath, projectPath,
gradleVersion, gradleVersion,
enableGradleDebug, enableGradleDebug,
forceOutput forceOutput,
enableBuildScan
) )
if (buildJdk != null) testProject.setupNonDefaultJdk(buildJdk) if (buildJdk != null) testProject.setupNonDefaultJdk(buildJdk)
@@ -77,13 +79,17 @@ fun TestProject.build(
forceOutput: Boolean = this.forceOutput, forceOutput: Boolean = this.forceOutput,
enableGradleDebug: Boolean = this.enableGradleDebug, enableGradleDebug: Boolean = this.enableGradleDebug,
enableBuildCacheDebug: Boolean = false, enableBuildCacheDebug: Boolean = false,
enableBuildScan: Boolean = this.enableBuildScan,
buildOptions: KGPBaseTest.BuildOptions = this.buildOptions, buildOptions: KGPBaseTest.BuildOptions = this.buildOptions,
assertions: BuildResult.() -> Unit = {} assertions: BuildResult.() -> Unit = {}
) { ) {
if (enableBuildScan) agreeToBuildScanService()
val allBuildArguments = commonBuildSetup( val allBuildArguments = commonBuildSetup(
buildArguments.toList(), buildArguments.toList(),
buildOptions, buildOptions,
enableBuildCacheDebug, enableBuildCacheDebug,
enableBuildScan,
gradleVersion gradleVersion
) )
val gradleRunnerForBuild = gradleRunner val gradleRunnerForBuild = gradleRunner
@@ -92,6 +98,7 @@ fun TestProject.build(
.withArguments(allBuildArguments) .withArguments(allBuildArguments)
withBuildSummary(allBuildArguments) { withBuildSummary(allBuildArguments) {
val buildResult = gradleRunnerForBuild.build() val buildResult = gradleRunnerForBuild.build()
if (enableBuildScan) buildResult.printBuildScanUrl()
assertions(buildResult) assertions(buildResult)
} }
} }
@@ -104,13 +111,17 @@ fun TestProject.buildAndFail(
forceOutput: Boolean = this.forceOutput, forceOutput: Boolean = this.forceOutput,
enableGradleDebug: Boolean = this.enableGradleDebug, enableGradleDebug: Boolean = this.enableGradleDebug,
enableBuildCacheDebug: Boolean = false, enableBuildCacheDebug: Boolean = false,
enableBuildScan: Boolean = this.enableBuildScan,
buildOptions: KGPBaseTest.BuildOptions = this.buildOptions, buildOptions: KGPBaseTest.BuildOptions = this.buildOptions,
assertions: BuildResult.() -> Unit = {} assertions: BuildResult.() -> Unit = {}
) { ) {
if (enableBuildScan) agreeToBuildScanService()
val allBuildArguments = commonBuildSetup( val allBuildArguments = commonBuildSetup(
buildArguments.toList(), buildArguments.toList(),
buildOptions, buildOptions,
enableBuildCacheDebug, enableBuildCacheDebug,
enableBuildScan,
gradleVersion gradleVersion
) )
val gradleRunnerForBuild = gradleRunner val gradleRunnerForBuild = gradleRunner
@@ -119,6 +130,7 @@ fun TestProject.buildAndFail(
.withArguments(allBuildArguments) .withArguments(allBuildArguments)
withBuildSummary(allBuildArguments) { withBuildSummary(allBuildArguments) {
val buildResult = gradleRunnerForBuild.buildAndFail() val buildResult = gradleRunnerForBuild.buildAndFail()
if (enableBuildScan) buildResult.printBuildScanUrl()
assertions(buildResult) assertions(buildResult)
} }
@@ -152,7 +164,8 @@ class TestProject(
val projectPath: Path, val projectPath: Path,
val gradleVersion: GradleVersion, val gradleVersion: GradleVersion,
val enableGradleDebug: Boolean, val enableGradleDebug: Boolean,
val forceOutput: Boolean val forceOutput: Boolean,
val enableBuildScan: Boolean
) { ) {
val rootBuildGradle: Path get() = projectPath.resolve("build.gradle") val rootBuildGradle: Path get() = projectPath.resolve("build.gradle")
val settingsGradle: Path get() = projectPath.resolve("settings.gradle") val settingsGradle: Path get() = projectPath.resolve("settings.gradle")
@@ -173,15 +186,18 @@ private fun commonBuildSetup(
buildArguments: List<String>, buildArguments: List<String>,
buildOptions: KGPBaseTest.BuildOptions, buildOptions: KGPBaseTest.BuildOptions,
enableBuildCacheDebug: Boolean, enableBuildCacheDebug: Boolean,
enableBuildScan: Boolean,
gradleVersion: GradleVersion gradleVersion: GradleVersion
): List<String> { ): List<String> {
val buildOptionsArguments = buildOptions.toArguments(gradleVersion) val buildOptionsArguments = buildOptions.toArguments(gradleVersion)
val buildCacheDebugOption = if (enableBuildCacheDebug) "-Dorg.gradle.caching.debug=true" else null val buildCacheDebugOption = if (enableBuildCacheDebug) "-Dorg.gradle.caching.debug=true" else null
val buildScanOption = if (enableBuildScan) "--scan" else null
return buildOptionsArguments + return buildOptionsArguments +
buildArguments + buildArguments +
listOfNotNull( listOfNotNull(
"--full-stacktrace", "--full-stacktrace",
buildCacheDebugOption buildCacheDebugOption,
buildScanOption
) )
} }
@@ -254,6 +270,30 @@ private fun Path.addDefaultBuildFiles() {
} }
} }
@OptIn(ExperimentalPathApi::class)
private fun TestProject.agreeToBuildScanService() {
settingsGradle.appendText(
"""
gradleEnterprise {
buildScan {
termsOfServiceUrl = "https://gradle.com/terms-of-service"
termsOfServiceAgree = "yes"
}
}
""".trimIndent()
)
}
private fun BuildResult.printBuildScanUrl() {
val buildScanUrl = output
.lineSequence()
.first { it.contains("https://gradle.com/s/") }
.replaceBefore("https://gradle", "")
println("Build scan url: $buildScanUrl")
}
private fun TestProject.setupNonDefaultJdk(pathToJdk: File) { private fun TestProject.setupNonDefaultJdk(pathToJdk: File) {
gradleProperties.modify { gradleProperties.modify {
""" """
@@ -2,6 +2,7 @@ pluginManagement {
repositories { repositories {
mavenLocal() mavenLocal()
mavenCentral() mavenCentral()
gradlePluginPortal()
} }
plugins { plugins {