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 b2ea4fa  [IO-632] Add PathUtils for operations on NIO Path.
b2ea4fa is described below

commit b2ea4fabfc9c749b2e11805300b1cfb45e4289f6
Author: Gary Gregory <gardgreg...@gmail.com>
AuthorDate: Sat Oct 12 16:05:35 2019 -0400

    [IO-632] Add PathUtils for operations on NIO Path.
    
    Add PathUtils.cleanDirectory(Path).
---
 .../java/org/apache/commons/io/file/Counters.java  |  2 +-
 .../commons/io/file/CountingPathVisitor.java       |  2 +-
 .../java/org/apache/commons/io/file/PathUtils.java | 17 +++++-
 .../commons/io/file/CleaningPathVisitorTest.java   | 10 +--
 .../commons/io/file/DeletingPathVisitorTest.java   | 10 +--
 ...rTest.java => PathUtilsCleanDirectoryTest.java} | 71 ++++++----------------
 .../org/apache/commons/io/file/TestArguments.java  | 18 +++---
 7 files changed, 52 insertions(+), 78 deletions(-)

diff --git a/src/main/java/org/apache/commons/io/file/Counters.java 
b/src/main/java/org/apache/commons/io/file/Counters.java
index f0a32b3..4d1c33a 100644
--- a/src/main/java/org/apache/commons/io/file/Counters.java
+++ b/src/main/java/org/apache/commons/io/file/Counters.java
@@ -37,7 +37,7 @@ public class Counters {
 
         /**
          * Constructs a new instance.
-         * 
+         *
          * @param byteCounter the byte counter.
          * @param directoryCounter the directory counter.
          * @param fileCounter the file counter.
diff --git a/src/main/java/org/apache/commons/io/file/CountingPathVisitor.java 
b/src/main/java/org/apache/commons/io/file/CountingPathVisitor.java
index 2ca589b..a205dea 100644
--- a/src/main/java/org/apache/commons/io/file/CountingPathVisitor.java
+++ b/src/main/java/org/apache/commons/io/file/CountingPathVisitor.java
@@ -87,7 +87,7 @@ public class CountingPathVisitor extends SimplePathVisitor {
 
     /**
      * Updates the counters for visiting the given file.
-     * 
+     *
      * @param file the visited file.
      * @param attrs the visited file attributes.
      */
diff --git a/src/main/java/org/apache/commons/io/file/PathUtils.java 
b/src/main/java/org/apache/commons/io/file/PathUtils.java
index 1dc5705..17b30da 100644
--- a/src/main/java/org/apache/commons/io/file/PathUtils.java
+++ b/src/main/java/org/apache/commons/io/file/PathUtils.java
@@ -36,6 +36,17 @@ import org.apache.commons.io.file.Counters.PathCounters;
 public final class PathUtils {
 
     /**
+     * Cleans a directory including sub-directories without deleting 
directories.
+     *
+     * @param directory directory to clean.
+     * @return The visitor used to clean the given directory.
+     * @throws IOException if an I/O error is thrown by a visitor method.
+     */
+    public static PathCounters cleanDirectory(final Path directory) throws 
IOException {
+        return visitFileTree(CleaningPathVisitor.withLongCounters(), 
directory).getPathCounters();
+    }
+
+    /**
      * Counts aspects of a directory including sub-directories.
      *
      * @param directory directory to delete.
@@ -74,7 +85,7 @@ public final class PathUtils {
      * @throws IOException if an I/O error is thrown by a visitor method.
      */
     public static PathCounters deleteDirectory(final Path directory) throws 
IOException {
-        return visitFileTree(new 
DeletingPathVisitor(Counters.longPathCounters()), directory).getPathCounters();
+        return visitFileTree(DeletingPathVisitor.withLongCounters(), 
directory).getPathCounters();
     }
 
     /**
@@ -168,8 +179,8 @@ public final class PathUtils {
      *
      * @throws IOException if an I/O error is thrown by a visitor method
      */
-    public static <T extends FileVisitor<? super Path>> T visitFileTree(final 
T visitor, final String first, final String... more)
-            throws IOException {
+    public static <T extends FileVisitor<? super Path>> T visitFileTree(final 
T visitor, final String first,
+            final String... more) throws IOException {
         return visitFileTree(visitor, Paths.get(first, more));
     }
 
diff --git 
a/src/test/java/org/apache/commons/io/file/CleaningPathVisitorTest.java 
b/src/test/java/org/apache/commons/io/file/CleaningPathVisitorTest.java
index a6dfdcb..62802c8 100644
--- a/src/test/java/org/apache/commons/io/file/CleaningPathVisitorTest.java
+++ b/src/test/java/org/apache/commons/io/file/CleaningPathVisitorTest.java
@@ -50,6 +50,11 @@ public class CleaningPathVisitorTest extends TestArguments {
         }
     }
 
+    private void applyCleanEmptyDirectory(final CleaningPathVisitor visitor) 
throws IOException {
+        Files.walkFileTree(tempDir, visitor);
+        assertCounts(1, 0, 0, visitor);
+    }
+
     @BeforeEach
     public void beforeEach() throws IOException {
         tempDir = Files.createTempDirectory(getClass().getCanonicalName());
@@ -64,11 +69,6 @@ public class CleaningPathVisitorTest extends TestArguments {
         applyCleanEmptyDirectory(visitor);
     }
 
-    private void applyCleanEmptyDirectory(final CleaningPathVisitor visitor) 
throws IOException {
-        Files.walkFileTree(tempDir, visitor);
-        assertCounts(1, 0, 0, visitor);
-    }
-
     /**
      * Tests an empty folder.
      */
diff --git 
a/src/test/java/org/apache/commons/io/file/DeletingPathVisitorTest.java 
b/src/test/java/org/apache/commons/io/file/DeletingPathVisitorTest.java
index b31c614..0a56831 100644
--- a/src/test/java/org/apache/commons/io/file/DeletingPathVisitorTest.java
+++ b/src/test/java/org/apache/commons/io/file/DeletingPathVisitorTest.java
@@ -47,6 +47,11 @@ public class DeletingPathVisitorTest extends TestArguments {
         }
     }
 
+    private void applyDeleteEmptyDirectory(final DeletingPathVisitor visitor) 
throws IOException {
+        Files.walkFileTree(tempDir, visitor);
+        assertCounts(1, 0, 0, visitor);
+    }
+
     @BeforeEach
     public void beforeEach() throws IOException {
         tempDir = Files.createTempDirectory(getClass().getCanonicalName());
@@ -63,11 +68,6 @@ public class DeletingPathVisitorTest extends TestArguments {
         Files.deleteIfExists(tempDir);
     }
 
-    private void applyDeleteEmptyDirectory(final DeletingPathVisitor visitor) 
throws IOException {
-        Files.walkFileTree(tempDir, visitor);
-        assertCounts(1, 0, 0, visitor);
-    }
-
     /**
      * Tests an empty folder.
      */
diff --git 
a/src/test/java/org/apache/commons/io/file/CleaningPathVisitorTest.java 
b/src/test/java/org/apache/commons/io/file/PathUtilsCleanDirectoryTest.java
similarity index 50%
copy from src/test/java/org/apache/commons/io/file/CleaningPathVisitorTest.java
copy to 
src/test/java/org/apache/commons/io/file/PathUtilsCleanDirectoryTest.java
index a6dfdcb..dd0cb13 100644
--- a/src/test/java/org/apache/commons/io/file/CleaningPathVisitorTest.java
+++ b/src/test/java/org/apache/commons/io/file/PathUtilsCleanDirectoryTest.java
@@ -26,17 +26,14 @@ import java.nio.file.Path;
 import java.nio.file.Paths;
 
 import org.apache.commons.io.FileUtils;
-import org.apache.commons.io.file.Counters.PathCounters;
 import org.junit.jupiter.api.AfterEach;
-import org.junit.jupiter.api.Assertions;
 import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.params.ParameterizedTest;
-import org.junit.jupiter.params.provider.MethodSource;
+import org.junit.jupiter.api.Test;
 
 /**
  * Tests {@link DeletingPathVisitor}.
  */
-public class CleaningPathVisitorTest extends TestArguments {
+public class PathUtilsCleanDirectoryTest {
 
     private Path tempDir;
 
@@ -56,74 +53,40 @@ public class CleaningPathVisitorTest extends TestArguments {
     }
 
     /**
-     * Tests an empty folder.
-     */
-    @ParameterizedTest
-    @MethodSource("cleaningPathVisitors")
-    public void testCleanEmptyDirectory(final CleaningPathVisitor visitor) 
throws IOException {
-        applyCleanEmptyDirectory(visitor);
-    }
-
-    private void applyCleanEmptyDirectory(final CleaningPathVisitor visitor) 
throws IOException {
-        Files.walkFileTree(tempDir, visitor);
-        assertCounts(1, 0, 0, visitor);
-    }
-
-    /**
-     * Tests an empty folder.
-     */
-    @ParameterizedTest
-    @MethodSource("pathCounters")
-    public void testCleanEmptyDirectoryNullCtorArg(final PathCounters 
pathCounters) throws IOException {
-        applyCleanEmptyDirectory(new CleaningPathVisitor(pathCounters, 
(String[]) null));
-    }
-
-    /**
      * Tests a directory with one file of size 0.
      */
-    @ParameterizedTest
-    @MethodSource("cleaningPathVisitors")
-    public void testCleanFolders1FileSize0(final CleaningPathVisitor visitor) 
throws IOException {
+    @Test
+    public void testCleanDirectory1FileSize0() throws IOException {
         
FileUtils.copyDirectory(Paths.get("src/test/resources/org/apache/commons/io/dirs-1-file-size-0").toFile(),
                 tempDir.toFile());
-        assertCounts(1, 1, 0, PathUtils.visitFileTree(visitor, tempDir));
+        assertCounts(1, 1, 0, PathUtils.cleanDirectory(tempDir));
     }
 
     /**
      * Tests a directory with one file of size 1.
      */
-    @ParameterizedTest
-    @MethodSource("cleaningPathVisitors")
-    public void testCleanFolders1FileSize1(final CleaningPathVisitor visitor) 
throws IOException {
+    @Test
+    public void testCleanDirectory1FileSize1() throws IOException {
         
FileUtils.copyDirectory(Paths.get("src/test/resources/org/apache/commons/io/dirs-1-file-size-1").toFile(),
                 tempDir.toFile());
-        assertCounts(1, 1, 1, PathUtils.visitFileTree(visitor, tempDir));
+        assertCounts(1, 1, 1, PathUtils.cleanDirectory(tempDir));
     }
 
     /**
-     * Tests a directory with one file of size 1 but skip that file.
+     * Tests a directory with two subdirectorys, each containing one file of 
size 1.
      */
-    @ParameterizedTest
-    @MethodSource("pathCounters")
-    public void testCleanFolders1FileSize1Skip(final PathCounters 
pathCounters) throws IOException {
-        
FileUtils.copyDirectory(Paths.get("src/test/resources/org/apache/commons/io/dirs-1-file-size-1").toFile(),
+    @Test
+    public void testCleanDirectory2FileSize2() throws IOException {
+        
FileUtils.copyDirectory(Paths.get("src/test/resources/org/apache/commons/io/dirs-2-file-size-2").toFile(),
                 tempDir.toFile());
-        final String skipFileName = "file-size-1.bin";
-        final CountingPathVisitor visitor = new 
CleaningPathVisitor(pathCounters, skipFileName);
-        assertCounts(1, 1, 1, PathUtils.visitFileTree(visitor, tempDir));
-        final Path skippedFile = tempDir.resolve(skipFileName);
-        Assertions.assertTrue(Files.exists(skippedFile));
-        Files.delete(skippedFile);
+        assertCounts(3, 2, 2, PathUtils.cleanDirectory(tempDir));
     }
 
     /**
-     * Tests a directory with two subdirectorys, each containing one file of 
size 1.
+     * Tests an empty folder.
      */
-    @ParameterizedTest
-    @MethodSource("cleaningPathVisitors")
-    public void testCleanFolders2FileSize2(final CleaningPathVisitor visitor) 
throws IOException {
-        
FileUtils.copyDirectory(Paths.get("src/test/resources/org/apache/commons/io/dirs-2-file-size-2").toFile(),
-                tempDir.toFile());
-        assertCounts(3, 2, 2, PathUtils.visitFileTree(visitor, tempDir));
+    @Test
+    public void testCleanEmptyDirectory() throws IOException {
+        assertCounts(1, 0, 0, PathUtils.cleanDirectory(tempDir));
     }
 }
diff --git a/src/test/java/org/apache/commons/io/file/TestArguments.java 
b/src/test/java/org/apache/commons/io/file/TestArguments.java
index 428debb..2b9f210 100644
--- a/src/test/java/org/apache/commons/io/file/TestArguments.java
+++ b/src/test/java/org/apache/commons/io/file/TestArguments.java
@@ -23,11 +23,11 @@ import org.junit.jupiter.params.provider.Arguments;
 
 class TestArguments {
 
-    static Stream<Arguments> numberCounters() {
+    static Stream<Arguments> cleaningPathVisitors() {
         // @formatter:off
         return Stream.of(
-          Arguments.of(Counters.longCounter()),
-          Arguments.of(Counters.bigIntegerCounter()));
+          Arguments.of(CleaningPathVisitor.withBigIntegerCounters()),
+          Arguments.of(CleaningPathVisitor.withLongCounters()));
         // @formatter:on
     }
 
@@ -39,19 +39,19 @@ class TestArguments {
         // @formatter:on
     }
 
-    static Stream<Arguments> cleaningPathVisitors() {
+    static Stream<Arguments> deletingPathVisitors() {
         // @formatter:off
         return Stream.of(
-          Arguments.of(CleaningPathVisitor.withBigIntegerCounters()),
-          Arguments.of(CleaningPathVisitor.withLongCounters()));
+          Arguments.of(DeletingPathVisitor.withBigIntegerCounters()),
+          Arguments.of(DeletingPathVisitor.withLongCounters()));
         // @formatter:on
     }
 
-    static Stream<Arguments> deletingPathVisitors() {
+    static Stream<Arguments> numberCounters() {
         // @formatter:off
         return Stream.of(
-          Arguments.of(DeletingPathVisitor.withBigIntegerCounters()),
-          Arguments.of(DeletingPathVisitor.withLongCounters()));
+          Arguments.of(Counters.longCounter()),
+          Arguments.of(Counters.bigIntegerCounter()));
         // @formatter:on
     }
 

Reply via email to