From f8219305a3cc42fb6b7191eebbe7c3e98cb4b7c3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ren=C3=A9=20Pfeuffer?= Date: Thu, 12 Nov 2020 13:46:36 +0100 Subject: [PATCH] Strip 'Error:' from hg error messages --- .../sonia/scm/repository/spi/HgModifyCommand.java | 7 ++++++- .../scm/repository/spi/HgModifyCommandTest.java | 15 +++++++++++++++ 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/scm-plugins/scm-hg-plugin/src/main/java/sonia/scm/repository/spi/HgModifyCommand.java b/scm-plugins/scm-hg-plugin/src/main/java/sonia/scm/repository/spi/HgModifyCommand.java index 4b1ce27d38..302bea6d4f 100644 --- a/scm-plugins/scm-hg-plugin/src/main/java/sonia/scm/repository/spi/HgModifyCommand.java +++ b/scm-plugins/scm-hg-plugin/src/main/java/sonia/scm/repository/spi/HgModifyCommand.java @@ -39,9 +39,12 @@ import java.io.File; import java.io.IOException; import java.nio.file.Path; import java.util.List; +import java.util.regex.Pattern; public class HgModifyCommand implements ModifyCommand { + static final Pattern HG_MESSAGE_PATTERN = Pattern.compile(".*\\[SCM\\](?: Error:)? (.*)"); + private HgCommandContext context; private final HgWorkingCopyFactory workingCopyFactory; @@ -115,7 +118,9 @@ public class HgModifyCommand implements ModifyCommand { workingCopyFactory.configure(pullCommand); return pullCommand.execute(workingCopy.getDirectory().getAbsolutePath()); } catch (ExecutionException e) { - throw IntegrateChangesFromWorkdirException.forMessage(context.getScmRepository(), e.getMessage()); + throw IntegrateChangesFromWorkdirException + .withPattern(HG_MESSAGE_PATTERN) + .forMessage(context.getScmRepository(), e.getMessage()); } catch (IOException e) { throw new InternalRepositoryException(context.getScmRepository(), String.format("Could not pull modify changes from working copy to central repository for branch %s", request.getBranch()), diff --git a/scm-plugins/scm-hg-plugin/src/test/java/sonia/scm/repository/spi/HgModifyCommandTest.java b/scm-plugins/scm-hg-plugin/src/test/java/sonia/scm/repository/spi/HgModifyCommandTest.java index d55005f675..a2323f69e7 100644 --- a/scm-plugins/scm-hg-plugin/src/test/java/sonia/scm/repository/spi/HgModifyCommandTest.java +++ b/scm-plugins/scm-hg-plugin/src/test/java/sonia/scm/repository/spi/HgModifyCommandTest.java @@ -42,6 +42,7 @@ import sonia.scm.web.HgRepositoryEnvironmentBuilder; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; +import java.util.regex.Matcher; import static org.assertj.core.api.Assertions.assertThat; @@ -186,4 +187,18 @@ public class HgModifyCommandTest extends AbstractHgCommandTestBase { public void shouldThrowNoChangesMadeExceptionIfEmptyLocalChangesetAfterRequest() { hgModifyCommand.execute(new ModifyCommandRequest()); } + + @Test + public void shouldExtractSimpleMessage() { + Matcher matcher = HgModifyCommand.HG_MESSAGE_PATTERN.matcher("[SCM] This is a simple message"); + matcher.matches(); + assertThat(matcher.group(1)).isEqualTo("This is a simple message"); + } + + @Test + public void shouldExtractErrorMessage() { + Matcher matcher = HgModifyCommand.HG_MESSAGE_PATTERN.matcher("[SCM] Error: This is an error message"); + matcher.matches(); + assertThat(matcher.group(1)).isEqualTo("This is an error message"); + } }