Skip to content

Commit 9df28c7

Browse files
committed
added ignoreTypeInStatusName and tests
1 parent 8768b51 commit 9df28c7

File tree

5 files changed

+89
-7
lines changed

5 files changed

+89
-7
lines changed

src/main/java/io/jenkins/plugins/gitlabbranchsource/BuildStatusNameCustomPartTrait.java

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ public class BuildStatusNameCustomPartTrait extends SCMSourceTrait {
1616
private String buildStatusNameCustomPart = "";
1717

1818
private boolean buildStatusNameOverwrite;
19+
private boolean ignoreTypeInStatusName;
1920

2021
/**
2122
* Constructor for stapler.
@@ -38,12 +39,18 @@ public void setBuildStatusNameOverwrite(@NonNull Boolean buildStatusNameOverwrit
3839
this.buildStatusNameOverwrite = buildStatusNameOverwrite;
3940
}
4041

42+
@DataBoundSetter
43+
public void setIgnoreTypeInStatusName(@NonNull Boolean ignoreTypeInStatusName) {
44+
this.ignoreTypeInStatusName = ignoreTypeInStatusName;
45+
}
46+
4147
@Override
4248
protected void decorateContext(SCMSourceContext<?, ?> context) {
4349
if (context instanceof GitLabSCMSourceContext) {
4450
GitLabSCMSourceContext ctx = (GitLabSCMSourceContext) context;
4551
ctx.withBuildStatusNameCustomPart(getBuildStatusNameCustomPart());
4652
ctx.withBuildStatusNameOverwrite(getBuildStatusNameOverwrite());
53+
ctx.withIgnoreTypeInStatusName(getIgnoreTypeInStatusName());
4754
}
4855
}
4956

@@ -62,7 +69,18 @@ public String getBuildStatusNameCustomPart() {
6269
*
6370
* @return build status name overwrite option
6471
*/
65-
public boolean getBuildStatusNameOverwrite() { return buildStatusNameOverwrite; }
72+
public boolean getBuildStatusNameOverwrite() {
73+
return buildStatusNameOverwrite;
74+
}
75+
76+
/**
77+
* Getter method for the build status name overwrite
78+
*
79+
* @return build status name overwrite option
80+
*/
81+
public boolean getIgnoreTypeInStatusName() {
82+
return ignoreTypeInStatusName;
83+
}
6684

6785
/**
6886
* Our descriptor.

src/main/java/io/jenkins/plugins/gitlabbranchsource/GitLabSCMSourceContext.java

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,8 @@ public class GitLabSCMSourceContext
5353

5454
private boolean buildStatusNameOverwrite;
5555

56+
private boolean ignoreTypeInStatusName;
57+
5658
private boolean alwaysBuildMROpen = true;
5759

5860
private boolean alwaysBuildMRReOpen = true;
@@ -190,6 +192,10 @@ public boolean getBuildStatusNameOverwrite() {
190192
return buildStatusNameOverwrite;
191193
}
192194

195+
public boolean getIgnoreTypeInStatusName() {
196+
return ignoreTypeInStatusName;
197+
}
198+
193199
@NonNull
194200
public GitLabSCMSourceContext wantBranches(boolean include) {
195201
wantBranches = wantBranches || include;
@@ -302,6 +308,11 @@ public final GitLabSCMSourceContext withBuildStatusNameOverwrite(final Boolean b
302308
return this;
303309
}
304310

311+
public final GitLabSCMSourceContext withIgnoreTypeInStatusName(final Boolean ignoreTypeInStatusName) {
312+
this.ignoreTypeInStatusName = ignoreTypeInStatusName;
313+
return this;
314+
}
315+
305316
@NonNull
306317
@Override
307318
public GitLabSCMSourceRequest newRequest(@NonNull SCMSource source,

src/main/java/io/jenkins/plugins/gitlabbranchsource/helpers/GitLabPipelineStatusNotifier.java

Lines changed: 19 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -103,7 +103,7 @@ static String getStatusName(final GitLabSCMSourceContext sourceContext, final St
103103
if (revision instanceof BranchSCMRevision) {
104104
type = "branch";
105105
} else if (revision instanceof MergeRequestSCMRevision) {
106-
type = getMrBuildName((MergeRequestSCMRevision)revision);
106+
type = getMrBuildName((MergeRequestSCMRevision) revision);
107107
} else if (revision instanceof GitTagSCMRevision) {
108108
type = "tag";
109109
} else {
@@ -112,16 +112,31 @@ static String getStatusName(final GitLabSCMSourceContext sourceContext, final St
112112
+ revision.getClass().getName() + ", append" + type + " to status name");
113113
}
114114

115+
// Some comments regarding this implementation :
116+
// Old code was :
117+
// GITLAB_PIPELINE_STATUS_PREFIX + GITLAB_PIPELINE_STATUS_DELIMITER + (optional:
118+
// pipelinePrefix + GITLAB_PIPELINE_STATUS_DELIMITER) + type
119+
// New implementation:
120+
// 1- BuildStatusNameCustomPart empty : use default
121+
// GITLAB_PIPELINE_STATUS_PREFIX
122+
// 2- else: depending on BuildStatusNameOverwrite : use
123+
// BuildStatusNameCustomPart appended to GITLAB_PIPELINE_STATUS_PREFIX or use it
124+
// as is
125+
// 3- add type only if required (no ignoreTypeInStatusName)
126+
115127
String pipelinePrefix = sourceContext.getBuildStatusNameCustomPart().trim();
116128
if (!pipelinePrefix.isEmpty()) {
117-
pipelinePrefix = envVars.expand(pipelinePrefix) + GITLAB_PIPELINE_STATUS_DELIMITER;
129+
pipelinePrefix = envVars.expand(pipelinePrefix);
118130
if (!sourceContext.getBuildStatusNameOverwrite()) {
119131
pipelinePrefix = GITLAB_PIPELINE_STATUS_PREFIX + GITLAB_PIPELINE_STATUS_DELIMITER + pipelinePrefix;
120132
}
121133
} else {
122-
pipelinePrefix = GITLAB_PIPELINE_STATUS_PREFIX + GITLAB_PIPELINE_STATUS_DELIMITER;
134+
pipelinePrefix = GITLAB_PIPELINE_STATUS_PREFIX;
135+
}
136+
if (!sourceContext.getIgnoreTypeInStatusName()) {
137+
pipelinePrefix = pipelinePrefix + GITLAB_PIPELINE_STATUS_DELIMITER + type;
123138
}
124-
final String statusName = pipelinePrefix + type;
139+
final String statusName = pipelinePrefix;
125140
LOGGER.log(Level.FINEST, () -> "Retrieved status name is: " + statusName);
126141
return statusName;
127142
}

src/main/resources/io/jenkins/plugins/gitlabbranchsource/BuildStatusNameCustomPartTrait/config.jelly

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,4 +6,7 @@
66
<f:entry title="${%Overwrite full name}" field="buildStatusNameOverwrite">
77
<f:checkbox default="unchecked"/>
88
</f:entry>
9+
<f:entry title="${%Do not append type in status name}" field="ignoreTypeInStatusName">
10+
<f:checkbox default="unchecked"/>
11+
</f:entry>
912
</j:jelly>

src/test/java/io/jenkins/plugins/gitlabbranchsource/helpers/GitLabPipelineStatusNotifierTest.java

Lines changed: 37 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -40,12 +40,46 @@ public void should_set_branch_status_name() {
4040
+ "branch"));
4141
}
4242

43+
@Test
44+
public void should_set_branch_status_name_withBuildStatusNameCustomPart() {
45+
GitLabSCMSourceContext sourceContext = new GitLabSCMSourceContext(null, null);
46+
sourceContext.withBuildStatusNameCustomPart("CUSTOM");
47+
sourceContext.withBuildStatusNameOverwrite(false);
48+
49+
BranchSCMHead head = new BranchSCMHead("head");
50+
SCMRevision revision = new BranchSCMRevision(head, "hash");
51+
52+
String statusName = GitLabPipelineStatusNotifier.getStatusName(sourceContext, null, revision,
53+
new hudson.EnvVars());
54+
55+
assertThat(statusName, is(GitLabPipelineStatusNotifier.GITLAB_PIPELINE_STATUS_PREFIX
56+
+ GitLabPipelineStatusNotifier.GITLAB_PIPELINE_STATUS_DELIMITER
57+
+ "CUSTOM"
58+
+ GitLabPipelineStatusNotifier.GITLAB_PIPELINE_STATUS_DELIMITER
59+
+ "branch"));
60+
}
61+
62+
@Test
63+
public void should_set_branch_status_name_withIgnoreTypeInStatusName() {
64+
GitLabSCMSourceContext sourceContext = new GitLabSCMSourceContext(null, null);
65+
sourceContext.withIgnoreTypeInStatusName(true);
66+
67+
BranchSCMHead head = new BranchSCMHead("head");
68+
SCMRevision revision = new BranchSCMRevision(head, "hash");
69+
70+
String statusName = GitLabPipelineStatusNotifier.getStatusName(sourceContext, null, revision,
71+
new hudson.EnvVars());
72+
73+
assertThat(statusName, is(GitLabPipelineStatusNotifier.GITLAB_PIPELINE_STATUS_PREFIX));
74+
}
75+
4376
@Test
4477
public void should_set_merge_request_head_status_name() {
4578
GitLabSCMSourceContext sourceContext = new GitLabSCMSourceContext(null, null);
4679

4780
BranchSCMHead targetHead = new BranchSCMHead("target");
48-
MergeRequestSCMHead head = new MergeRequestSCMHead("head", 0, targetHead, ChangeRequestCheckoutStrategy.HEAD, null, null, null, null, null);
81+
MergeRequestSCMHead head = new MergeRequestSCMHead("head", 0, targetHead, ChangeRequestCheckoutStrategy.HEAD,
82+
null, null, null, null, null);
4983

5084
BranchSCMRevision target = new BranchSCMRevision(targetHead, "target-hash");
5185
BranchSCMRevision source = new BranchSCMRevision(new BranchSCMHead("source"), "source-hash");
@@ -64,7 +98,8 @@ public void should_set_merge_request_merge_status_name() {
6498
GitLabSCMSourceContext sourceContext = new GitLabSCMSourceContext(null, null);
6599

66100
BranchSCMHead targetHead = new BranchSCMHead("target");
67-
MergeRequestSCMHead head = new MergeRequestSCMHead("head", 0, targetHead, ChangeRequestCheckoutStrategy.MERGE, null, null, null, null, null);
101+
MergeRequestSCMHead head = new MergeRequestSCMHead("head", 0, targetHead, ChangeRequestCheckoutStrategy.MERGE,
102+
null, null, null, null, null);
68103

69104
BranchSCMRevision target = new BranchSCMRevision(targetHead, "target-hash");
70105
BranchSCMRevision source = new BranchSCMRevision(new BranchSCMHead("source"), "source-hash");

0 commit comments

Comments
 (0)