Mercurial > hg > mercurial
changeset 678:fd0c1e91bd46
mercurial url support + some tests
author | Pavel Sher <pavel.sher@gmail.com> |
---|---|
date | Sun, 24 Nov 2013 17:22:43 +0100 |
parents | e9a06ca41d46 |
children | 1da36037196d |
files | mercurial-server/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/MercurialUrlSupport.java mercurial-server/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/MercurialVcsSupport.java mercurial-tests/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/MercurialUrlSupportTest.java mercurial-tests/src/testng.xml |
diffstat | 4 files changed, 116 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mercurial-server/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/MercurialUrlSupport.java Sun Nov 24 17:22:43 2013 +0100 @@ -0,0 +1,54 @@ +package jetbrains.buildServer.buildTriggers.vcs.mercurial; + +import jetbrains.buildServer.vcs.*; +import jetbrains.buildServer.vcs.impl.VcsRootImpl; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +import java.util.HashMap; +import java.util.Map; + +public class MercurialUrlSupport implements UrlSupport { + + private final MercurialVcsSupport myVcsSupport; + + public MercurialUrlSupport(@NotNull MercurialVcsSupport vcsSupport) { + myVcsSupport = vcsSupport; + } + + @Nullable + public Map<String, String> convertToVcsRootProperties(@NotNull VcsUrl url) throws VcsException { + String fetchUrl = url.getUrl(); + + boolean testRequired = true; + MavenVcsUrl mavenUrl = url.asMavenVcsUrl(); + if (mavenUrl != null && !"hg".equals(mavenUrl.getProviderSchema())) { + return null; + } + + if (mavenUrl != null) { + fetchUrl = mavenUrl.getProviderSpecificPart(); + testRequired = false; + } + + Map<String, String> res = new HashMap<String, String>(myVcsSupport.getDefaultVcsProperties()); + res.put(Constants.REPOSITORY_PROP, fetchUrl); + Credentials credentials = url.getCredentials(); + if (credentials != null) { + res.put(Constants.USERNAME, credentials.getUsername()); + res.put(Constants.PASSWORD, credentials.getPassword()); + } + + if (testRequired) { + try { + TestConnectionSupport testConnectionSupport = myVcsSupport.getTestConnectionSupport(); + assert testConnectionSupport != null; + testConnectionSupport.testConnection(new VcsRootImpl(-1, res)); + } catch (VcsException e) { + return null; + } + } + + return res; + } +}
--- a/mercurial-server/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/MercurialVcsSupport.java Thu Nov 21 17:27:45 2013 +0400 +++ b/mercurial-server/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/MercurialVcsSupport.java Sun Nov 24 17:22:43 2013 +0100 @@ -664,6 +664,10 @@ return new ListFilesSupport(this, myConfig, myHgVcsRootFactory); } + @NotNull + public UrlSupport getUrlSupport() { + return new MercurialUrlSupport(this); + } @Override @Nullable
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mercurial-tests/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/MercurialUrlSupportTest.java Sun Nov 24 17:22:43 2013 +0100 @@ -0,0 +1,57 @@ +package jetbrains.buildServer.buildTriggers.vcs.mercurial; + +import jetbrains.buildServer.BaseTestCase; +import jetbrains.buildServer.vcs.Credentials; +import jetbrains.buildServer.vcs.VcsException; +import jetbrains.buildServer.vcs.VcsUrl; +import junit.framework.Assert; +import org.testng.annotations.BeforeMethod; +import org.testng.annotations.Test; + +import java.util.Map; + +import static jetbrains.buildServer.buildTriggers.vcs.mercurial.MercurialSupportBuilder.mercurialSupport; +import static junit.framework.Assert.*; + +@Test +public class MercurialUrlSupportTest extends BaseMercurialTestCase { + private MercurialUrlSupport myUrlSupport; + + @BeforeMethod + @Override + public void setUp() throws Exception { + super.setUp(); + + ServerPluginConfig myPluginConfig = new ServerPluginConfigBuilder() + .cachesDir(myTempFiles.createTempDir()) + .build(); + MercurialVcsSupport vcsSupport = mercurialSupport().withConfig(myPluginConfig).build(); + myUrlSupport = new MercurialUrlSupport(vcsSupport); + } + + public void maven_like_url() throws VcsException { + VcsUrl url = new VcsUrl("scm:hg:http://host/v3", new Credentials("user1", "pass1")); + Map<String, String> props = myUrlSupport.convertToVcsRootProperties(url); + assertNotNull(props); + + assertEquals("http://host/v3", props.get(Constants.REPOSITORY_PROP)); + assertEquals("user1", props.get(Constants.USERNAME)); + assertEquals("pass1", props.get(Constants.PASSWORD)); + } + + public void http_protocol_mercurial_repo() throws VcsException { + VcsUrl url = new VcsUrl("http://hg.jetbrains.org/hg/mercurial/", new Credentials("user1", "pass1")); + Map<String, String> props = myUrlSupport.convertToVcsRootProperties(url); + assertNotNull(props); + + assertEquals("http://hg.jetbrains.org/hg/mercurial/", props.get(Constants.REPOSITORY_PROP)); + assertEquals("user1", props.get(Constants.USERNAME)); + assertEquals("pass1", props.get(Constants.PASSWORD)); + } + + public void http_protocol_svn_repo() throws VcsException { + VcsUrl url = new VcsUrl("http://svn.jetbrains.org/teamcity/plugins/xml-tests-reporting/trunk"); + Map<String, String> props = myUrlSupport.convertToVcsRootProperties(url); + assertNull(props); + } +}
--- a/mercurial-tests/src/testng.xml Thu Nov 21 17:27:45 2013 +0400 +++ b/mercurial-tests/src/testng.xml Sun Nov 24 17:22:43 2013 +0100 @@ -36,6 +36,7 @@ <class name="jetbrains.buildServer.buildTriggers.vcs.mercurial.TagsTest"/> <class name="jetbrains.buildServer.buildTriggers.vcs.mercurial.CommitsInfoBuilderSupportTest"/> <class name="jetbrains.buildServer.buildTriggers.vcs.mercurial.MercurialModificationInfoBuilderTest"/> + <class name="jetbrains.buildServer.buildTriggers.vcs.mercurial.MercurialUrlSupportTest"/> </classes> </test> </suite>