Repository: flink Updated Branches: refs/heads/master 5cd9e9d94 -> d33b44549
Fix issue where Windows paths were not recognized as absolute Added Windows test cases to Path tests This closes #491 Project: http://git-wip-us.apache.org/repos/asf/flink/repo Commit: http://git-wip-us.apache.org/repos/asf/flink/commit/2f683af7 Tree: http://git-wip-us.apache.org/repos/asf/flink/tree/2f683af7 Diff: http://git-wip-us.apache.org/repos/asf/flink/diff/2f683af7 Branch: refs/heads/master Commit: 2f683af747606027b8aebddca82147baa6a416c6 Parents: 5cd9e9d Author: Dániel Bali <balijanosdan...@gmail.com> Authored: Tue Mar 17 16:58:57 2015 +0100 Committer: Fabian Hueske <fhue...@apache.org> Committed: Tue Apr 7 14:45:55 2015 +0200 ---------------------------------------------------------------------- .../java/org/apache/flink/core/fs/Path.java | 9 +++--- .../java/org/apache/flink/core/fs/PathTest.java | 34 ++++++++++++++++++++ 2 files changed, 38 insertions(+), 5 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/flink/blob/2f683af7/flink-core/src/main/java/org/apache/flink/core/fs/Path.java ---------------------------------------------------------------------- diff --git a/flink-core/src/main/java/org/apache/flink/core/fs/Path.java b/flink-core/src/main/java/org/apache/flink/core/fs/Path.java index 5a15d6a..05bccd1 100644 --- a/flink-core/src/main/java/org/apache/flink/core/fs/Path.java +++ b/flink-core/src/main/java/org/apache/flink/core/fs/Path.java @@ -30,7 +30,6 @@ import java.net.URISyntaxException; import org.apache.flink.core.io.IOReadableWritable; import org.apache.flink.core.memory.DataInputView; import org.apache.flink.core.memory.DataOutputView; -import org.apache.flink.util.OperatingSystem; import org.apache.flink.util.StringUtils; /** @@ -278,9 +277,6 @@ public class Path implements IOReadableWritable, Serializable { * @return <code>true</code> if the path string contains a windows drive letter, <code>false</code> otherwise */ private boolean hasWindowsDrive(String path, boolean slashed) { - if (!OperatingSystem.isWindows()) { - return false; - } final int start = slashed ? 1 : 0; return path.length() >= start + 2 && (!slashed || path.charAt(0) == '/') @@ -316,7 +312,10 @@ public class Path implements IOReadableWritable, Serializable { */ public boolean isAbsolute() { final int start = hasWindowsDrive(uri.getPath(), true) ? 3 : 0; - return uri.getPath().startsWith(SEPARATOR, start); + if (uri.getPath().length() > start) { + return uri.getPath().startsWith(SEPARATOR, start); + } + return true; } /** http://git-wip-us.apache.org/repos/asf/flink/blob/2f683af7/flink-core/src/test/java/org/apache/flink/core/fs/PathTest.java ---------------------------------------------------------------------- diff --git a/flink-core/src/test/java/org/apache/flink/core/fs/PathTest.java b/flink-core/src/test/java/org/apache/flink/core/fs/PathTest.java index 1912cb3..e4c4e88 100644 --- a/flink-core/src/test/java/org/apache/flink/core/fs/PathTest.java +++ b/flink-core/src/test/java/org/apache/flink/core/fs/PathTest.java @@ -63,6 +63,15 @@ public class PathTest { assertEquals("/my/path", p.toUri().getPath()); assertEquals("file", p.toUri().getScheme()); + p = new Path("C:/my/windows/path"); + assertEquals("/C:/my/windows/path", p.toUri().getPath()); + + p = new Path("file:/C:/my/windows/path"); + assertEquals("/C:/my/windows/path", p.toUri().getPath()); + + p = new Path("C:"); + assertEquals("/C:", p.toUri().getPath()); + try { new Path((String)null); fail(); @@ -95,6 +104,15 @@ public class PathTest { p = new Path("./my/rel/path"); assertFalse(p.isAbsolute()); + p = new Path("C:/my/abs/windows/path"); + assertTrue(p.isAbsolute()); + + p = new Path("file:/C:"); + assertTrue(p.isAbsolute()); + + p = new Path("C:"); + assertTrue(p.isAbsolute()); + } @Test @@ -115,6 +133,12 @@ public class PathTest { p = new Path("/"); assertEquals("", p.getName()); + p = new Path("C:/my/windows/path"); + assertEquals("path", p.getName()); + + p = new Path("file:/C:/my/windows/path"); + assertEquals("path", p.getName()); + } @Test @@ -134,6 +158,9 @@ public class PathTest { p = new Path("/"); assertNull(p.getParent()); + + p = new Path("C:/my/windows/path"); + assertEquals("/C:/my/windows", p.getParent().toUri().getPath()); } @Test @@ -147,6 +174,10 @@ public class PathTest { p = p.suffix("/abc"); assertEquals("/my/path/abc", p.toUri().getPath()); + p = new Path("C:/my/windows/path"); + p = p.suffix("/abc"); + assertEquals("/C:/my/windows/path/abc", p.toUri().getPath()); + } @Test @@ -163,6 +194,9 @@ public class PathTest { p = new Path("/"); assertEquals(0, p.depth()); + + p = new Path("C:/my/windows/path"); + assertEquals(4, p.depth()); } @Test