diff --git a/src/test/groovy/com/github/gradle/node/task/NodeTask_integTest.groovy b/src/test/groovy/com/github/gradle/node/task/NodeTask_integTest.groovy index 718f6471..0959fd3e 100644 --- a/src/test/groovy/com/github/gradle/node/task/NodeTask_integTest.groovy +++ b/src/test/groovy/com/github/gradle/node/task/NodeTask_integTest.groovy @@ -1,7 +1,10 @@ package com.github.gradle.node.task import com.github.gradle.AbstractIntegTest + import org.gradle.testkit.runner.TaskOutcome +import org.gradle.util.GradleVersion +import org.junit.Assume import org.junit.Rule import org.junit.contrib.java.lang.system.EnvironmentVariables @@ -238,4 +241,17 @@ class NodeTask_integTest extends AbstractIntegTest { then: result.output.contains("Cannot resolve external dependency org.nodejs:node:${DEFAULT_NODE_VERSION} because no repositories are defined.") } + + def 'make sure build works with FAIL_ON_PROJECT_REPOS'() { + given: + Assume.assumeFalse(gradleVersion < GradleVersion.version("6.8")) + copyResources("fixtures/node-depresolutionmgmt") + + when: + def result = build("hello") + + then: + result.task(":nodeSetup").outcome == TaskOutcome.SUCCESS + result.task(":hello").outcome == TaskOutcome.SUCCESS + } } diff --git a/src/test/resources/fixtures/node-depresolutionmgmt/build.gradle b/src/test/resources/fixtures/node-depresolutionmgmt/build.gradle new file mode 100644 index 00000000..a1651c95 --- /dev/null +++ b/src/test/resources/fixtures/node-depresolutionmgmt/build.gradle @@ -0,0 +1,49 @@ +import org.gradle.util.GradleVersion + +plugins { + id "com.github.node-gradle.node" +} + +node { + version = "12.13.0" + distBaseUrl = null + download = true + workDir = file("build/node") +} + +def changeScript = isPropertyEnabled("changeScript") +def changeArgs = isPropertyEnabled("changeArgs") + +task hello(type: NodeTask) { + script = file("simple.js") + args = [] + outputs.upToDateWhen { + true + } +} + +if (changeScript) { + hello.script = file("name.js") +} + +if (changeArgs) { + hello.args = ["Bob", "Alice"] +} + +task executeDirectoryScript(type: NodeTask) { + script = file(".") + outputs.upToDateWhen { + true + } +} + +task version(type: NodeTask) { + script = file("version.js") +} + +def isPropertyEnabled(String name) { + if (GradleVersion.current() >= GradleVersion.version("6.6")) { + return providers.systemProperty(name).forUseAtConfigurationTime().isPresent() + } + return System.properties[name] != null +} diff --git a/src/test/resources/fixtures/node-depresolutionmgmt/name.js b/src/test/resources/fixtures/node-depresolutionmgmt/name.js new file mode 100644 index 00000000..0fc2362c --- /dev/null +++ b/src/test/resources/fixtures/node-depresolutionmgmt/name.js @@ -0,0 +1,5 @@ +const args = process.argv.slice(2); + +for (const name of args) { + console.log(`Hello ${name}`); +} diff --git a/src/test/resources/fixtures/node-depresolutionmgmt/settings.gradle b/src/test/resources/fixtures/node-depresolutionmgmt/settings.gradle new file mode 100644 index 00000000..aeb9881b --- /dev/null +++ b/src/test/resources/fixtures/node-depresolutionmgmt/settings.gradle @@ -0,0 +1,25 @@ +import org.gradle.api.initialization.resolve.RepositoriesMode +import org.gradle.util.GradleVersion + +if (GradleVersion.current() >= GradleVersion.version("6.8")) { + dependencyResolutionManagement { + repositories { + repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS) + + ivy { + name = "Node.js" + setUrl("https://nodejs.org/dist/") + patternLayout { + artifact("v[revision]/[artifact](-v[revision]-[classifier]).[ext]") + ivy("v[revision]/ivy.xml") + } + metadataSources { + artifact() + } + content { + includeModule("org.nodejs", "node") + } + } + } + } +} diff --git a/src/test/resources/fixtures/node-depresolutionmgmt/simple.js b/src/test/resources/fixtures/node-depresolutionmgmt/simple.js new file mode 100644 index 00000000..accefceb --- /dev/null +++ b/src/test/resources/fixtures/node-depresolutionmgmt/simple.js @@ -0,0 +1 @@ +console.log("Hello World"); diff --git a/src/test/resources/fixtures/node-depresolutionmgmt/version.js b/src/test/resources/fixtures/node-depresolutionmgmt/version.js new file mode 100644 index 00000000..17d8434d --- /dev/null +++ b/src/test/resources/fixtures/node-depresolutionmgmt/version.js @@ -0,0 +1 @@ +console.log(`Version: ${process.version}`);