You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by gg...@apache.org on 2022/07/25 22:32:08 UTC

[commons-io] branch master updated: Add missing CopyDirectoryVisitor tests

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 b375ca51 Add missing CopyDirectoryVisitor tests
b375ca51 is described below

commit b375ca51cb40db2f4254c8c6e4a9f7cfab468da2
Author: Gary Gregory <ga...@gmail.com>
AuthorDate: Mon Jul 25 18:32:02 2022 -0400

    Add missing CopyDirectoryVisitor tests
---
 .../commons/io/file/CopyDirectoryVisitor.java      |  8 ++-
 .../commons/io/file/CopyDirectoryVisitorTest.java  | 80 ++++++++++++++++++----
 .../org/apache/commons/io/file/PathWrapper.java    | 13 +++-
 3 files changed, 84 insertions(+), 17 deletions(-)

diff --git a/src/main/java/org/apache/commons/io/file/CopyDirectoryVisitor.java b/src/main/java/org/apache/commons/io/file/CopyDirectoryVisitor.java
index 2a72e34e..57896fd1 100644
--- a/src/main/java/org/apache/commons/io/file/CopyDirectoryVisitor.java
+++ b/src/main/java/org/apache/commons/io/file/CopyDirectoryVisitor.java
@@ -36,6 +36,10 @@ import org.apache.commons.io.file.Counters.PathCounters;
  */
 public class CopyDirectoryVisitor extends CountingPathVisitor {
 
+    private static CopyOption[] toCopyOption(final CopyOption... copyOptions) {
+        return copyOptions == null ? PathUtils.EMPTY_COPY_OPTIONS : copyOptions.clone();
+    }
+
     private final CopyOption[] copyOptions;
     private final Path sourceDirectory;
     private final Path targetDirectory;
@@ -52,7 +56,7 @@ public class CopyDirectoryVisitor extends CountingPathVisitor {
         super(pathCounter);
         this.sourceDirectory = sourceDirectory;
         this.targetDirectory = targetDirectory;
-        this.copyOptions = copyOptions == null ? PathUtils.EMPTY_COPY_OPTIONS : copyOptions.clone();
+        this.copyOptions = toCopyOption(copyOptions);
     }
 
     /**
@@ -71,7 +75,7 @@ public class CopyDirectoryVisitor extends CountingPathVisitor {
         super(pathCounter, fileFilter, dirFilter);
         this.sourceDirectory = sourceDirectory;
         this.targetDirectory = targetDirectory;
-        this.copyOptions = copyOptions == null ? PathUtils.EMPTY_COPY_OPTIONS : copyOptions.clone();
+        this.copyOptions = toCopyOption(copyOptions);
     }
 
     /**
diff --git a/src/test/java/org/apache/commons/io/file/CopyDirectoryVisitorTest.java b/src/test/java/org/apache/commons/io/file/CopyDirectoryVisitorTest.java
index ffdd40bc..9ed8a80e 100644
--- a/src/test/java/org/apache/commons/io/file/CopyDirectoryVisitorTest.java
+++ b/src/test/java/org/apache/commons/io/file/CopyDirectoryVisitorTest.java
@@ -18,13 +18,18 @@
 package org.apache.commons.io.file;
 
 import static org.apache.commons.io.file.CounterAssertions.assertCounts;
-
+import static org.junit.jupiter.api.Assertions.assertArrayEquals;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertNotEquals;
 import java.io.IOException;
+import java.nio.file.CopyOption;
 import java.nio.file.Path;
 import java.nio.file.Paths;
 import java.nio.file.StandardCopyOption;
+import java.util.function.Supplier;
 
 import org.apache.commons.io.file.Counters.PathCounters;
+import org.apache.commons.io.filefilter.TrueFileFilter;
 import org.junit.jupiter.api.io.TempDir;
 import org.junit.jupiter.params.ParameterizedTest;
 import org.junit.jupiter.params.provider.MethodSource;
@@ -34,6 +39,8 @@ import org.junit.jupiter.params.provider.MethodSource;
  */
 public class CopyDirectoryVisitorTest extends TestArguments {
 
+    private static final CopyOption[] EXPECTED_COPY_OPTIONS = {StandardCopyOption.REPLACE_EXISTING};
+
     @TempDir
     private Path targetDir;
 
@@ -44,8 +51,43 @@ public class CopyDirectoryVisitorTest extends TestArguments {
     @MethodSource("pathCounters")
     public void testCopyDirectoryEmptyFolder(final PathCounters pathCounters) throws IOException {
         try (TempDirectory sourceDir = TempDirectory.create(getClass().getSimpleName())) {
-            assertCounts(1, 0, 0, PathUtils
-                .visitFileTree(new CopyDirectoryVisitor(pathCounters, sourceDir, targetDir, StandardCopyOption.REPLACE_EXISTING), sourceDir.get()));
+            final Supplier<CopyDirectoryVisitor> supplier = () -> new CopyDirectoryVisitor(pathCounters, sourceDir, targetDir, EXPECTED_COPY_OPTIONS);
+            final CopyDirectoryVisitor visitFileTree = PathUtils.visitFileTree(supplier.get(), sourceDir.get());
+            assertCounts(1, 0, 0, visitFileTree);
+            assertArrayEquals(EXPECTED_COPY_OPTIONS, visitFileTree.getCopyOptions());
+            assertEquals(sourceDir.get(), ((PathWrapper) visitFileTree.getSourceDirectory()).get());
+            assertEquals(sourceDir, visitFileTree.getSourceDirectory());
+            assertEquals(targetDir, visitFileTree.getTargetDirectory());
+            assertEquals(targetDir, visitFileTree.getTargetDirectory());
+            //
+            assertEquals(visitFileTree, supplier.get());
+            assertEquals(visitFileTree.hashCode(), supplier.get().hashCode());
+            assertEquals(visitFileTree, visitFileTree);
+            assertEquals(visitFileTree.hashCode(), visitFileTree.hashCode());
+            assertNotEquals(visitFileTree, "not");
+            assertNotEquals(visitFileTree, CountingPathVisitor.withLongCounters());
+        }
+    }
+
+    /**
+     * Tests an empty folder.
+     */
+    @ParameterizedTest
+    @MethodSource("pathCounters")
+    public void testCopyDirectoryEmptyFolderFilters(final PathCounters pathCounters) throws IOException {
+        try (TempDirectory sourceDir = TempDirectory.create(getClass().getSimpleName())) {
+            final Supplier<CopyDirectoryVisitor> supplier = () -> new CopyDirectoryVisitor(pathCounters, TrueFileFilter.INSTANCE, TrueFileFilter.INSTANCE,
+                sourceDir, targetDir, EXPECTED_COPY_OPTIONS);
+            final CopyDirectoryVisitor visitFileTree = PathUtils.visitFileTree(supplier.get(), sourceDir.get());
+            assertCounts(1, 0, 0, visitFileTree);
+            assertArrayEquals(EXPECTED_COPY_OPTIONS, visitFileTree.getCopyOptions());
+            assertEquals(sourceDir, visitFileTree.getSourceDirectory());
+            assertEquals(targetDir, visitFileTree.getTargetDirectory());
+            //
+            assertEquals(visitFileTree, supplier.get());
+            assertEquals(visitFileTree.hashCode(), supplier.get().hashCode());
+            assertEquals(visitFileTree, visitFileTree);
+            assertEquals(visitFileTree.hashCode(), visitFileTree.hashCode());
         }
     }
 
@@ -56,9 +98,17 @@ public class CopyDirectoryVisitorTest extends TestArguments {
     @MethodSource("pathCounters")
     public void testCopyDirectoryFolders1FileSize0(final PathCounters pathCounters) throws IOException {
         final Path sourceDir = Paths.get("src/test/resources/org/apache/commons/io/dirs-1-file-size-0");
-        assertCounts(1, 1, 0, PathUtils.visitFileTree(
-                new CopyDirectoryVisitor(pathCounters, sourceDir, targetDir, StandardCopyOption.REPLACE_EXISTING),
-                sourceDir));
+        final Supplier<CopyDirectoryVisitor> supplier = () -> new CopyDirectoryVisitor(pathCounters, sourceDir, targetDir, EXPECTED_COPY_OPTIONS);
+        final CopyDirectoryVisitor visitFileTree = PathUtils.visitFileTree(supplier.get(), sourceDir);
+        assertCounts(1, 1, 0, visitFileTree);
+        assertArrayEquals(EXPECTED_COPY_OPTIONS, visitFileTree.getCopyOptions());
+        assertEquals(sourceDir, visitFileTree.getSourceDirectory());
+        assertEquals(targetDir, visitFileTree.getTargetDirectory());
+        //
+        assertEquals(visitFileTree, supplier.get());
+        assertEquals(visitFileTree.hashCode(), supplier.get().hashCode());
+        assertEquals(visitFileTree, visitFileTree);
+        assertEquals(visitFileTree.hashCode(), visitFileTree.hashCode());
     }
 
     /**
@@ -68,9 +118,12 @@ public class CopyDirectoryVisitorTest extends TestArguments {
     @MethodSource("pathCounters")
     public void testCopyDirectoryFolders1FileSize1(final PathCounters pathCounters) throws IOException {
         final Path sourceDir = Paths.get("src/test/resources/org/apache/commons/io/dirs-1-file-size-1");
-        assertCounts(1, 1, 1, PathUtils.visitFileTree(
-                new CopyDirectoryVisitor(pathCounters, sourceDir, targetDir, StandardCopyOption.REPLACE_EXISTING),
-                sourceDir));
+        final CopyDirectoryVisitor visitFileTree = PathUtils.visitFileTree(new CopyDirectoryVisitor(pathCounters, sourceDir, targetDir, EXPECTED_COPY_OPTIONS),
+            sourceDir);
+        assertCounts(1, 1, 1, visitFileTree);
+        assertArrayEquals(EXPECTED_COPY_OPTIONS, visitFileTree.getCopyOptions());
+        assertEquals(sourceDir, visitFileTree.getSourceDirectory());
+        assertEquals(targetDir, visitFileTree.getTargetDirectory());
     }
 
     /**
@@ -80,9 +133,12 @@ public class CopyDirectoryVisitorTest extends TestArguments {
     @MethodSource("pathCounters")
     public void testCopyDirectoryFolders2FileSize2(final PathCounters pathCounters) throws IOException {
         final Path sourceDir = Paths.get("src/test/resources/org/apache/commons/io/dirs-2-file-size-2");
-        assertCounts(3, 2, 2, PathUtils.visitFileTree(
-                new CopyDirectoryVisitor(pathCounters, sourceDir, targetDir, StandardCopyOption.REPLACE_EXISTING),
-                sourceDir));
+        final CopyDirectoryVisitor visitFileTree = PathUtils.visitFileTree(new CopyDirectoryVisitor(pathCounters, sourceDir, targetDir, EXPECTED_COPY_OPTIONS),
+            sourceDir);
+        assertCounts(3, 2, 2, visitFileTree);
+        assertArrayEquals(EXPECTED_COPY_OPTIONS, visitFileTree.getCopyOptions());
+        assertEquals(sourceDir, visitFileTree.getSourceDirectory());
+        assertEquals(targetDir, visitFileTree.getTargetDirectory());
     }
 
 }
diff --git a/src/test/java/org/apache/commons/io/file/PathWrapper.java b/src/test/java/org/apache/commons/io/file/PathWrapper.java
index 78641604..2bf1daac 100644
--- a/src/test/java/org/apache/commons/io/file/PathWrapper.java
+++ b/src/test/java/org/apache/commons/io/file/PathWrapper.java
@@ -69,8 +69,15 @@ public abstract class PathWrapper implements Path {
     }
 
     @Override
-    public boolean equals(final Object other) {
-        return path.equals(other);
+    public boolean equals(final Object obj) {
+        if (this == obj) {
+            return true;
+        }
+        if (!(obj instanceof PathWrapper)) {
+            return false;
+        }
+        final PathWrapper other = (PathWrapper) obj;
+        return Objects.equals(path, other.path);
     }
 
     @Override
@@ -119,7 +126,7 @@ public abstract class PathWrapper implements Path {
 
     @Override
     public int hashCode() {
-        return path.hashCode();
+        return Objects.hash(path);
     }
 
     @Override