changeset 382:01f8d8c216b2

Merge branch remote-run/hg-detect-logging
author Dmitry Neverov <dmitry.neverov@jetbrains.com>
date Wed, 15 Feb 2012 16:31:31 +0400
parents 44a16c27bed6 (current diff) aaa105d2294d (diff)
children 852bea9949a8
files
diffstat 5 files changed, 42 insertions(+), 9 deletions(-) [+]
line wrap: on
line diff
--- a/mercurial-agent/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/HgDetector.java	Wed Feb 15 15:48:32 2012 +0400
+++ b/mercurial-agent/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/HgDetector.java	Wed Feb 15 16:31:31 2012 +0400
@@ -5,6 +5,7 @@
 import jetbrains.buildServer.agent.AgentLifeCycleListener;
 import jetbrains.buildServer.agent.BuildAgent;
 import jetbrains.buildServer.agent.BuildAgentConfiguration;
+import jetbrains.buildServer.buildTriggers.vcs.mercurial.command.ParseHgVersionException;
 import jetbrains.buildServer.buildTriggers.vcs.mercurial.command.VersionCommand;
 import jetbrains.buildServer.util.EventDispatcher;
 import jetbrains.buildServer.vcs.VcsException;
@@ -72,18 +73,33 @@
       if (isCompatible(version)) {
         return true;
       } else {
-        if (logWarnings)
-          LOG.warn("Mercurial version at path " + hgPath + " is " + version + ", required version is " + LEAST_SUPPORTED_VERSION + "+");
+        warn("Mercurial version at path " + hgPath + " is " + version + ", required version is " + LEAST_SUPPORTED_VERSION + "+", logWarnings);
         return false;
       }
+    } catch (ParseHgVersionException e) {
+      warn("Cannot parse version of mercurial at '" + hgPath + "'", e, logWarnings);
+      return false;
     } catch (VcsException e) {
-      if (logWarnings)
-        LOG.warn("Error while trying to get hg version, hg path " + hgPath + ", error: " + e.getMessage());
+      warn("Error while trying to get hg version, hg path: " + hgPath, e, logWarnings);
       return false;
     }
   }
 
 
+  private void warn(@NotNull final String msg, final boolean logWarnings) {
+    if (logWarnings)
+      LOG.warn(msg);
+    else if (LOG.isDebugEnabled())
+      LOG.debug(msg);
+  }
+
+  private void warn(@NotNull final String msg, @NotNull final Throwable t, final boolean logWarnings) {
+    if (logWarnings)
+      LOG.warn(msg, t);
+    else if (LOG.isDebugEnabled())
+      LOG.debug(msg, t);
+  }
+
   private boolean isCompatible(@NotNull final HgVersion version) {
     return version.isEqualsOrGreaterThan(LEAST_SUPPORTED_VERSION);
   }
--- a/mercurial-common/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/HgVersion.java	Wed Feb 15 15:48:32 2012 +0400
+++ b/mercurial-common/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/HgVersion.java	Wed Feb 15 16:31:31 2012 +0400
@@ -1,5 +1,6 @@
 package jetbrains.buildServer.buildTriggers.vcs.mercurial;
 
+import jetbrains.buildServer.buildTriggers.vcs.mercurial.command.ParseHgVersionException;
 import org.jetbrains.annotations.NotNull;
 
 /**
@@ -21,10 +22,10 @@
   }
 
 
-  public static HgVersion parse(@NotNull final String version) {
+  public static HgVersion parse(@NotNull final String version) throws ParseHgVersionException {
     Parser p = new Parser(version);
     if (!p.skipString(PREFIX))
-      throw new IllegalArgumentException("Incorrect version format: " + version);
+      throw new ParseHgVersionException(version);
     int major = p.readInt();
     p.skipString(".");
     int minor = p.readInt();
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mercurial-common/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/command/ParseHgVersionException.java	Wed Feb 15 16:31:31 2012 +0400
@@ -0,0 +1,15 @@
+package jetbrains.buildServer.buildTriggers.vcs.mercurial.command;
+
+import jetbrains.buildServer.vcs.VcsException;
+import org.jetbrains.annotations.NotNull;
+
+/**
+ * @author dmitry.neverov
+ */
+public class ParseHgVersionException extends VcsException {
+
+  public ParseHgVersionException(@NotNull String version) {
+    super("Cannot parse version '" + version + "'");
+  }
+
+}
--- a/mercurial-common/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/command/VersionCommand.java	Wed Feb 15 15:48:32 2012 +0400
+++ b/mercurial-common/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/command/VersionCommand.java	Wed Feb 15 16:31:31 2012 +0400
@@ -22,7 +22,7 @@
   }
 
 
-  public HgVersion execute() throws VcsException {
+  public HgVersion execute() throws VcsException, ParseHgVersionException {
     GeneralCommandLine cli = createCommandLine();
     cli.addParameter("version");
     cli.addParameter("--quiet");
--- a/mercurial-tests/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/HgVersionTest.java	Wed Feb 15 15:48:32 2012 +0400
+++ b/mercurial-tests/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/HgVersionTest.java	Wed Feb 15 16:31:31 2012 +0400
@@ -1,5 +1,6 @@
 package jetbrains.buildServer.buildTriggers.vcs.mercurial;
 
+import jetbrains.buildServer.buildTriggers.vcs.mercurial.command.ParseHgVersionException;
 import junit.framework.TestCase;
 import org.jetbrains.annotations.NotNull;
 import org.testng.annotations.Test;
@@ -10,14 +11,14 @@
 @Test
 public class HgVersionTest extends TestCase {
 
-  public void test_parse() {
+  public void test_parse() throws ParseHgVersionException {
     checkParseCorrectly("Mercurial Distributed SCM (version 1.7.1+11-cc4e13c92dfa)", "1.7.1");
     checkParseCorrectly("Mercurial Distributed SCM (version 1.7)", "1.7.0");
     checkParseCorrectly("Mercurial Distributed SCM (version 1.5.2)", "1.5.2");
   }
 
 
-  private void checkParseCorrectly(@NotNull String versionToParse, @NotNull String expected) {
+  private void checkParseCorrectly(@NotNull String versionToParse, @NotNull String expected) throws ParseHgVersionException {
     assertEquals(expected, HgVersion.parse(versionToParse).toString());
   }