Handle the tilde notation (~user) of git url

When the path is prefixed with ~ the URI parser thought about this
as /~. Strip the / if the next character is the tilde.

Bug: 307017
Change-Id: I58203e5617956b46d83e8987d1f8042beddffac3
Signed-off-by: Robin Rosenberg <robin.rosenberg@dewire.com>
This commit is contained in:
Robin Rosenberg 2010-07-15 01:16:09 +02:00
parent 0ef99921fa
commit 845714158a
2 changed files with 50 additions and 0 deletions

View File

@ -250,6 +250,53 @@ public void testSshProtoWithUserPassAndPort() throws Exception {
assertEquals(u, new URIish(str));
}
public void testGitWithUserHome() throws Exception {
final String str = "git://example.com/~some/p ath";
URIish u = new URIish(str);
assertEquals("git", u.getScheme());
assertTrue(u.isRemote());
assertEquals("~some/p ath", u.getPath());
assertEquals("example.com", u.getHost());
assertNull(u.getUser());
assertNull(u.getPass());
assertEquals(-1, u.getPort());
assertEquals(str, u.toPrivateString());
assertEquals(u.setPass(null).toPrivateString(), u.toString());
assertEquals(u, new URIish(str));
}
/* 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);
assertEquals("git", u.getScheme());
assertTrue(u.isRemote());
assertEquals("~some/p ath", u.getPath());
assertEquals("example.com", u.getHost());
assertNull(u.getUser());
assertNull(u.getPass());
assertEquals(-1, u.getPort());
assertEquals(str, u.toPrivateString());
assertEquals(u.setPass(null).toPrivateString(), u.toString());
assertEquals(u, new URIish(str));
}
*/
public void testFileWithNoneUserHomeWithTilde() throws Exception {
final String str = "/~some/p ath";
URIish u = new URIish(str);
assertNull(u.getScheme());
assertFalse(u.isRemote());
assertEquals("/~some/p ath", u.getPath());
assertNull(u.getHost());
assertNull(u.getUser());
assertNull(u.getPass());
assertEquals(-1, u.getPort());
assertEquals(str, u.toPrivateString());
assertEquals(u.setPass(null).toPrivateString(), u.toString());
assertEquals(u, new URIish(str));
}
public void testGetNullHumanishName() {
try {
new URIish().getHumanishName();

View File

@ -104,6 +104,9 @@ public URIish(String s) throws URISyntaxException {
&& (path.charAt(1) >= 'A' && path.charAt(1) <= 'Z'
|| path.charAt(1) >= 'a' && path.charAt(1) <= 'z'))
path = path.substring(1);
else if (scheme != null && path.length() >= 2
&& path.charAt(0) == '/' && path.charAt(1) == '~')
path = path.substring(1);
} else {
matcher = SCP_URI.matcher(s);
if (matcher.matches()) {