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