git allows remotes to be relative paths, but the regex validating urls wouldn't accept anything starting with "..". Other functionality works fine with these paths. Bug: 311300 Change-Id: Ib74de0450a1c602b22884e19d994ce2f52634c77tags/v0.10.1
@@ -83,6 +83,16 @@ public class URIishTest extends TestCase { | |||
assertEquals(u, new URIish(str)); | |||
} | |||
public void testRelativePath() throws Exception { | |||
final String str = "../../foo/bar"; | |||
URIish u = new URIish(str); | |||
assertNull(u.getScheme()); | |||
assertFalse(u.isRemote()); | |||
assertEquals(str, u.getPath()); | |||
assertEquals(str, u.toString()); | |||
assertEquals(u, new URIish(str)); | |||
} | |||
public void testUNC() throws Exception { | |||
final String str = "\\\\some\\place"; | |||
URIish u = new URIish(str); |
@@ -64,7 +64,12 @@ public class URIish implements Serializable { | |||
private static final long serialVersionUID = 1L; | |||
private static final Pattern FULL_URI = Pattern | |||
.compile("^(?:([a-z][a-z0-9+-]+)://(?:([^/]+?)(?::([^/]+?))?@)?(?:([^/]+?))?(?::(\\d+))?)?((?:[A-Za-z]:)?/.+)$"); | |||
.compile("^(?:([a-z][a-z0-9+-]+)://" // optional http:// | |||
+ "(?:([^/]+?)(?::([^/]+?))?@)?" // optional user:password@ | |||
+ "(?:([^/]+?))?(?::(\\d+))?)?" // optional example.com:1337 | |||
+ "((?:[A-Za-z]:)?" // optional drive-letter: | |||
+ "(?:\\.\\.)?" // optionally a relative path | |||
+"/.+)$"); // /anything | |||
private static final Pattern SCP_URI = Pattern | |||
.compile("^(?:([^@]+?)@)?([^:]+?):(.+)$"); |