Skip to content

Commit e27d64e

Browse files
committed
NodeSetupTask should not delete general files, only old node versions #297
1 parent 2d5b18c commit e27d64e

File tree

3 files changed

+35
-2
lines changed

3 files changed

+35
-2
lines changed

src/main/kotlin/com/github/gradle/node/task/NodeSetupTask.kt

+3-1
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,9 @@ abstract class NodeSetupTask : BaseTask() {
5656

5757
private fun deleteExistingNode() {
5858
projectHelper.delete {
59-
delete(nodeDir.get().dir("../"))
59+
delete(nodeDir.get().dir("../").asFileTree.matching {
60+
include("node-v*/**")
61+
})
6062
}
6163
}
6264

src/test/groovy/com/github/gradle/AbstractIntegTest.groovy

+2-1
Original file line numberDiff line numberDiff line change
@@ -61,10 +61,11 @@ abstract class AbstractIntegTest extends Specification {
6161
return new File(temporaryFolder.getRoot(), name)
6262
}
6363

64-
protected final void writeFile(final String name, final String text) {
64+
protected final File writeFile(final String name, final String text) {
6565
File file = createFile(name)
6666
file.parentFile.mkdirs()
6767
file << text
68+
return file
6869
}
6970

7071
protected final void writePackageJson(final String text) {

src/test/groovy/com/github/gradle/node/task/NodeSetupTask_integTest.groovy

+30
Original file line numberDiff line numberDiff line change
@@ -47,4 +47,34 @@ node {
4747
gv << GRADLE_VERSIONS_UNDER_TEST
4848
}
4949
50+
def 'nodeSetup should only delete old node versions (#gv.version)'() {
51+
given:
52+
gradleVersion = gv
53+
54+
def badVersion = "node-v18.17.0"
55+
def goodVersion = "18.17.1"
56+
createFile("build.gradle") << """plugins {
57+
id "com.github.node-gradle.node"
58+
}
59+
60+
node {
61+
version = "${goodVersion}"
62+
download = true
63+
workDir = file("build/node")
64+
}"""
65+
def badFile = writeFile("build/node/$badVersion/bin/node.js", "console.log(\"bad\");")
66+
def goodFile = writeFile("build/node/important.txt", "should not be deleted by nodeSetup")
67+
68+
when:
69+
def result1 = build("nodeSetup")
70+
71+
then:
72+
result1.task(":nodeSetup").outcome == TaskOutcome.SUCCESS
73+
!badFile.exists()
74+
goodFile.exists()
75+
76+
where:
77+
gv << GRADLE_VERSIONS_UNDER_TEST
78+
}
79+
5080
}

0 commit comments

Comments
 (0)