From f01b48d89ddf096faa32819ca1706762dc10bf95 Mon Sep 17 00:00:00 2001 From: daz Date: Fri, 7 Jul 2023 16:22:07 -0600 Subject: [PATCH] Do not attempt dependency graph on unsupported Gradle versions --- .../github-dependency-graph.init.gradle | 9 +++++++- .../TestDependencyGraph.groovy | 23 ++++++++++++++++--- 2 files changed, 28 insertions(+), 4 deletions(-) diff --git a/src/resources/init-scripts/github-dependency-graph.init.gradle b/src/resources/init-scripts/github-dependency-graph.init.gradle index ec0c653..6d7eced 100644 --- a/src/resources/init-scripts/github-dependency-graph.init.gradle +++ b/src/resources/init-scripts/github-dependency-graph.init.gradle @@ -1,13 +1,20 @@ +import org.gradle.util.GradleVersion + if (System.env.GITHUB_DEPENDENCY_GRAPH_ENABLED != "true") { return } +if (GradleVersion.current().baseVersion < GradleVersion.version("5.0")) { + println "::warning::Dependency Graph is not supported for Gradle versions < 5.0. No dependency snapshot will be generated." + return +} + def reportDir = System.env.GITHUB_DEPENDENCY_GRAPH_REPORT_DIR def jobCorrelator = System.env.GITHUB_DEPENDENCY_GRAPH_JOB_CORRELATOR def reportFile = new File(reportDir, jobCorrelator + ".json") if (reportFile.exists()) { - println "::warning::No dependency report generated for step: report file for '${jobCorrelator}' created in earlier step. Each build invocation requires a unique job correlator: specify GITHUB_DEPENDENCY_GRAPH_JOB_CORRELATOR var for this step." + println "::warning::No dependency snapshot generated for step: report file for '${jobCorrelator}' created in earlier step. Each build invocation requires a unique job correlator: specify GITHUB_DEPENDENCY_GRAPH_JOB_CORRELATOR var for this step." return } diff --git a/test/init-scripts/src/test/groovy/com/gradle/gradlebuildaction/TestDependencyGraph.groovy b/test/init-scripts/src/test/groovy/com/gradle/gradlebuildaction/TestDependencyGraph.groovy index 893e93a..4047c1b 100644 --- a/test/init-scripts/src/test/groovy/com/gradle/gradlebuildaction/TestDependencyGraph.groovy +++ b/test/init-scripts/src/test/groovy/com/gradle/gradlebuildaction/TestDependencyGraph.groovy @@ -5,6 +5,9 @@ import static org.junit.Assume.assumeTrue class TestDependencyGraph extends BaseInitScriptTest { def initScript = 'github-dependency-graph.init.gradle' + static final List NO_DEPENDENCY_GRAPH_VERSIONS = [GRADLE_3_X, GRADLE_4_X] + static final List DEPENDENCY_GRAPH_VERSIONS = ALL_VERSIONS - NO_DEPENDENCY_GRAPH_VERSIONS + def "does not produce dependency graph when not enabled"() { assumeTrue testGradleVersion.compatibleWithCurrentJvm @@ -29,7 +32,21 @@ class TestDependencyGraph extends BaseInitScriptTest { assert reportFile.exists() where: - testGradleVersion << ALL_VERSIONS + testGradleVersion << DEPENDENCY_GRAPH_VERSIONS + } + + def "warns and produces no dependency graph when enabled for older Gradle versions"() { + assumeTrue testGradleVersion.compatibleWithCurrentJvm + + when: + def result = run(['help'], initScript, testGradleVersion.gradleVersion, [], envVars) + + then: + assert !reportsDir.exists() + assert result.output.contains("::warning::Dependency Graph is not supported") + + where: + testGradleVersion << NO_DEPENDENCY_GRAPH_VERSIONS } def "warns and does not overwrite existing report file"() { @@ -42,10 +59,10 @@ class TestDependencyGraph extends BaseInitScriptTest { then: assert reportFile.text == "DUMMY CONTENT" - assert result.output.contains("::warning::No dependency report generated for step") + assert result.output.contains("::warning::No dependency snapshot generated for step") where: - testGradleVersion << ALL_VERSIONS + testGradleVersion << DEPENDENCY_GRAPH_VERSIONS } def getEnvVars() {