changeset 960:1aaf8dba4072

fixing TW-48788 for the case of SSH url
author Pavel.Sher
date Tue, 21 Feb 2017 18:22:37 +0100
parents 9e67a769bcc1
children 075f3521bd02
files mercurial-server/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/MercurialUrlSupport.java mercurial-tests/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/MercurialUrlSupportTest.java
diffstat 2 files changed, 25 insertions(+), 14 deletions(-) [+]
line wrap: on
line diff
--- a/mercurial-server/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/MercurialUrlSupport.java	Tue Feb 21 18:14:54 2017 +0100
+++ b/mercurial-server/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/MercurialUrlSupport.java	Tue Feb 21 18:22:37 2017 +0100
@@ -46,24 +46,29 @@
     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;
-    }
+    if (fetchUrl.startsWith("ssh://hg@bitbucket.org")) {
+      testRequired = false; // definitely Mercurial
+    } else {
+      MavenVcsUrl mavenUrl = url.asMavenVcsUrl();
+      if (mavenUrl != null && !"hg".equals(mavenUrl.getProviderSchema())) {
+        return null;
+      }
 
-    if (fetchUrl.startsWith("http")) {
-      // check URL by sending HTTP request
-      if (isMercurialRepository(fetchUrl, url.getCredentials())) {
+      if (mavenUrl != null) {
+        fetchUrl = mavenUrl.getProviderSpecificPart();
         testRequired = false;
       }
+
+      if (fetchUrl.startsWith("http")) {
+        // check URL by sending HTTP request
+        if (isMercurialRepository(fetchUrl, url.getCredentials())) {
+          testRequired = false;
+        }
+      }
     }
 
-    Map<String, String> res = new HashMap<String, String>(myVcsSupport.getDefaultVcsProperties());
+    Map<String, String> res = new HashMap<>(myVcsSupport.getDefaultVcsProperties());
     res.put(Constants.REPOSITORY_PROP, fetchUrl);
     Credentials credentials = url.getCredentials();
     if (credentials != null) {
--- a/mercurial-tests/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/MercurialUrlSupportTest.java	Tue Feb 21 18:14:54 2017 +0100
+++ b/mercurial-tests/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/MercurialUrlSupportTest.java	Tue Feb 21 18:22:37 2017 +0100
@@ -16,11 +16,9 @@
 
 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;
 
@@ -65,6 +63,14 @@
     assertEquals("pass1", props.get(Constants.PASSWORD));
   }
 
+  public void ssh_protocol_mercurial_repo() throws VcsException {
+    VcsUrl url = new VcsUrl("ssh://hg@bitbucket.org/user/repo");
+    Map<String, String> props = myUrlSupport.convertToVcsRootProperties(url);
+    assertNotNull(props);
+
+    assertEquals("ssh://hg@bitbucket.org/user/repo", props.get(Constants.REPOSITORY_PROP));
+  }
+
   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);