From b9c6da94c25856a15cff9e8500acd5d7c98d4399 Mon Sep 17 00:00:00 2001 From: daz Date: Tue, 25 Feb 2025 20:56:11 -0800 Subject: [PATCH] Record build failure for task failure in included build --- ...build-result-capture-service.plugin.groovy | 2 +- ...e-actions.build-result-capture.init.gradle | 6 ++-- .../BaseInitScriptTest.groovy | 2 -- .../TestBuildResultRecorder.groovy | 36 +++++++++++++++++++ 4 files changed, 40 insertions(+), 6 deletions(-) diff --git a/sources/src/resources/init-scripts/gradle-actions.build-result-capture-service.plugin.groovy b/sources/src/resources/init-scripts/gradle-actions.build-result-capture-service.plugin.groovy index b30c117..52ae42e 100644 --- a/sources/src/resources/init-scripts/gradle-actions.build-result-capture-service.plugin.groovy +++ b/sources/src/resources/init-scripts/gradle-actions.build-result-capture-service.plugin.groovy @@ -41,7 +41,7 @@ abstract class BuildResultsRecorder implements BuildService= GradleVersion.version("3.0") def atLeastGradle6 = version >= GradleVersion.version("6.0") + def atLeastGradle7 = version >= GradleVersion.version("7.0") def invocationId = "-${System.currentTimeMillis()}" if (atLeastGradle6) { - // By default, use standard mechanisms to capture build results - def useBuildService = version >= GradleVersion.version("6.6") - if (useBuildService) { + // Use BuildService for modern Gradle versions + if (atLeastGradle7) { captureUsingBuildService(invocationId) } else { captureUsingBuildFinished(gradle, invocationId, resultsWriter) diff --git a/sources/test/init-scripts/src/test/groovy/com/gradle/gradlebuildaction/BaseInitScriptTest.groovy b/sources/test/init-scripts/src/test/groovy/com/gradle/gradlebuildaction/BaseInitScriptTest.groovy index 99b3116..7471462 100644 --- a/sources/test/init-scripts/src/test/groovy/com/gradle/gradlebuildaction/BaseInitScriptTest.groovy +++ b/sources/test/init-scripts/src/test/groovy/com/gradle/gradlebuildaction/BaseInitScriptTest.groovy @@ -23,7 +23,6 @@ class BaseInitScriptTest extends Specification { static final TestGradleVersion GRADLE_4_X = new TestGradleVersion(GradleVersion.version('4.10.3'), 7, 10) static final TestGradleVersion GRADLE_5_X = new TestGradleVersion(GradleVersion.version('5.6.4'), 8, 12) static final TestGradleVersion GRADLE_6_0 = new TestGradleVersion(GradleVersion.version('6.0.1'), 8, 13) - static final TestGradleVersion GRADLE_6_NO_BUILD_SERVICE = new TestGradleVersion(GradleVersion.version('6.5.1'), 8, 14) static final TestGradleVersion GRADLE_6_X = new TestGradleVersion(GradleVersion.version('6.9.4'), 8, 15) static final TestGradleVersion GRADLE_7_1 = new TestGradleVersion(GradleVersion.version('7.1.1'), 8, 16) static final TestGradleVersion GRADLE_7_X = new TestGradleVersion(GradleVersion.version('7.6.2'), 8, 19) @@ -35,7 +34,6 @@ class BaseInitScriptTest extends Specification { GRADLE_4_X, GRADLE_5_X, GRADLE_6_0, - GRADLE_6_NO_BUILD_SERVICE, // Last version without build service support GRADLE_6_X, GRADLE_7_1, GRADLE_7_X, diff --git a/sources/test/init-scripts/src/test/groovy/com/gradle/gradlebuildaction/TestBuildResultRecorder.groovy b/sources/test/init-scripts/src/test/groovy/com/gradle/gradlebuildaction/TestBuildResultRecorder.groovy index 7283483..aa67d11 100644 --- a/sources/test/init-scripts/src/test/groovy/com/gradle/gradlebuildaction/TestBuildResultRecorder.groovy +++ b/sources/test/init-scripts/src/test/groovy/com/gradle/gradlebuildaction/TestBuildResultRecorder.groovy @@ -34,6 +34,42 @@ class TestBuildResultRecorder extends BaseInitScriptTest { testGradleVersion << ALL_VERSIONS } + def "produces build results file for build that fails in included build with #testGradleVersion"() { + assumeTrue testGradleVersion.compatibleWithCurrentJvm + + when: + def includedBuildRoot = new File(testProjectDir, 'included-build') + includedBuildRoot.mkdir() + def includedSettings = new File(includedBuildRoot, 'settings.gradle') + def includedBuild = new File(includedBuildRoot, 'build.gradle') + + includedSettings << """ + rootProject.name = 'included-build' +""" + includedBuild << ''' +task expectFailure { + doLast { + throw new RuntimeException("Expected to fail in included build") + } +} +''' + settingsFile << """ +includeBuild('included-build') +""" + buildFile << """ +task expectFailure { + dependsOn(gradle.includedBuild('included-build').task(':expectFailure')) +} +""" + runAndFail(testGradleVersion.gradleVersion) + + then: + assertResults('expectFailure', testGradleVersion, true) + + where: + testGradleVersion << ALL_VERSIONS + } + def "produces build results file for build with --configuration-cache on #testGradleVersion"() { assumeTrue testGradleVersion.compatibleWithCurrentJvm