From 73602c448cde4e69ca59476d2b1c49ef91367591 Mon Sep 17 00:00:00 2001 From: Robin Rosenberg Date: Sun, 27 Mar 2011 22:53:26 +0200 Subject: [PATCH 1/2] Use Ignore to bypass unused test Change-Id: Ica9e50c0d512865d217f55bf0d100f27878031b9 Signed-off-by: Robin Rosenberg --- .../tst/org/eclipse/jgit/transport/URIishTest.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/org.eclipse.jgit.test/tst/org/eclipse/jgit/transport/URIishTest.java b/org.eclipse.jgit.test/tst/org/eclipse/jgit/transport/URIishTest.java index e6990fb83..edcab8a92 100644 --- a/org.eclipse.jgit.test/tst/org/eclipse/jgit/transport/URIishTest.java +++ b/org.eclipse.jgit.test/tst/org/eclipse/jgit/transport/URIishTest.java @@ -55,6 +55,7 @@ import java.io.File; import java.io.IOException; import java.net.URISyntaxException; +import org.junit.Ignore; import org.junit.Test; public class URIishTest { @@ -315,8 +316,8 @@ public class URIishTest { assertEquals(u, new URIish(str)); } - /* Resolving ~user is beyond standard Java API and need more support @Test + @Ignore("Resolving ~user is beyond standard Java API and need more support") public void testFileWithUserHome() throws Exception { final String str = "~some/p ath"; URIish u = new URIish(str); @@ -331,7 +332,6 @@ public class URIishTest { assertEquals(u.setPass(null).toPrivateString(), u.toString()); assertEquals(u, new URIish(str)); } - */ @Test public void testFileWithNoneUserHomeWithTilde() throws Exception { From d1718a34d3f2c258a166b563c477b268ac8002ed Mon Sep 17 00:00:00 2001 From: Robin Rosenberg Date: Sun, 27 Mar 2011 22:42:57 +0200 Subject: [PATCH 2/2] Do not normalize URIishes We used to normalize URI's since it seems simple. This however causes inconsistencies to the user and to out tests. Just pass backslashes through and make sure our parser can handle them. Bug: 341062 Signed-off-by: Robin Rosenberg Change-Id: I2c8e917a086faabcd8749160c2acc9dd05a42838 --- .../eclipse/jgit/transport/URIishTest.java | 8 +++---- .../org/eclipse/jgit/transport/URIish.java | 23 +++++++++---------- 2 files changed, 15 insertions(+), 16 deletions(-) diff --git a/org.eclipse.jgit.test/tst/org/eclipse/jgit/transport/URIishTest.java b/org.eclipse.jgit.test/tst/org/eclipse/jgit/transport/URIishTest.java index edcab8a92..c86869d08 100644 --- a/org.eclipse.jgit.test/tst/org/eclipse/jgit/transport/URIishTest.java +++ b/org.eclipse.jgit.test/tst/org/eclipse/jgit/transport/URIishTest.java @@ -90,8 +90,8 @@ public class URIishTest { URIish u = new URIish(str); assertNull(u.getScheme()); assertFalse(u.isRemote()); - assertEquals("D:/m y", u.getPath()); - assertEquals("D:/m y", u.toString()); + assertEquals("D:\\m y", u.getPath()); + assertEquals("D:\\m y", u.toString()); assertEquals(u, new URIish(str)); } @@ -112,8 +112,8 @@ public class URIishTest { URIish u = new URIish(str); assertNull(u.getScheme()); assertFalse(u.isRemote()); - assertEquals("//some/place", u.getPath()); - assertEquals("//some/place", u.toString()); + assertEquals("\\\\some\\place", u.getPath()); + assertEquals("\\\\some\\place", u.toString()); assertEquals(u, new URIish(str)); } diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/transport/URIish.java b/org.eclipse.jgit/src/org/eclipse/jgit/transport/URIish.java index bc24516a6..8c7bedc6f 100644 --- a/org.eclipse.jgit/src/org/eclipse/jgit/transport/URIish.java +++ b/org.eclipse.jgit/src/org/eclipse/jgit/transport/URIish.java @@ -75,13 +75,13 @@ public class URIish implements Serializable { * capturing groups: the first containing the user and the second containing * the password */ - private static final String OPT_USER_PWD_P = "(?:([^/:@]+)(?::([^/]+))?@)?"; + private static final String OPT_USER_PWD_P = "(?:([^\\\\/:@]+)(?::([^\\\\/]+))?@)?"; /** * Part of a pattern which matches the host part of URIs. Defines one * capturing group containing the host name. */ - private static final String HOST_P = "([^/:]+)"; + private static final String HOST_P = "([^\\\\/:]+)"; /** * Part of a pattern which matches the optional port part of URIs. Defines @@ -93,7 +93,7 @@ public class URIish implements Serializable { * Part of a pattern which matches the ~username part (e.g. /~root in * git://host.xyz/~root/a.git) of URIs. Defines no capturing group. */ - private static final String USER_HOME_P = "(?:/~(?:[^/]+))"; + private static final String USER_HOME_P = "(?:/~(?:[^\\\\/]+))"; /** * Part of a pattern which matches the optional drive letter in paths (e.g. @@ -105,13 +105,13 @@ public class URIish implements Serializable { * Part of a pattern which matches a relative path. Relative paths don't * start with slash or drive letters. Defines no capturing group. */ - private static final String RELATIVE_PATH_P = "(?:(?:[^/]+/)*[^/]+/?)"; + private static final String RELATIVE_PATH_P = "(?:(?:[^\\\\/]+[\\\\/])*[^\\\\/]+[\\\\/]?)"; /** * Part of a pattern which matches a relative or absolute path. Defines no * capturing group. */ - private static final String PATH_P = "(" + OPT_DRIVE_LETTER_P + "/?" + private static final String PATH_P = "(" + OPT_DRIVE_LETTER_P + "[\\\\/]?" + RELATIVE_PATH_P + ")"; private static final long serialVersionUID = 1L; @@ -129,7 +129,7 @@ public class URIish implements Serializable { + OPT_PORT_P // + "(" // open a catpuring group the the user-home-dir part + (USER_HOME_P + "?") // - + "/)" // + + "[\\\\/])" // + ")?" // close the optional group containing hostname + "(.+)?" // + "$"); @@ -139,7 +139,7 @@ public class URIish implements Serializable { * path (maybe even containing windows drive-letters) or a relative path. */ private static final Pattern LOCAL_FILE = Pattern.compile("^" // - + "(/?" + PATH_P + ")" // + + "([\\\\/]?" + PATH_P + ")" // + "$"); /** @@ -148,7 +148,7 @@ public class URIish implements Serializable { * separator, but java.io.File.toURI() constructs those URIs. */ private static final Pattern SINGLE_SLASH_FILE_URI = Pattern.compile("^" // - + "(file):(/(?!/)" // + + "(file):([\\\\/](?![\\\\/])" // + PATH_P // + ")$"); @@ -159,7 +159,7 @@ public class URIish implements Serializable { + OPT_USER_PWD_P // + HOST_P // + ":(" // - + ("(?:" + USER_HOME_P + "/)?") // + + ("(?:" + USER_HOME_P + "[\\\\/])?") // + RELATIVE_PATH_P // + ")$"); @@ -168,9 +168,9 @@ public class URIish implements Serializable { */ private static final Pattern ABSOLUTE_SCP_URI = Pattern.compile("^" // + OPT_USER_PWD_P // - + "([^/:]{2,})" // + + "([^\\\\/:]{2,})" // + ":(" // - + "/" + RELATIVE_PATH_P // + + "[\\\\/]" + RELATIVE_PATH_P // + ")$"); private String scheme; @@ -192,7 +192,6 @@ public class URIish implements Serializable { * @throws URISyntaxException */ public URIish(String s) throws URISyntaxException { - s = s.replace('\\', '/'); Matcher matcher = SINGLE_SLASH_FILE_URI.matcher(s); if (matcher.matches()) { scheme = matcher.group(1);