Skip to content

Commit 3ccfc5e

Browse files
committed
Made comparison case insensitive, pointed this out in the help text
Added an extra test case for the case insensitive scenario
1 parent e17a7c9 commit 3ccfc5e

File tree

3 files changed

+38
-4
lines changed

3 files changed

+38
-4
lines changed

src/main/java/com/cloudbees/jenkins/GitHubPushTrigger.java

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,7 @@
5454
import java.util.Collection;
5555
import java.util.Collections;
5656
import java.util.Date;
57+
import java.util.HashSet;
5758
import java.util.List;
5859
import java.util.Objects;
5960
import java.util.Set;
@@ -105,18 +106,24 @@ public void onPost(final GitHubTriggerEvent event) {
105106
return; // nothing to do
106107
}
107108
if (useGitExcludedUsers) {
108-
Set<String> excludedUsers = null;
109+
Set<String> lowercaseExcludedUsers = new HashSet<>();
109110
if (job instanceof AbstractProject) {
110111
SCM scm = ((AbstractProject<?, ?>) job).getScm();
111112
if (scm instanceof GitSCM) {
112113
UserExclusion exclusions = ((GitSCM) scm).getExtensions().get(UserExclusion.class);
113114
if (exclusions != null) {
114-
excludedUsers = exclusions.getExcludedUsersNormalized();
115+
for (String userName: exclusions.getExcludedUsersNormalized()) {
116+
lowercaseExcludedUsers.add(userName.toLowerCase());
117+
}
115118
}
116119
}
117120
}
118121

119-
if (excludedUsers != null && excludedUsers.contains(event.getTriggeredByUser())) {
122+
String lowercaseTriggeredByUser = null;
123+
if (event.getTriggeredByUser() != null) {
124+
lowercaseTriggeredByUser = event.getTriggeredByUser().toLowerCase();
125+
}
126+
if (lowercaseExcludedUsers != null && lowercaseExcludedUsers.contains(lowercaseTriggeredByUser)) {
120127
return; // user is excluded from triggering build
121128
}
122129
}

src/main/resources/com/cloudbees/jenkins/GitHubPushTrigger/config.groovy

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,5 +22,5 @@ InlineWarning.setup({
2222
}
2323

2424
f.entry() {
25-
f.checkbox(title: _("Use Git excluded user list (\"Polling ignores commits from certain users\")"), field: "useGitExcludedUsers")
25+
f.checkbox(title: _("Use Git excluded user list (\"Polling ignores commits from certain users\", comparison is case insensitive)"), field: "useGitExcludedUsers")
2626
}

src/test/java/com/cloudbees/jenkins/GitHubPushTriggerTest.java

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -145,6 +145,33 @@ public void shouldSkipBuildIfExclusionEnabledWithMatchingUser() throws IOExcepti
145145
verify(spiedQueue, times(0)).execute(Mockito.any(Runnable.class));
146146
}
147147

148+
@Test
149+
public void shouldSkipBuildIfExclusionEnabledWithMatchingUserCaseInsensitive() throws IOException {
150+
SequentialExecutionQueue spiedQueue = addSpyToQueueField();
151+
152+
String matchingUserName = "userName".toLowerCase();
153+
FreeStyleProject project = jRule.createFreeStyleProject();
154+
GitHubPushTrigger trigger = new GitHubPushTrigger();
155+
trigger.setUseGitExcludedUsers(true);
156+
trigger.start(project, false);
157+
project.addTrigger(trigger);
158+
GitSCM scm = new GitSCM("https://localhost/dummy.git");
159+
UserExclusion userExclusion = new UserExclusion("something" + System.lineSeparator() +
160+
matchingUserName.toUpperCase() + System.lineSeparator() +
161+
"somethingElse" + System.lineSeparator());
162+
scm.getExtensions().add(userExclusion);
163+
project.setScm(scm);
164+
165+
GitHubTriggerEvent event = GitHubTriggerEvent.create()
166+
.withTimestamp(System.currentTimeMillis())
167+
.withOrigin("origin")
168+
.withTriggeredByUser(matchingUserName)
169+
.build();
170+
trigger.onPost(event);
171+
172+
verify(spiedQueue, times(0)).execute(Mockito.any(Runnable.class));
173+
}
174+
148175
@Test
149176
public void shouldTriggerBuildIfExclusionEnabledWithNonMatchingUser() throws IOException {
150177
SequentialExecutionQueue spiedQueue = addSpyToQueueField();

0 commit comments

Comments
 (0)