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/08/13 15:35:20 UTC

[commons-io] branch master updated (663ea741 -> f22a4227)

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

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


    from 663ea741 Use try-with-resources
     new 01714daa JAvadoc
     new fc1e5350 Javadoc
     new f22a4227 Fix new API and convert its tests to use fixed file times

The 3 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 src/main/java/org/apache/commons/io/FileUtils.java |  15 +--
 .../java/org/apache/commons/io/file/PathUtils.java |   4 +-
 .../java/org/apache/commons/io/FileUtilsTest.java  | 121 ++++++++++-----------
 3 files changed, 66 insertions(+), 74 deletions(-)


[commons-io] 02/03: Javadoc

Posted by gg...@apache.org.
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

commit fc1e53506ecb0f97b85034a8628eab31278824b4
Author: Gary Gregory <ga...@gmail.com>
AuthorDate: Sat Aug 13 10:38:59 2022 -0400

    Javadoc
---
 src/main/java/org/apache/commons/io/FileUtils.java | 7 +------
 1 file changed, 1 insertion(+), 6 deletions(-)

diff --git a/src/main/java/org/apache/commons/io/FileUtils.java b/src/main/java/org/apache/commons/io/FileUtils.java
index 66764263..0ce8e97e 100644
--- a/src/main/java/org/apache/commons/io/FileUtils.java
+++ b/src/main/java/org/apache/commons/io/FileUtils.java
@@ -111,6 +111,7 @@ import org.apache.commons.io.function.Uncheck;
  * </p>
  */
 public class FileUtils {
+
     /**
      * The number of bytes in a kilobyte.
      */
@@ -1231,7 +1232,6 @@ public class FileUtils {
      * @param file file or directory to delete, can be {@code null}
      * @return {@code true} if the file or directory was deleted, otherwise
      * {@code false}
-     *
      * @since 1.4
      */
     public static boolean deleteQuietly(final File file) {
@@ -1452,7 +1452,6 @@ public class FileUtils {
      * Returns a {@link File} representing the system temporary directory.
      *
      * @return the system temporary directory.
-     *
      * @since 2.0
      */
     public static File getTempDirectory() {
@@ -1463,7 +1462,6 @@ public class FileUtils {
      * Returns the path to the system temporary directory.
      *
      * @return the path to the system temporary directory.
-     *
      * @since 2.0
      */
     public static String getTempDirectoryPath() {
@@ -1474,7 +1472,6 @@ public class FileUtils {
      * Returns a {@link File} representing the user's home directory.
      *
      * @return the user's home directory.
-     *
      * @since 2.0
      */
     public static File getUserDirectory() {
@@ -1485,7 +1482,6 @@ public class FileUtils {
      * Returns the path to the user's home directory.
      *
      * @return the path to the user's home directory.
-     *
      * @since 2.0
      */
     public static String getUserDirectoryPath() {
@@ -1743,7 +1739,6 @@ public class FileUtils {
      * @throws NullPointerException if the file or local date is {@code null}.
      * @see ZoneId#systemDefault()
      * @see LocalTime#now()
-     *
      * @since 2.8.0
      */
     public static boolean isFileOlder(final File file, final ChronoLocalDate chronoLocalDate) {


[commons-io] 01/03: JAvadoc

Posted by gg...@apache.org.
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

commit 01714daaf4b8bac9add5e3ffa1b23bfdc3e321d2
Author: Gary Gregory <ga...@gmail.com>
AuthorDate: Sat Aug 13 10:13:39 2022 -0400

    JAvadoc
---
 src/main/java/org/apache/commons/io/file/PathUtils.java | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

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 3a90a279..e5ca2ebe 100644
--- a/src/main/java/org/apache/commons/io/file/PathUtils.java
+++ b/src/main/java/org/apache/commons/io/file/PathUtils.java
@@ -1175,7 +1175,9 @@ public final class PathUtils {
     }
 
     /**
-     * @return the nofollowLinkOptionArray
+     * Copy of the {@link LinkOption} array for {@link LinkOption#NOFOLLOW_LINKS}.
+     *
+     * @return Copy of the {@link LinkOption} array for {@link LinkOption#NOFOLLOW_LINKS}.
      */
     public static LinkOption[] noFollowLinkOptionArray() {
         return NOFOLLOW_LINK_OPTION_ARRAY.clone();


[commons-io] 03/03: Fix new API and convert its tests to use fixed file times

Posted by gg...@apache.org.
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

commit f22a4227401855ecbfdf8184bbe37275c3aeb5c3
Author: Gary Gregory <ga...@gmail.com>
AuthorDate: Sat Aug 13 11:35:14 2022 -0400

    Fix new API and convert its tests to use fixed file times
    
    The goal is to avoid the vagueries and randomness of local file systems
    and operating systems.
---
 src/main/java/org/apache/commons/io/FileUtils.java |   8 +-
 .../java/org/apache/commons/io/FileUtilsTest.java  | 121 ++++++++++-----------
 2 files changed, 62 insertions(+), 67 deletions(-)

diff --git a/src/main/java/org/apache/commons/io/FileUtils.java b/src/main/java/org/apache/commons/io/FileUtils.java
index 0ce8e97e..156e5637 100644
--- a/src/main/java/org/apache/commons/io/FileUtils.java
+++ b/src/main/java/org/apache/commons/io/FileUtils.java
@@ -1522,7 +1522,7 @@ public class FileUtils {
 
     /**
      * Tests if the specified {@link File} is newer than the specified {@link ChronoLocalDate}
-     * at the current time.
+     * at the end of day.
      *
      * <p>Note: The input date is assumed to be in the system default time-zone with the time
      * part set to the current time. To use a non-default time-zone use the method
@@ -1538,7 +1538,7 @@ public class FileUtils {
      * @since 2.8.0
      */
     public static boolean isFileNewer(final File file, final ChronoLocalDate chronoLocalDate) {
-        return isFileNewer(file, chronoLocalDate, LocalTime.now());
+        return isFileNewer(file, chronoLocalDate, LocalTime.MAX);
     }
 
     /**
@@ -1724,7 +1724,7 @@ public class FileUtils {
 
     /**
      * Tests if the specified {@link File} is older than the specified {@link ChronoLocalDate}
-     * at the current time.
+     * at the end of day.
      *
      * <p>Note: The input date is assumed to be in the system default time-zone with the time
      * part set to the current time. To use a non-default time-zone use the method
@@ -1742,7 +1742,7 @@ public class FileUtils {
      * @since 2.8.0
      */
     public static boolean isFileOlder(final File file, final ChronoLocalDate chronoLocalDate) {
-        return isFileOlder(file, chronoLocalDate, LocalTime.now());
+        return isFileOlder(file, chronoLocalDate, LocalTime.MAX);
     }
 
     /**
diff --git a/src/test/java/org/apache/commons/io/FileUtilsTest.java b/src/test/java/org/apache/commons/io/FileUtilsTest.java
index 03a93704..ed7d7eb8 100644
--- a/src/test/java/org/apache/commons/io/FileUtilsTest.java
+++ b/src/test/java/org/apache/commons/io/FileUtilsTest.java
@@ -44,6 +44,7 @@ import java.nio.file.Files;
 import java.nio.file.Path;
 import java.nio.file.Paths;
 import java.nio.file.StandardCopyOption;
+import java.nio.file.attribute.FileTime;
 import java.time.Instant;
 import java.time.LocalDate;
 import java.time.LocalDateTime;
@@ -63,6 +64,7 @@ import java.util.HashMap;
 import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
+import java.util.concurrent.TimeUnit;
 import java.util.zip.CRC32;
 import java.util.zip.Checksum;
 
@@ -80,6 +82,8 @@ import org.junit.jupiter.api.Assertions;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Disabled;
 import org.junit.jupiter.api.Test;
+import org.junit.jupiter.params.ParameterizedTest;
+import org.junit.jupiter.params.provider.ValueSource;
 
 /**
  * This is used to test FileUtils for correctness.
@@ -1595,33 +1599,36 @@ public class FileUtilsTest extends AbstractTempDirTest {
         Assertions.assertFalse(FileUtils.isEmptyDirectory(PathUtilsIsEmptyTest.DIR_SIZE_1.toFile()));
     }
 
-    @Test
-    public void testIsFileNewerOlder() throws Exception {
-        final File reference = new File(tempDirFile, "FileUtils-reference.txt");
+    @ParameterizedTest
+    @ValueSource(longs = {1L, 100L, 1_000L, 10_000L, 100_000L, 1_000_000L})
+    public void testIsFileNewerOlder(final long millis) throws Exception {
+        // Files
         final File oldFile = new File(tempDirFile, "FileUtils-old.txt");
+        final File refFile = new File(tempDirFile, "FileUtils-reference.txt");
         final File newFile = new File(tempDirFile, "FileUtils-new.txt");
         final File invalidFile = new File(tempDirFile, "FileUtils-invalid-file.txt");
-
-        // Create Files
-        if (!oldFile.getParentFile().exists()) {
-            throw new IOException("Cannot create file " + oldFile
-                    + " as the parent directory does not exist");
-        }
-        try (final OutputStream output1 = new BufferedOutputStream(Files.newOutputStream(oldFile.toPath()))) {
-            TestUtils.generateTestData(output1, 0);
+        // Paths
+        final Path oldPath = oldFile.toPath();
+        final Path refPath = refFile.toPath();
+        final Path newPath = newFile.toPath();
+        // FileTimes
+        final FileTime oldFileTime = FileTime.from(millis * 1, TimeUnit.MILLISECONDS);
+        final FileTime refFileTime = FileTime.from(millis * 2, TimeUnit.MILLISECONDS);
+        final FileTime testFileTime = FileTime.from(millis * 3, TimeUnit.MILLISECONDS);
+        final FileTime newFileTime = FileTime.from(millis * 4, TimeUnit.MILLISECONDS);
+
+        // Create fixtures
+        try (final OutputStream output = new BufferedOutputStream(Files.newOutputStream(oldPath))) {
+            TestUtils.generateTestData(output, 0);
         }
+        Files.setLastModifiedTime(oldPath, oldFileTime);
 
-        do {
-            TestUtils.sleepQuietly(1000);
-            if (!reference.getParentFile().exists()) {
-                throw new IOException("Cannot create file " + reference + " as the parent directory does not exist");
-            }
-            try (final OutputStream output = new BufferedOutputStream(Files.newOutputStream(reference.toPath()))) {
-                TestUtils.generateTestData(output, 0);
-            }
-        } while (getLastModifiedMillis(oldFile) == getLastModifiedMillis(reference));
+        try (final OutputStream output = new BufferedOutputStream(Files.newOutputStream(refPath))) {
+            TestUtils.generateTestData(output, 0);
+        }
+        Files.setLastModifiedTime(refPath, refFileTime);
 
-        final Date date = new Date();
+        final Date date = new Date(testFileTime.toMillis());
         final long now = date.getTime();
         final Instant instant = date.toInstant();
         final ZonedDateTime zonedDateTime = ZonedDateTime.ofInstant(instant, ZoneId.systemDefault());
@@ -1629,26 +1636,16 @@ public class FileUtilsTest extends AbstractTempDirTest {
         final LocalDateTime localDateTime = zonedDateTime.toLocalDateTime();
         final LocalDate localDate = zonedDateTime.toLocalDate();
         final LocalDate localDatePlusDay = localDate.plusDays(1);
-        final LocalTime localTime = LocalTime.ofSecondOfDay(0);
-        final OffsetTime offsetTime = OffsetTime.of(localTime, ZoneOffset.UTC);
-
-        do {
-            try {
-                TestUtils.sleep(1000);
-            } catch (final InterruptedException ie) {
-                // ignore
-            }
-            if (!newFile.getParentFile().exists()) {
-                throw new IOException("Cannot create file " + newFile
-                        + " as the parent directory does not exist");
-            }
-            try (final OutputStream output = new BufferedOutputStream(Files.newOutputStream(newFile.toPath()))) {
-                TestUtils.generateTestData(output, 0);
-            }
-        } while (getLastModifiedMillis(reference) == getLastModifiedMillis(newFile));
+        final LocalTime localTime0 = LocalTime.MIDNIGHT;
+        final OffsetTime offsetTime0 = OffsetTime.of(localTime0, ZoneOffset.UTC);
+
+        try (final OutputStream output = new BufferedOutputStream(Files.newOutputStream(newPath))) {
+            TestUtils.generateTestData(output, 0);
+        }
+        Files.setLastModifiedTime(newPath, newFileTime);
 
-        // Test isFileNewer()
-        assertFalse(FileUtils.isFileNewer(oldFile, reference), "Old File - Newer - File");
+        // Test
+        assertFalse(FileUtils.isFileNewer(oldFile, refFile), "Old File - Newer - File");
         assertFalse(FileUtils.isFileNewer(oldFile, date), "Old File - Newer - Date");
         assertFalse(FileUtils.isFileNewer(oldFile, now), "Old File - Newer - Mili");
         assertFalse(FileUtils.isFileNewer(oldFile, instant), "Old File - Newer - Instant");
@@ -1657,13 +1654,13 @@ public class FileUtilsTest extends AbstractTempDirTest {
         assertFalse(FileUtils.isFileNewer(oldFile, localDateTime), "Old File - Newer - LocalDateTime");
         assertFalse(FileUtils.isFileNewer(oldFile, localDateTime, ZoneId.systemDefault()), "Old File - Newer - LocalDateTime,ZoneId");
         assertFalse(FileUtils.isFileNewer(oldFile, localDate), "Old File - Newer - LocalDate");
-        assertTrue(FileUtils.isFileNewer(oldFile, localDate, localTime), "Old File - Newer - LocalDate,LocalTime");
-        assertTrue(FileUtils.isFileNewer(oldFile, localDate, offsetTime), "Old File - Newer - LocalDate,OffsetTime");
+        assertTrue(FileUtils.isFileNewer(oldFile, localDate, localTime0), "Old File - Newer - LocalDate,LocalTime");
+        assertTrue(FileUtils.isFileNewer(oldFile, localDate, offsetTime0), "Old File - Newer - LocalDate,OffsetTime");
         assertFalse(FileUtils.isFileNewer(oldFile, localDatePlusDay), "Old File - Newer - LocalDate plus one day");
-        assertFalse(FileUtils.isFileNewer(oldFile, localDatePlusDay, localTime), "Old File - Newer - LocalDate plus one day,LocalTime");
-        assertFalse(FileUtils.isFileNewer(oldFile, localDatePlusDay, offsetTime), "Old File - Newer - LocalDate plus one day,OffsetTime");
+        assertFalse(FileUtils.isFileNewer(oldFile, localDatePlusDay, localTime0), "Old File - Newer - LocalDate plus one day,LocalTime");
+        assertFalse(FileUtils.isFileNewer(oldFile, localDatePlusDay, offsetTime0), "Old File - Newer - LocalDate plus one day,OffsetTime");
 
-        assertTrue(FileUtils.isFileNewer(newFile, reference), "New File - Newer - File");
+        assertTrue(FileUtils.isFileNewer(newFile, refFile), "New File - Newer - File");
         assertTrue(FileUtils.isFileNewer(newFile, date), "New File - Newer - Date");
         assertTrue(FileUtils.isFileNewer(newFile, now), "New File - Newer - Mili");
         assertTrue(FileUtils.isFileNewer(newFile, instant), "New File - Newer - Instant");
@@ -1672,17 +1669,16 @@ public class FileUtilsTest extends AbstractTempDirTest {
         assertTrue(FileUtils.isFileNewer(newFile, localDateTime), "New File - Newer - LocalDateTime");
         assertTrue(FileUtils.isFileNewer(newFile, localDateTime, ZoneId.systemDefault()), "New File - Newer - LocalDateTime,ZoneId");
         assertFalse(FileUtils.isFileNewer(newFile, localDate), "New File - Newer - LocalDate");
-        assertTrue(FileUtils.isFileNewer(newFile, localDate, localTime), "New File - Newer - LocalDate,LocalTime");
-        assertTrue(FileUtils.isFileNewer(newFile, localDate, offsetTime), "New File - Newer - LocalDate,OffsetTime");
+        assertTrue(FileUtils.isFileNewer(newFile, localDate, localTime0), "New File - Newer - LocalDate,LocalTime");
+        assertTrue(FileUtils.isFileNewer(newFile, localDate, offsetTime0), "New File - Newer - LocalDate,OffsetTime");
         assertFalse(FileUtils.isFileNewer(newFile, localDatePlusDay), "New File - Newer - LocalDate plus one day");
-        assertFalse(FileUtils.isFileNewer(newFile, localDatePlusDay, localTime), "New File - Newer - LocalDate plus one day,LocalTime");
-        assertFalse(FileUtils.isFileNewer(newFile, localDatePlusDay, offsetTime), "New File - Newer - LocalDate plus one day,OffsetTime");
-        assertFalse(FileUtils.isFileNewer(invalidFile, reference), "Invalid - Newer - File");
-        final String invalidFileName = invalidFile.getName();
+        assertFalse(FileUtils.isFileNewer(newFile, localDatePlusDay, localTime0), "New File - Newer - LocalDate plus one day,LocalTime");
+        assertFalse(FileUtils.isFileNewer(newFile, localDatePlusDay, offsetTime0), "New File - Newer - LocalDate plus one day,OffsetTime");
+        assertFalse(FileUtils.isFileNewer(invalidFile, refFile), "Invalid - Newer - File");
         assertThrows(IllegalArgumentException.class, () -> FileUtils.isFileNewer(newFile, invalidFile));
 
         // Test isFileOlder()
-        assertTrue(FileUtils.isFileOlder(oldFile, reference), "Old File - Older - File");
+        assertTrue(FileUtils.isFileOlder(oldFile, refFile), "Old File - Older - File");
         assertTrue(FileUtils.isFileOlder(oldFile, date), "Old File - Older - Date");
         assertTrue(FileUtils.isFileOlder(oldFile, now), "Old File - Older - Mili");
         assertTrue(FileUtils.isFileOlder(oldFile, instant), "Old File - Older - Instant");
@@ -1691,13 +1687,13 @@ public class FileUtilsTest extends AbstractTempDirTest {
         assertTrue(FileUtils.isFileOlder(oldFile, localDateTime), "Old File - Older - LocalDateTime");
         assertTrue(FileUtils.isFileOlder(oldFile, localDateTime, ZoneId.systemDefault()), "Old File - Older - LocalDateTime,LocalTime");
         assertTrue(FileUtils.isFileOlder(oldFile, localDate), "Old File - Older - LocalDate");
-        assertFalse(FileUtils.isFileOlder(oldFile, localDate, localTime), "Old File - Older - LocalDate,LocalTime");
-        assertFalse(FileUtils.isFileOlder(oldFile, localDate, offsetTime), "Old File - Older - LocalDate,OffsetTime");
+        assertFalse(FileUtils.isFileOlder(oldFile, localDate, localTime0), "Old File - Older - LocalDate,LocalTime");
+        assertFalse(FileUtils.isFileOlder(oldFile, localDate, offsetTime0), "Old File - Older - LocalDate,OffsetTime");
         assertTrue(FileUtils.isFileOlder(oldFile, localDatePlusDay), "Old File - Older - LocalDate plus one day");
-        assertTrue(FileUtils.isFileOlder(oldFile, localDatePlusDay, localTime), "Old File - Older - LocalDate plus one day,LocalTime");
-        assertTrue(FileUtils.isFileOlder(oldFile, localDatePlusDay, offsetTime), "Old File - Older - LocalDate plus one day,OffsetTime");
+        assertTrue(FileUtils.isFileOlder(oldFile, localDatePlusDay, localTime0), "Old File - Older - LocalDate plus one day,LocalTime");
+        assertTrue(FileUtils.isFileOlder(oldFile, localDatePlusDay, offsetTime0), "Old File - Older - LocalDate plus one day,OffsetTime");
 
-        assertFalse(FileUtils.isFileOlder(newFile, reference), "New File - Older - File");
+        assertFalse(FileUtils.isFileOlder(newFile, refFile), "New File - Older - File");
         assertFalse(FileUtils.isFileOlder(newFile, date), "New File - Older - Date");
         assertFalse(FileUtils.isFileOlder(newFile, now), "New File - Older - Mili");
         assertFalse(FileUtils.isFileOlder(newFile, instant), "New File - Older - Instant");
@@ -1706,16 +1702,15 @@ public class FileUtilsTest extends AbstractTempDirTest {
         assertFalse(FileUtils.isFileOlder(newFile, localDateTime), "New File - Older - LocalDateTime");
         assertFalse(FileUtils.isFileOlder(newFile, localDateTime, ZoneId.systemDefault()), "New File - Older - LocalDateTime,ZoneId");
         assertTrue(FileUtils.isFileOlder(newFile, localDate), "New File - Older - LocalDate");
-        assertFalse(FileUtils.isFileOlder(newFile, localDate, localTime), "New File - Older - LocalDate,LocalTime");
-        assertFalse(FileUtils.isFileOlder(newFile, localDate, offsetTime), "New File - Older - LocalDate,OffsetTime");
+        assertFalse(FileUtils.isFileOlder(newFile, localDate, localTime0), "New File - Older - LocalDate,LocalTime");
+        assertFalse(FileUtils.isFileOlder(newFile, localDate, offsetTime0), "New File - Older - LocalDate,OffsetTime");
         assertTrue(FileUtils.isFileOlder(newFile, localDatePlusDay), "New File - Older - LocalDate plus one day");
-        assertTrue(FileUtils.isFileOlder(newFile, localDatePlusDay, localTime), "New File - Older - LocalDate plus one day,LocalTime");
-        assertTrue(FileUtils.isFileOlder(newFile, localDatePlusDay, offsetTime), "New File - Older - LocalDate plus one day,OffsetTime");
+        assertTrue(FileUtils.isFileOlder(newFile, localDatePlusDay, localTime0), "New File - Older - LocalDate plus one day,LocalTime");
+        assertTrue(FileUtils.isFileOlder(newFile, localDatePlusDay, offsetTime0), "New File - Older - LocalDate plus one day,OffsetTime");
 
-        assertFalse(FileUtils.isFileOlder(invalidFile, reference), "Invalid - Older - File");
+        assertFalse(FileUtils.isFileOlder(invalidFile, refFile), "Invalid - Older - File");
         assertThrows(IllegalArgumentException.class, () -> FileUtils.isFileOlder(newFile, invalidFile));
 
-        // ----- Test isFileNewer() exceptions -----
         // Null File
         assertThrows(NullPointerException.class, () -> FileUtils.isFileNewer(null, now));