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());