diff --git a/src/main/java/com/sonyericsson/hudson/plugins/gerrit/trigger/hudsontrigger/events/PluginPatchsetCreatedEvent.java b/src/main/java/com/sonyericsson/hudson/plugins/gerrit/trigger/hudsontrigger/events/PluginPatchsetCreatedEvent.java index f36d0007b..5ef1c17fc 100644 --- a/src/main/java/com/sonyericsson/hudson/plugins/gerrit/trigger/hudsontrigger/events/PluginPatchsetCreatedEvent.java +++ b/src/main/java/com/sonyericsson/hudson/plugins/gerrit/trigger/hudsontrigger/events/PluginPatchsetCreatedEvent.java @@ -225,6 +225,14 @@ public boolean shouldTriggerOn(GerritTriggeredEvent event) { if (excludeDrafts && ((PatchsetCreated)event).getPatchSet().isDraft()) { return false; } + if (StringUtils.isNotEmpty(commitMessageContainsRegEx)) { + if (commitMessagePattern == null) { + commitMessagePattern = Pattern.compile( + this.commitMessageContainsRegEx, Pattern.DOTALL | Pattern.MULTILINE); + } + String commitMessage = ((PatchsetCreated)event).getChange().getCommitMessage(); + return commitMessagePattern.matcher(commitMessage).find(); + } if (event instanceof ManualPatchsetCreated) { // always trigger build when the build is triggered manually return true; @@ -243,14 +251,6 @@ public boolean shouldTriggerOn(GerritTriggeredEvent event) { if (excludeWipState && ((PatchsetCreated)event).getChange().isWip()) { return false; } - if (StringUtils.isNotEmpty(commitMessageContainsRegEx)) { - if (commitMessagePattern == null) { - commitMessagePattern = Pattern.compile( - this.commitMessageContainsRegEx, Pattern.DOTALL | Pattern.MULTILINE); - } - String commitMessage = ((PatchsetCreated)event).getChange().getCommitMessage(); - return commitMessagePattern.matcher(commitMessage).find(); - } return true; } diff --git a/src/test/java/com/sonyericsson/hudson/plugins/gerrit/trigger/hudsontrigger/event/PluginPatchsetCreatedEventTest.java b/src/test/java/com/sonyericsson/hudson/plugins/gerrit/trigger/hudsontrigger/event/PluginPatchsetCreatedEventTest.java index 6140b0150..1a4490915 100644 --- a/src/test/java/com/sonyericsson/hudson/plugins/gerrit/trigger/hudsontrigger/event/PluginPatchsetCreatedEventTest.java +++ b/src/test/java/com/sonyericsson/hudson/plugins/gerrit/trigger/hudsontrigger/event/PluginPatchsetCreatedEventTest.java @@ -1,15 +1,15 @@ package com.sonyericsson.hudson.plugins.gerrit.trigger.hudsontrigger.event; -import static org.junit.Assert.assertFalse; -import static org.junit.Assert.assertTrue; - -import org.junit.Test; - +import com.sonyericsson.hudson.plugins.gerrit.trigger.events.ManualPatchsetCreated; import com.sonyericsson.hudson.plugins.gerrit.trigger.hudsontrigger.events.PluginPatchsetCreatedEvent; import com.sonymobile.tools.gerrit.gerritevents.dto.GerritChangeKind; import com.sonymobile.tools.gerrit.gerritevents.dto.attr.Change; import com.sonymobile.tools.gerrit.gerritevents.dto.attr.PatchSet; import com.sonymobile.tools.gerrit.gerritevents.dto.events.PatchsetCreated; +import org.junit.Test; + +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertTrue; /** * Tests for {@link PluginPatchsetCreatedEvent}. @@ -131,4 +131,49 @@ public void commitMessageRegExCheck() { pluginPatchsetCreatedEvent.setCommitMessageContainsRegEx("MY_THING"); assertFalse(pluginPatchsetCreatedEvent.shouldTriggerOn(patchsetCreated)); } + /** + * Test that it should, or should not, fire if the commit message matches a regular expression. + */ + @Test + public void commitMessageRegExCheckManualPatchSetCreated() { + PluginPatchsetCreatedEvent pluginPatchsetCreatedEvent = + new PluginPatchsetCreatedEvent(); + ManualPatchsetCreated patchsetCreated = new ManualPatchsetCreated(); + patchsetCreated.setPatchset(new PatchSet()); + StringBuilder commitMessage = new StringBuilder(); + commitMessage.append("This is a summary\n"); + commitMessage.append("\n"); + commitMessage.append("This is my description.\n"); + commitMessage.append("\n"); + commitMessage.append("Issue: JENKINS-64091\n"); + Change change = new Change(); + change.setCommitMessage(commitMessage.toString()); + patchsetCreated.setChange(change); + + // Commit Message regular expression set to null + pluginPatchsetCreatedEvent.setCommitMessageContainsRegEx(null); + assertTrue(pluginPatchsetCreatedEvent.shouldTriggerOn(patchsetCreated)); + + // Commit message Regular expression is an empty string + pluginPatchsetCreatedEvent.setCommitMessageContainsRegEx(""); + assertTrue(pluginPatchsetCreatedEvent.shouldTriggerOn(patchsetCreated)); + + // Commit message Regular expression matches + pluginPatchsetCreatedEvent.setCommitMessageContainsRegEx("JENKINS"); + assertTrue(pluginPatchsetCreatedEvent.shouldTriggerOn(patchsetCreated)); + + // Commit message Regular expression matches + pluginPatchsetCreatedEvent.setCommitMessageContainsRegEx("Issue:.*JENKINS.*"); + assertTrue(pluginPatchsetCreatedEvent.shouldTriggerOn(patchsetCreated)); + + // Commit message Regular expression does not match + pluginPatchsetCreatedEvent.setCommitMessageContainsRegEx("Issue:.*MY_THING.*"); + boolean result = pluginPatchsetCreatedEvent.shouldTriggerOn(patchsetCreated); + assertFalse(result); + + // Commit message Regular expression does not match + pluginPatchsetCreatedEvent.setCommitMessageContainsRegEx("MY_THING"); + assertFalse(pluginPatchsetCreatedEvent.shouldTriggerOn(patchsetCreated)); + } + }