This is an automated email from the ASF dual-hosted git repository.

ggregory pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/commons-io.git


The following commit(s) were added to refs/heads/master by this push:
     new 9eaab5c  [IO-702] FileUtils.forceDelete does not delete invalid links. 
Testcase … #187.
9eaab5c is described below

commit 9eaab5c0a07e33cfe475fe6cbd1b5bbf77cca44d
Author: Gary Gregory <[email protected]>
AuthorDate: Sat Jan 16 15:58:19 2021 -0500

    [IO-702] FileUtils.forceDelete does not delete invalid links. Testcase …
    #187.
---
 src/changes/changes.xml                            |  3 ++
 .../commons/io/file/DeletingPathVisitor.java       |  3 +-
 .../io/FileUtilsDeleteDirectoryBaseTestCase.java   | 46 +++++++++++-----------
 3 files changed, 28 insertions(+), 24 deletions(-)

diff --git a/src/changes/changes.xml b/src/changes/changes.xml
index 92fb248..06b3095 100644
--- a/src/changes/changes.xml
+++ b/src/changes/changes.xml
@@ -93,6 +93,9 @@ The <action> type attribute can be add,update,fix,remove.
       <action issue="IO-701" dev="ggregory" type="fix" due-to="Gary Gregory">
         Make PathUtils.setReadOnly deal with LinuxDosFileAttributeView #186.
       </action>
+      <action issue="IO-702" dev="ggregory" type="fix" due-to="Boris Unckel, 
Gary Gregory">
+        FileUtils.forceDelete does not delete invalid links. #187.
+      </action>
       <!-- ADD -->
       <action dev="ggregory" type="add" due-to="Gary Gregory">
         Add FileSystemProviders class.
diff --git a/src/main/java/org/apache/commons/io/file/DeletingPathVisitor.java 
b/src/main/java/org/apache/commons/io/file/DeletingPathVisitor.java
index e11379e..206aaa9 100644
--- a/src/main/java/org/apache/commons/io/file/DeletingPathVisitor.java
+++ b/src/main/java/org/apache/commons/io/file/DeletingPathVisitor.java
@@ -66,7 +66,8 @@ public class DeletingPathVisitor extends CountingPathVisitor {
      * @param skip The files to skip deleting.
      * @since 2.8.0
      */
-    public DeletingPathVisitor(final PathCounters pathCounter, final 
DeleteOption[] deleteOption, final String... skip) {
+    public DeletingPathVisitor(final PathCounters pathCounter, final 
DeleteOption[] deleteOption,
+        final String... skip) {
         this(pathCounter, PathUtils.NOFOLLOW_LINK_OPTION_ARRAY, deleteOption, 
skip);
     }
 
diff --git 
a/src/test/java/org/apache/commons/io/FileUtilsDeleteDirectoryBaseTestCase.java 
b/src/test/java/org/apache/commons/io/FileUtilsDeleteDirectoryBaseTestCase.java
index c9e0cd2..86fb213 100644
--- 
a/src/test/java/org/apache/commons/io/FileUtilsDeleteDirectoryBaseTestCase.java
+++ 
b/src/test/java/org/apache/commons/io/FileUtilsDeleteDirectoryBaseTestCase.java
@@ -129,6 +129,29 @@ public abstract class FileUtilsDeleteDirectoryBaseTestCase 
{
     }
 
     @Test
+    public void testDeleteInvalidLinks() throws Exception {
+        final File aFile = new File(top, "realParentDirA");
+        assertTrue(aFile.mkdir());
+        final File bFile = new File(aFile, "realChildDirB");
+        assertTrue(bFile.mkdir());
+
+        final File cFile = new File(top, "realParentDirC");
+        assertTrue(cFile.mkdir());
+        final File dFile = new File(cFile, "realChildDirD");
+        assertTrue(dFile.mkdir());
+
+        final File linkToC = new File(bFile, "linkToC");
+        Files.createSymbolicLink(linkToC.toPath(), cFile.toPath());
+
+        final File linkToB = new File(dFile, "linkToB");
+        Files.createSymbolicLink(linkToB.toPath(), bFile.toPath());
+
+        FileUtils.deleteDirectory(aFile);
+        FileUtils.deleteDirectory(cFile);
+        assertEquals(0, top.list().length);
+    }
+
+    @Test
     public void testDeleteParentSymlink() throws Exception {
         final File realParent = new File(top, "realparent");
         assertTrue(realParent.mkdirs());
@@ -195,29 +218,6 @@ public abstract class FileUtilsDeleteDirectoryBaseTestCase 
{
     }
 
     @Test
-    public void testDeleteInvalidLinks() throws Exception {
-        File aFile = new File(top, "realParentDirA");
-        assertTrue(aFile.mkdir());
-        File bFile = new File(aFile, "realChildDirB");
-        assertTrue(bFile.mkdir());
-
-        File cFile = new File(top, "realParentDirC");
-        assertTrue(cFile.mkdir());
-        File dFile = new File(cFile, "realChildDirD");
-        assertTrue(dFile.mkdir());
-
-        File linkToC = new File(bFile, "linkToC");
-        Files.createSymbolicLink(linkToC.toPath(), cFile.toPath());
-
-        File linkToB = new File(dFile, "linkToB");
-        Files.createSymbolicLink(linkToB.toPath(), bFile.toPath());
-
-        FileUtils.deleteDirectory(aFile);
-        FileUtils.deleteDirectory(cFile);
-        assertEquals(0, top.list().length);
-    }
-
-    @Test
     public void testDeletesNested() throws Exception {
         final File nested = new File(top, "nested");
         assertTrue(nested.mkdirs());

Reply via email to