From e4d6565c649ca7e29758fdc103993bbf11491e82 Mon Sep 17 00:00:00 2001 From: Elliotte Rusty Harold Date: Wed, 1 Jul 2026 09:57:40 -0400 Subject: [PATCH 1/2] PathTool.getRelativeFilePath: return empty string instead of null for cross-drive paths --- src/main/java/org/apache/maven/shared/utils/PathTool.java | 4 ++-- .../java/org/apache/maven/shared/utils/PathToolTest.java | 6 +++++- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/src/main/java/org/apache/maven/shared/utils/PathTool.java b/src/main/java/org/apache/maven/shared/utils/PathTool.java index 95ee050c..59cef004 100644 --- a/src/main/java/org/apache/maven/shared/utils/PathTool.java +++ b/src/main/java/org/apache/maven/shared/utils/PathTool.java @@ -164,14 +164,14 @@ public static String getRelativeFilePath(final String oldPath, final String newP && (!toPath.substring(0, 1).equals(fromPath.substring(0, 1)))) { // they both have drive path element but they dont match, no // relative path - return null; + return ""; } if ((toPath.startsWith(":", 1) && !fromPath.startsWith(":", 1)) || (!toPath.startsWith(":", 1) && fromPath.startsWith(":", 1))) { // one has a drive path element and the other doesnt, no relative // path. - return null; + return ""; } String resultPath = buildRelativePath(toPath, fromPath, File.separatorChar); diff --git a/src/test/java/org/apache/maven/shared/utils/PathToolTest.java b/src/test/java/org/apache/maven/shared/utils/PathToolTest.java index 31537659..f548ec8f 100644 --- a/src/test/java/org/apache/maven/shared/utils/PathToolTest.java +++ b/src/test/java/org/apache/maven/shared/utils/PathToolTest.java @@ -57,10 +57,12 @@ public void testGetRelativeFilePathNonWindows() { assertEquals("../../bin", PathTool.getRelativeFilePath("/usr/local/", "/bin")); assertEquals("../usr/local/", PathTool.getRelativeFilePath("/bin", "/usr/local/")); + + assertEquals("", PathTool.getRelativeFilePath("c:/usr/local", "d:/java/bin")); } @Test - // Keep in sync with testGetRelativeFilePathNonWindows() + // Keep in sync with testGetRelativeFilePathWindows() @EnabledOnOs(OS.WINDOWS) public void testGetRelativeFilePathWindows() { assertEquals("", PathTool.getRelativeFilePath(null, null)); @@ -85,6 +87,8 @@ public void testGetRelativeFilePathWindows() { assertEquals("..\\..\\bin", PathTool.getRelativeFilePath("c:\\usr\\local\\", "c:\\bin")); assertEquals("..\\usr\\local\\", PathTool.getRelativeFilePath("c:\\bin", "c:\\usr\\local\\")); + + assertEquals("", PathTool.getRelativeFilePath("c:\\usr\\local", "d:\\java\\bin")); } @Test From 690076111c79aab28b007237bf8124f5ab26f8fb Mon Sep 17 00:00:00 2001 From: Elliotte Rusty Harold Date: Wed, 1 Jul 2026 10:10:47 -0400 Subject: [PATCH 2/2] revert accidental comment change --- src/test/java/org/apache/maven/shared/utils/PathToolTest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/test/java/org/apache/maven/shared/utils/PathToolTest.java b/src/test/java/org/apache/maven/shared/utils/PathToolTest.java index f548ec8f..e1c98cbb 100644 --- a/src/test/java/org/apache/maven/shared/utils/PathToolTest.java +++ b/src/test/java/org/apache/maven/shared/utils/PathToolTest.java @@ -62,7 +62,7 @@ public void testGetRelativeFilePathNonWindows() { } @Test - // Keep in sync with testGetRelativeFilePathWindows() + // Keep in sync with testGetRelativeFilePathNonWindows() @EnabledOnOs(OS.WINDOWS) public void testGetRelativeFilePathWindows() { assertEquals("", PathTool.getRelativeFilePath(null, null));