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

Reply via email to