Mercurial > hg > mercurial
changeset 322:6667765025c6
Merge branch Eluru-6.5.x
line wrap: on
line diff
--- a/mercurial-common/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/command/Settings.java Mon Sep 19 11:31:58 2011 +0400 +++ b/mercurial-common/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/command/Settings.java Mon Sep 19 12:02:37 2011 +0400 @@ -187,8 +187,10 @@ String escapedURI = uri.toASCIIString(); int from = "http://".length(); int to = escapedURI.indexOf("somewhere.com") - 1; - return escapedURI.substring(from, to); - } catch (URISyntaxException e) { + String escapedUserInfo = escapedURI.substring(from, to); + escapedUserInfo = escapedUserInfo.replaceAll("&", "%26"); + return escapedUserInfo; + } catch (URISyntaxException e) { assert false; } return userInfo;
--- a/mercurial-tests/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/SettingsTest.java Mon Sep 19 11:31:58 2011 +0400 +++ b/mercurial-tests/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/SettingsTest.java Mon Sep 19 12:02:37 2011 +0400 @@ -109,6 +109,13 @@ assertTrue(settings.isUncompressedTransfer()); } + //TW-18262 + public void ampersand_in_password() { + VcsRootImpl vcsRoot = createVcsRoot("http://some.org/path", "user", "m&n"); + Settings settings = createSettings(vcsRoot); + assertEquals("http://user:m%26n@some.org/path", settings.getRepositoryUrl()); + } + private VcsRootImpl createVcsRoot(String url) { return createVcsRoot(url, "user", "pwd"); }