diff --git a/plugin-test/src/test/groovy/org/gradle/github/dependencygraph/BaseExtractorTest.groovy b/plugin-test/src/test/groovy/org/gradle/github/dependencygraph/BaseExtractorTest.groovy index 696ddc50..84ba64c2 100644 --- a/plugin-test/src/test/groovy/org/gradle/github/dependencygraph/BaseExtractorTest.groovy +++ b/plugin-test/src/test/groovy/org/gradle/github/dependencygraph/BaseExtractorTest.groovy @@ -205,7 +205,7 @@ abstract class BaseExtractorTest extends Specification { } @CompileStatic - private static class JsonRepositorySnapshotLoader { + protected static class JsonRepositorySnapshotLoader { private static final String SCHEMA = "schema/github-repository-snapshot-schema.json" private final File manifestFile @@ -214,14 +214,14 @@ abstract class BaseExtractorTest extends Specification { } @Memoized - protected Object jsonRepositorySnapshot() { + protected Map jsonRepositorySnapshot() { def jsonSlurper = new JsonSlurper() println(manifestFile.text) JsonSchema schema = createSchemaValidator() ObjectMapper mapper = new ObjectMapper() JsonNode node = mapper.readTree(manifestFile) validateAgainstJsonSchema(schema, node) - return jsonSlurper.parse(manifestFile) + return jsonSlurper.parse(manifestFile) as Map } private static void validateAgainstJsonSchema(JsonSchema schema, JsonNode json) { diff --git a/plugin-test/src/test/groovy/org/gradle/github/dependencygraph/DependencyExtractorConfigTest.groovy b/plugin-test/src/test/groovy/org/gradle/github/dependencygraph/DependencyExtractorConfigTest.groovy new file mode 100644 index 00000000..b7a5dd4a --- /dev/null +++ b/plugin-test/src/test/groovy/org/gradle/github/dependencygraph/DependencyExtractorConfigTest.groovy @@ -0,0 +1,52 @@ +package org.gradle.github.dependencygraph + +import org.gradle.test.fixtures.maven.MavenModule + +class DependencyExtractorConfigTest extends BaseExtractorTest { + private MavenModule foo + private File settingsFile + private File buildFile + + def setup() { + applyDependencyGraphPlugin() + establishEnvironmentVariables() + + foo = mavenRepo.module("org.test", "foo", "1.0").publish() + + settingsFile = file("settings.gradle") << """ + rootProject.name = 'a' + """ + + buildFile = file("build.gradle") << """ + apply plugin: 'java' + + repositories { + maven { url "${mavenRepo.uri}" } + } + """ + } + + def "can override env vars with system properties"() { + given: + buildFile << """ + dependencies { + implementation "org.test:foo:1.0" + } + """ + + when: + executer + .withArgument("-Dorg.gradle.github.env.GITHUB_DEPENDENCY_GRAPH_JOB_CORRELATOR=TEST_CORRELATOR") + .withArgument("-Dorg.gradle.github.env.GITHUB_REF=refs/my-branch/foo") + run() + + then: + def manifestFile = reportDir.file("TEST_CORRELATOR.json") + def snapshot = new JsonRepositorySnapshotLoader(manifestFile).jsonRepositorySnapshot() + assert snapshot.sha == environmentVars.sha + assert snapshot.ref == "refs/my-branch/foo" + def job = snapshot.job as Map + assert job.correlator == "TEST_CORRELATOR" + assert job.id == environmentVars.jobId + } +} diff --git a/plugin/src/main/kotlin/org/gradle/github/dependencygraph/internal/util/EnvironmentVariableLoader.kt b/plugin/src/main/kotlin/org/gradle/github/dependencygraph/internal/util/EnvironmentVariableLoader.kt index 6cb2177e..407b7362 100644 --- a/plugin/src/main/kotlin/org/gradle/github/dependencygraph/internal/util/EnvironmentVariableLoader.kt +++ b/plugin/src/main/kotlin/org/gradle/github/dependencygraph/internal/util/EnvironmentVariableLoader.kt @@ -9,8 +9,8 @@ internal interface EnvironmentVariableLoader { interface Default { fun Gradle.loadEnvironmentVariable(envName: String, default: String? = null): Provider = service().run { - environmentVariable(envName) - .orElse(systemProperty(ENV_VIA_SYS_PROP_PREFIX + envName)) + systemProperty(ENV_VIA_SYS_PROP_PREFIX + envName) + .orElse(environmentVariable(envName)) .orElse(provider { default ?: throwEnvironmentVariableMissingException(envName) }) @@ -19,8 +19,8 @@ internal interface EnvironmentVariableLoader { interface Legacy { fun Gradle.loadEnvironmentVariable(envName: String, default: String? = null): String { - return System.getenv()[envName] - ?: System.getProperty(ENV_VIA_SYS_PROP_PREFIX + envName) + return System.getProperty(ENV_VIA_SYS_PROP_PREFIX + envName) + ?: System.getenv()[envName] ?: default ?: throwEnvironmentVariableMissingException(envName) }