Correctly handle symlinks in directory deletion
diff --git a/jetty-test-helper/src/main/java/org/eclipse/jetty/toolchain/test/FS.java b/jetty-test-helper/src/main/java/org/eclipse/jetty/toolchain/test/FS.java
index 0bb5f8d..238fcb1 100644
--- a/jetty-test-helper/src/main/java/org/eclipse/jetty/toolchain/test/FS.java
+++ b/jetty-test-helper/src/main/java/org/eclipse/jetty/toolchain/test/FS.java
@@ -25,6 +25,7 @@
import java.nio.file.DirectoryIteratorException;
import java.nio.file.DirectoryStream;
import java.nio.file.Files;
+import java.nio.file.LinkOption;
import java.nio.file.Path;
import java.nio.file.attribute.FileTime;
import java.util.concurrent.TimeUnit;
@@ -137,9 +138,9 @@
{
String location = path.toAbsolutePath().toString();
- if (Files.exists(path))
+ if (Files.exists(path,LinkOption.NOFOLLOW_LINKS))
{
- Assert.assertTrue("Path must be a file: " + location,Files.isRegularFile(path));
+ Assert.assertTrue("Path must be a file or link: " + location,Files.isRegularFile(path) || Files.isSymbolicLink(path));
Assert.assertTrue("Can only delete content within the /target/tests/ directory: " + location,FS.isTestingDir(path.getParent()));
try
{
diff --git a/jetty-test-helper/src/test/java/org/eclipse/jetty/toolchain/test/FSTest.java b/jetty-test-helper/src/test/java/org/eclipse/jetty/toolchain/test/FSTest.java
index fed7025..6624353 100644
--- a/jetty-test-helper/src/test/java/org/eclipse/jetty/toolchain/test/FSTest.java
+++ b/jetty-test-helper/src/test/java/org/eclipse/jetty/toolchain/test/FSTest.java
@@ -22,6 +22,7 @@
import java.io.File;
import java.io.IOException;
+import java.nio.file.Files;
import org.junit.Assert;
import org.junit.Test;
@@ -92,6 +93,8 @@
File d = new File(testdir,"subdir");
FS.ensureDirExists(d);
+ Files.createSymbolicLink(d.toPath().resolve("brokenlink"),d.toPath().resolve("doesNotExist"));
+
for (int i = 0; i < 10; i++)
{
f = new File(d,"subdummy-" + i);