Skip to content

Commit 8c88916

Browse files
authored
Merge pull request #45 from jeffret-b/checkIsValid
Use new isValid() API for ParameterDefinition.
2 parents 9ca388a + be6b42f commit 8c88916

File tree

2 files changed

+7
-8
lines changed

2 files changed

+7
-8
lines changed

src/main/java/org/jenkinsci/plugins/workflow/support/steps/build/BuildTriggerStepExecution.java

+6-7
Original file line numberDiff line numberDiff line change
@@ -170,13 +170,7 @@ private List<ParameterValue> completeDefaultParameters(List<ParameterValue> para
170170
}
171171
} else {
172172
String description = Util.fixNull(pDef.getDescription());
173-
if (pDef instanceof ChoiceParameterDefinition) {
174-
ParameterValue pv = allParameters.get(pDef.getName());
175-
if (!((ChoiceParameterDefinition)pDef).getChoices().contains(pv.getValue())) {
176-
throw new AbortException("Value for choice parameter '" + pDef.getName() + "' is '" + pv.getValue() + "', "
177-
+ "but valid choices are " + ((ChoiceParameterDefinition)pDef).getChoices());
178-
}
179-
} else if (pDef instanceof SimpleParameterDefinition && !(pDef instanceof StringParameterDefinition)) {
173+
if (pDef instanceof SimpleParameterDefinition && !(pDef instanceof StringParameterDefinition) && !(pDef instanceof ChoiceParameterDefinition)) {
180174
// c.f. https://github.com/jenkinsci/parameterized-trigger-plugin/blob/633587c4b0ae027175c738b3a2f46554a672f330/src/main/java/hudson/plugins/parameterizedtrigger/ProjectSpecificParameterValuesActionTransform.java
181175
ParameterValue pv = allParameters.get(pDef.getName());
182176
if (pv instanceof StringParameterValue) {
@@ -192,6 +186,11 @@ private List<ParameterValue> completeDefaultParameters(List<ParameterValue> para
192186
allParameters.put(pDef.getName(), convertedValue);
193187
}
194188
}
189+
ParameterValue pv = allParameters.get(pDef.getName());
190+
if (!pDef.isValid(pv)) {
191+
throw new AbortException("Invalid parameter value: " + pv);
192+
}
193+
195194
// TODO: Should we try to detect some unconvertible cases and fail here instead of allowing it?
196195
// For example, someone passing BooleanParameterValue for a PasswordParameterDefinition?
197196

src/test/java/org/jenkinsci/plugins/workflow/support/steps/build/BuildTriggerStepTest.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -698,7 +698,7 @@ public void invalidChoiceParameterValue() throws Exception {
698698

699699
WorkflowJob us = j.jenkins.createProject(WorkflowJob.class, "us");
700700
us.setDefinition(new CpsFlowDefinition("build job: 'ds', parameters: [string(name: 'letter', value: 'c')]\n", true));
701-
j.assertLogContains("Value for choice parameter 'letter' is 'c', but valid choices are [a, b]",
701+
j.assertLogContains("Invalid parameter value: (StringParameterValue) letter='c'",
702702
j.assertBuildStatus(Result.FAILURE, us.scheduleBuild2(0)));
703703
}
704704

0 commit comments

Comments
 (0)