diff --git a/src/main/java/hudson/scm/listtagsparameter/ListSubversionTagsParameterDefinition.java b/src/main/java/hudson/scm/listtagsparameter/ListSubversionTagsParameterDefinition.java index 79335335c..31cbcee55 100644 --- a/src/main/java/hudson/scm/listtagsparameter/ListSubversionTagsParameterDefinition.java +++ b/src/main/java/hudson/scm/listtagsparameter/ListSubversionTagsParameterDefinition.java @@ -138,6 +138,9 @@ public ParameterValue createValue(StaplerRequest req, JSONObject formData) { @Override public ParameterValue getDefaultParameterValue() { if (StringUtils.isEmpty(this.defaultValue)) { + if ( isInt(this.maxTags) && Integer.parseInt(this.maxTags) == 1 ){ + return new ListSubversionTagsParameterValue(getName(), getTagsDir(), this.getTags().get(0)); + } return null; } return new ListSubversionTagsParameterValue(getName(), getTagsDir(), this.defaultValue); diff --git a/src/test/java/hudson/scm/listtagsparameter/ListSubversionTagsParameterDefinitionTest.java b/src/test/java/hudson/scm/listtagsparameter/ListSubversionTagsParameterDefinitionTest.java index 45d102fc1..3498585ab 100644 --- a/src/test/java/hudson/scm/listtagsparameter/ListSubversionTagsParameterDefinitionTest.java +++ b/src/test/java/hudson/scm/listtagsparameter/ListSubversionTagsParameterDefinitionTest.java @@ -60,4 +60,40 @@ public void handleDirEntry(SVNDirEntry dirEntry) throws SVNException { } }); } + + + /** + * Make sure we are giving the tag matched when default empty and maxTags is 1. + */ + @Bug(14155) + public void testDefaultFromTags() throws Exception { + Proc p = runSvnServe(getClass().getResource("JENKINS-14155.zip")); + try { + ListSubversionTagsParameterDefinition def = new ListSubversionTagsParameterDefinition("FOO", "svn://localhost/tags/" + , "(.*)" // tagsFilter + , "" // defaultValue => Needs to be empty + , "1" // maxTags => Needs to set to one + , true // reverseByDate, so we will get the most recent item + , false + , null); + List tags = def.getTags(); + List expected = Arrays.asList("d"); + + if (!expected.equals(tags)) { + // retry. Maybe the svnserve just didn't start up correctly, yet + System.out.println("First attempt failed. Retrying."); + Thread.sleep(300L); + tags = def.getTags(); + if (!expected.equals(tags)) { + dumpRepositoryContents(); + + Assert.fail("Expected " + expected + ", but got " + tags); + } + } + + } finally { + p.kill(); + } + + } } diff --git a/src/test/resources/hudson/scm/listtagsparameter/JENKINS-14155.zip b/src/test/resources/hudson/scm/listtagsparameter/JENKINS-14155.zip new file mode 100644 index 000000000..d62aa0f5b Binary files /dev/null and b/src/test/resources/hudson/scm/listtagsparameter/JENKINS-14155.zip differ