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 2023/12/22 01:34:49 UTC

(commons-io) 01/02: More tests and NPE-proofing

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 7d44bb77c7a541f51b8c784c006b36f8d6b206e6
Author: Gary Gregory <ga...@gmail.com>
AuthorDate: Thu Dec 21 18:06:16 2023 -0500

    More tests and NPE-proofing
---
 src/main/java/org/apache/commons/io/file/PathUtils.java     |  2 +-
 src/test/java/org/apache/commons/io/file/PathUtilsTest.java | 11 +++++++++++
 2 files changed, 12 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 9f0dddb1..29af5800 100644
--- a/src/main/java/org/apache/commons/io/file/PathUtils.java
+++ b/src/main/java/org/apache/commons/io/file/PathUtils.java
@@ -878,7 +878,7 @@ public final class PathUtils {
      * @since 2.16.0
      */
     public static <R> R getFileName(final Path path, Function<Path, R> function) {
-        final Path fileName = path.getFileName();
+        final Path fileName = path != null ? path.getFileName() : null;
         return fileName != null ? function.apply(fileName) : null;
     }
 
diff --git a/src/test/java/org/apache/commons/io/file/PathUtilsTest.java b/src/test/java/org/apache/commons/io/file/PathUtilsTest.java
index d46f5185..c27c39de 100644
--- a/src/test/java/org/apache/commons/io/file/PathUtilsTest.java
+++ b/src/test/java/org/apache/commons/io/file/PathUtilsTest.java
@@ -246,6 +246,17 @@ public class PathUtilsTest extends AbstractTempDirTest {
         assertEquals(symlinkedDir, PathUtils.createParentDirectories(symlinkedDir.resolve("child")));
     }
 
+    @Test
+    public void testGetFileName() {
+        assertNull(PathUtils.getFileName(null, null));
+        assertNull(PathUtils.getFileName(null, Path::toString));
+        assertNull(PathUtils.getFileName(Paths.get("/"), Path::toString));
+        assertNull(PathUtils.getFileName(Paths.get("/"), Path::toString));
+        assertEquals("", PathUtils.getFileName(Paths.get(""), Path::toString));
+        assertEquals("a", PathUtils.getFileName(Paths.get("a"), Path::toString));
+        assertEquals("a", PathUtils.getFileName(Paths.get("p", "a"), Path::toString));
+    }
+
     @Test
     public void testGetFileNameString() {
         assertNull(PathUtils.getFileNameString(Paths.get("/")));