Skip to content

Commit 8ec69c7

Browse files
jbprattYaraslauSupanitskigountharkrisstern
authored
Fix/merge request hooks behavior (#1319)
* Rename Action closed to close: State - closed, Action - close * Fix logic for close and closed MR * Fix logic for update action into MR and flag never we set it on 1st place because the more important type of hook than flag approved or not. Also update action often came with opened state. * Update tests * Fix merge handler tests with never rebuild feature Signed-off-by: Brady Pratt <[email protected]> --------- Signed-off-by: Brady Pratt <[email protected]> Co-authored-by: Yaraslau Supanitski <[email protected]> Co-authored-by: Bruno Verachten <[email protected]> Co-authored-by: Kris Stern <[email protected]>
1 parent ef3356d commit 8ec69c7

File tree

3 files changed

+43
-10
lines changed

3 files changed

+43
-10
lines changed

Diff for: src/main/java/com/dabsquared/gitlabjenkins/gitlab/hook/model/Action.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -4,5 +4,5 @@
44
* @author Robin Müller
55
*/
66
public enum Action {
7-
open, update, approved, merge, closed, reopen
7+
open, update, approved, merge, close, reopen
88
}

Diff for: src/main/java/com/dabsquared/gitlabjenkins/trigger/handler/merge/MergeRequestHookTriggerHandlerFactory.java

+3-2
Original file line numberDiff line numberDiff line change
@@ -34,11 +34,12 @@ public static MergeRequestHookTriggerHandler newMergeRequestHookTriggerHandler(b
3434

3535
TriggerConfigChain chain = new TriggerConfigChain();
3636
chain
37+
.acceptOnlyIf(triggerOpenMergeRequest != TriggerOpenMergeRequest.never, of(State.opened, State.updated), of(Action.update))
3738
.acceptOnlyIf(triggerOnApprovedMergeRequest, null, of(Action.approved))
3839
.acceptIf(triggerOnMergeRequest, of(State.opened, State.reopened), null)
3940
.acceptIf(triggerOnAcceptedMergeRequest, null, of(Action.merge))
40-
.acceptIf(triggerOnClosedMergeRequest, null, of(Action.closed))
41-
.acceptIf(triggerOpenMergeRequest != TriggerOpenMergeRequest.never, of(State.updated), null)
41+
.acceptIf(triggerOnClosedMergeRequest, null, of(Action.close))
42+
.acceptIf(triggerOnClosedMergeRequest, of(State.closed), null)
4243
;
4344

4445
Set<String> labelsThatForcesBuildIfAddedSet = Stream.of(split(trimToEmpty(labelsThatForcesBuildIfAdded), ",")).collect(toSet());

Diff for: src/test/java/com/dabsquared/gitlabjenkins/trigger/handler/merge/MergeRequestHookTriggerHandlerImplTest.java

+39-7
Original file line numberDiff line numberDiff line change
@@ -80,13 +80,35 @@ public void mergeRequest_ciSkip() throws IOException, InterruptedException {
8080
}
8181

8282
@Test
83-
public void mergeRequest_build_when_opened() throws IOException, InterruptedException, GitAPIException, ExecutionException {
84-
MergeRequestHookTriggerHandler mergeRequestHookTriggerHandler = withConfig().build();
83+
public void mergeRequest_build_when_opened_with_source() throws IOException, InterruptedException, GitAPIException, ExecutionException {
84+
MergeRequestHookTriggerHandler mergeRequestHookTriggerHandler = withConfig()
85+
.setTriggerOpenMergeRequest(TriggerOpenMergeRequest.source)
86+
.build();
87+
OneShotEvent buildTriggered = doHandle(mergeRequestHookTriggerHandler, State.opened);
88+
89+
assertThat(buildTriggered.isSignaled(), is(true));
90+
}
91+
92+
@Test
93+
public void mergeRequest_build_when_opened_with_both() throws IOException, InterruptedException, GitAPIException, ExecutionException {
94+
MergeRequestHookTriggerHandler mergeRequestHookTriggerHandler = withConfig()
95+
.setTriggerOpenMergeRequest(TriggerOpenMergeRequest.source)
96+
.build();
8597
OneShotEvent buildTriggered = doHandle(mergeRequestHookTriggerHandler, State.opened);
8698

8799
assertThat(buildTriggered.isSignaled(), is(true));
88100
}
89101

102+
@Test
103+
public void mergeRequest_build_when_opened_with_never() throws IOException, InterruptedException, GitAPIException, ExecutionException {
104+
MergeRequestHookTriggerHandler mergeRequestHookTriggerHandler = withConfig()
105+
.setTriggerOpenMergeRequest(TriggerOpenMergeRequest.never)
106+
.build();
107+
OneShotEvent buildTriggered = doHandle(mergeRequestHookTriggerHandler, State.opened, Action.update);
108+
109+
assertThat(buildTriggered.isSignaled(), is(false));
110+
}
111+
90112
@Test
91113
public void mergeRequest_build_when_reopened() throws IOException, InterruptedException, GitAPIException, ExecutionException {
92114
MergeRequestHookTriggerHandler mergeRequestHookTriggerHandler = withConfig()
@@ -100,6 +122,7 @@ public void mergeRequest_build_when_reopened() throws IOException, InterruptedEx
100122
public void mergeRequest_build_when_opened_with_approved_action_enabled() throws IOException, InterruptedException, GitAPIException, ExecutionException {
101123
MergeRequestHookTriggerHandler mergeRequestHookTriggerHandler = withConfig()
102124
.setTriggerOnApprovedMergeRequest(true)
125+
.setTriggerOpenMergeRequest(TriggerOpenMergeRequest.source)
103126
.build();
104127
OneShotEvent buildTriggered = doHandle(mergeRequestHookTriggerHandler, State.opened);
105128

@@ -133,7 +156,17 @@ public void mergeRequest_build_when_closed() throws IOException, InterruptedExce
133156
MergeRequestHookTriggerHandler mergeRequestHookTriggerHandler = withConfig()
134157
.setTriggerOnClosedMergeRequest(true)
135158
.build();
136-
OneShotEvent buildTriggered = doHandle(mergeRequestHookTriggerHandler, State.closed, Action.closed);
159+
OneShotEvent buildTriggered = doHandle(mergeRequestHookTriggerHandler, State.closed, Action.close);
160+
161+
assertThat(buildTriggered.isSignaled(), is(true));
162+
}
163+
164+
@Test
165+
public void mergeRequest_build_when_close() throws IOException, InterruptedException, GitAPIException, ExecutionException {
166+
MergeRequestHookTriggerHandler mergeRequestHookTriggerHandler = withConfig()
167+
.setTriggerOnClosedMergeRequest(true)
168+
.build();
169+
OneShotEvent buildTriggered = doHandle(mergeRequestHookTriggerHandler, Action.close);
137170

138171
assertThat(buildTriggered.isSignaled(), is(true));
139172
}
@@ -144,7 +177,7 @@ public void mergeRequest_build_when_closed_with_actions_enabled() throws IOExcep
144177
.setTriggerOnClosedMergeRequest(true)
145178
.setTriggerOnApprovedMergeRequest(true)
146179
.build();
147-
OneShotEvent buildTriggered = doHandle(mergeRequestHookTriggerHandler, State.closed, Action.closed);
180+
OneShotEvent buildTriggered = doHandle(mergeRequestHookTriggerHandler, State.closed, Action.close);
148181

149182
assertThat(buildTriggered.isSignaled(), is(true));
150183
}
@@ -205,7 +238,6 @@ public void mergeRequest_do_not_build_when_closed() throws IOException, Interrup
205238
@Test
206239
public void mergeRequest_do_not_build_for_updated_state_and_approved_action_when_both_not_enabled() throws IOException, InterruptedException, GitAPIException {
207240
MergeRequestHookTriggerHandler mergeRequestHookTriggerHandler = withConfig()
208-
.setTriggerOpenMergeRequest(TriggerOpenMergeRequest.source)
209241
.build();
210242
OneShotEvent buildTriggered = doHandle(mergeRequestHookTriggerHandler, State.updated, Action.approved);
211243

@@ -336,7 +368,7 @@ public void mergeRequest_build_only_when_state_modified()throws IOException, Int
336368
MergeRequestHookTriggerHandler mergeRequestHookTriggerHandler = withConfig()
337369
.setTriggerOnAcceptedMergeRequest(true)
338370
.setTriggerOnClosedMergeRequest(true)
339-
.setTriggerOpenMergeRequest(TriggerOpenMergeRequest.never)
371+
.setTriggerOpenMergeRequest(TriggerOpenMergeRequest.source)
340372
.build();
341373
Git.init().setDirectory(tmp.getRoot()).call();
342374
tmp.newFile("test");
@@ -483,7 +515,7 @@ public boolean perform(AbstractBuild<?, ?> build, Launcher launcher, BuildListen
483515
private MergeRequestObjectAttributesBuilder defaultMergeRequestObjectAttributes() {
484516
return mergeRequestObjectAttributes()
485517
.withIid(1)
486-
.withAction(Action.update)
518+
.withAction(Action.open)
487519
.withState(State.opened)
488520
.withTitle("test")
489521
.withTargetProjectId(1)

0 commit comments

Comments
 (0)