Merge changes I2c8e917a,Ica9e50c0

* changes:
  Do not normalize URIishes
  Use Ignore to bypass unused test
This commit is contained in:
Shawn Pearce 2011-04-01 15:20:37 -04:00 committed by Code Review
commit a4c142286e
2 changed files with 17 additions and 18 deletions

View File

@ -55,6 +55,7 @@
import java.io.IOException;
import java.net.URISyntaxException;
import org.junit.Ignore;
import org.junit.Test;
public class URIishTest {
@ -89,8 +90,8 @@ public void testWindowsFile2() throws Exception {
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 void testUNC() throws Exception {
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 void testGitWithUserHome() throws Exception {
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 void testFileWithUserHome() throws Exception {
assertEquals(u.setPass(null).toPrivateString(), u.toString());
assertEquals(u, new URIish(str));
}
*/
@Test
public void testFileWithNoneUserHomeWithTilde() throws Exception {

View File

@ -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);