aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorShawn Pearce <spearce@spearce.org>2011-04-01 15:20:37 -0400
committerCode Review <codereview-daemon@eclipse.org>2011-04-01 15:20:37 -0400
commita4c142286e99529cd3707473db0ccea362d84545 (patch)
tree65620d4441cb6a428d0c36f1dd9a8ca936c079a6
parentbc42a780eb1a1b28eeb3034ff05d21a166644751 (diff)
parentd1718a34d3f2c258a166b563c477b268ac8002ed (diff)
downloadjgit-a4c142286e99529cd3707473db0ccea362d84545.tar.gz
jgit-a4c142286e99529cd3707473db0ccea362d84545.zip
Merge changes I2c8e917a,Ica9e50c0
* changes: Do not normalize URIishes Use Ignore to bypass unused test
-rw-r--r--org.eclipse.jgit.test/tst/org/eclipse/jgit/transport/URIishTest.java12
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/transport/URIish.java23
2 files changed, 17 insertions, 18 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 e6990fb83f..c86869d088 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 {
@@ -89,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));
}
@@ -111,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));
}
@@ -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 {
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 bc24516a65..8c7bedc6fc 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);