Skip to content

Commit 7d44bb7

Browse files
committed
More tests and NPE-proofing
1 parent 08bf6d0 commit 7d44bb7

2 files changed

Lines changed: 12 additions & 1 deletion

File tree

src/main/java/org/apache/commons/io/file/PathUtils.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -878,7 +878,7 @@ public static DosFileAttributeView getDosFileAttributeView(final Path path, fina
878878
* @since 2.16.0
879879
*/
880880
public static <R> R getFileName(final Path path, Function<Path, R> function) {
881-
final Path fileName = path.getFileName();
881+
final Path fileName = path != null ? path.getFileName() : null;
882882
return fileName != null ? function.apply(fileName) : null;
883883
}
884884

src/test/java/org/apache/commons/io/file/PathUtilsTest.java

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -246,6 +246,17 @@ public void testCreateDirectoriesSymlinkClashing() throws IOException {
246246
assertEquals(symlinkedDir, PathUtils.createParentDirectories(symlinkedDir.resolve("child")));
247247
}
248248

249+
@Test
250+
public void testGetFileName() {
251+
assertNull(PathUtils.getFileName(null, null));
252+
assertNull(PathUtils.getFileName(null, Path::toString));
253+
assertNull(PathUtils.getFileName(Paths.get("/"), Path::toString));
254+
assertNull(PathUtils.getFileName(Paths.get("/"), Path::toString));
255+
assertEquals("", PathUtils.getFileName(Paths.get(""), Path::toString));
256+
assertEquals("a", PathUtils.getFileName(Paths.get("a"), Path::toString));
257+
assertEquals("a", PathUtils.getFileName(Paths.get("p", "a"), Path::toString));
258+
}
259+
249260
@Test
250261
public void testGetFileNameString() {
251262
assertNull(PathUtils.getFileNameString(Paths.get("/")));

0 commit comments

Comments
 (0)