Browse Source

Merge changes I2c8e917a,Ica9e50c0

* changes:
  Do not normalize URIishes
  Use Ignore to bypass unused test
stable-0.12
Shawn Pearce 14 years ago committed by Code Review
parent
commit
a4c142286e
  1. 12
      org.eclipse.jgit.test/tst/org/eclipse/jgit/transport/URIishTest.java
  2. 23
      org.eclipse.jgit/src/org/eclipse/jgit/transport/URIish.java

12
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.io.IOException;
import java.net.URISyntaxException; import java.net.URISyntaxException;
import org.junit.Ignore;
import org.junit.Test; import org.junit.Test;
public class URIishTest { public class URIishTest {
@ -89,8 +90,8 @@ public class URIishTest {
URIish u = new URIish(str); URIish u = new URIish(str);
assertNull(u.getScheme()); assertNull(u.getScheme());
assertFalse(u.isRemote()); assertFalse(u.isRemote());
assertEquals("D:/m y", u.getPath()); assertEquals("D:\\m y", u.getPath());
assertEquals("D:/m y", u.toString()); assertEquals("D:\\m y", u.toString());
assertEquals(u, new URIish(str)); assertEquals(u, new URIish(str));
} }
@ -111,8 +112,8 @@ public class URIishTest {
URIish u = new URIish(str); URIish u = new URIish(str);
assertNull(u.getScheme()); assertNull(u.getScheme());
assertFalse(u.isRemote()); assertFalse(u.isRemote());
assertEquals("//some/place", u.getPath()); assertEquals("\\\\some\\place", u.getPath());
assertEquals("//some/place", u.toString()); assertEquals("\\\\some\\place", u.toString());
assertEquals(u, new URIish(str)); assertEquals(u, new URIish(str));
} }
@ -315,8 +316,8 @@ public class URIishTest {
assertEquals(u, new URIish(str)); assertEquals(u, new URIish(str));
} }
/* Resolving ~user is beyond standard Java API and need more support
@Test @Test
@Ignore("Resolving ~user is beyond standard Java API and need more support")
public void testFileWithUserHome() throws Exception { public void testFileWithUserHome() throws Exception {
final String str = "~some/p ath"; final String str = "~some/p ath";
URIish u = new URIish(str); URIish u = new URIish(str);
@ -331,7 +332,6 @@ public class URIishTest {
assertEquals(u.setPass(null).toPrivateString(), u.toString()); assertEquals(u.setPass(null).toPrivateString(), u.toString());
assertEquals(u, new URIish(str)); assertEquals(u, new URIish(str));
} }
*/
@Test @Test
public void testFileWithNoneUserHomeWithTilde() throws Exception { public void testFileWithNoneUserHomeWithTilde() throws Exception {

23
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 * capturing groups: the first containing the user and the second containing
* the password * 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 * Part of a pattern which matches the host part of URIs. Defines one
* capturing group containing the host name. * 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 * 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 * 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. * 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. * 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 * Part of a pattern which matches a relative path. Relative paths don't
* start with slash or drive letters. Defines no capturing group. * 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 * Part of a pattern which matches a relative or absolute path. Defines no
* capturing group. * 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 + ")"; + RELATIVE_PATH_P + ")";
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
@ -129,7 +129,7 @@ public class URIish implements Serializable {
+ OPT_PORT_P // + OPT_PORT_P //
+ "(" // open a catpuring group the the user-home-dir part + "(" // open a catpuring group the the user-home-dir part
+ (USER_HOME_P + "?") // + (USER_HOME_P + "?") //
+ "/)" // + "[\\\\/])" //
+ ")?" // close the optional group containing hostname + ")?" // 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. * path (maybe even containing windows drive-letters) or a relative path.
*/ */
private static final Pattern LOCAL_FILE = Pattern.compile("^" // 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. * separator, but java.io.File.toURI() constructs those URIs.
*/ */
private static final Pattern SINGLE_SLASH_FILE_URI = Pattern.compile("^" // private static final Pattern SINGLE_SLASH_FILE_URI = Pattern.compile("^" //
+ "(file):(/(?!/)" // + "(file):([\\\\/](?![\\\\/])" //
+ PATH_P // + PATH_P //
+ ")$"); + ")$");
@ -159,7 +159,7 @@ public class URIish implements Serializable {
+ OPT_USER_PWD_P // + OPT_USER_PWD_P //
+ HOST_P // + HOST_P //
+ ":(" // + ":(" //
+ ("(?:" + USER_HOME_P + "/)?") // + ("(?:" + USER_HOME_P + "[\\\\/])?") //
+ RELATIVE_PATH_P // + RELATIVE_PATH_P //
+ ")$"); + ")$");
@ -168,9 +168,9 @@ public class URIish implements Serializable {
*/ */
private static final Pattern ABSOLUTE_SCP_URI = Pattern.compile("^" // private static final Pattern ABSOLUTE_SCP_URI = Pattern.compile("^" //
+ OPT_USER_PWD_P // + OPT_USER_PWD_P //
+ "([^/:]{2,})" // + "([^\\\\/:]{2,})" //
+ ":(" // + ":(" //
+ "/" + RELATIVE_PATH_P // + "[\\\\/]" + RELATIVE_PATH_P //
+ ")$"); + ")$");
private String scheme; private String scheme;
@ -192,7 +192,6 @@ public class URIish implements Serializable {
* @throws URISyntaxException * @throws URISyntaxException
*/ */
public URIish(String s) throws URISyntaxException { public URIish(String s) throws URISyntaxException {
s = s.replace('\\', '/');
Matcher matcher = SINGLE_SLASH_FILE_URI.matcher(s); Matcher matcher = SINGLE_SLASH_FILE_URI.matcher(s);
if (matcher.matches()) { if (matcher.matches()) {
scheme = matcher.group(1); scheme = matcher.group(1);

Loading…
Cancel
Save