diff --git a/spring-cloud-release-tools-core/src/main/java/org/springframework/cloud/release/internal/git/MilestoneCloser.java b/spring-cloud-release-tools-core/src/main/java/org/springframework/cloud/release/internal/git/MilestoneCloser.java index 0eb71019..0a76bce8 100644 --- a/spring-cloud-release-tools-core/src/main/java/org/springframework/cloud/release/internal/git/MilestoneCloser.java +++ b/spring-cloud-release-tools-core/src/main/java/org/springframework/cloud/release/internal/git/MilestoneCloser.java @@ -49,7 +49,8 @@ class MilestoneCloser { for (Milestone milestone : milestones) { Milestone.Smart smartMilestone = new Milestone.Smart(milestone); try { - if (tagVersion.equals(milestoneTitle(smartMilestone))) { + String title = milestoneTitle(smartMilestone); + if (tagVersion.equals(title) || numericVersion(tagVersion).equals(title)) { log.info("Found a matching milestone - closing it"); smartMilestone.close(); matchingMilestone = true; @@ -65,6 +66,10 @@ class MilestoneCloser { } } + private String numericVersion(String version) { + return version.substring(0, version.lastIndexOf(".")); + } + String milestoneTitle(Milestone.Smart milestone) throws IOException { return milestone.title(); } diff --git a/spring-cloud-release-tools-core/src/test/java/org/springframework/cloud/release/internal/git/MilestoneCloserTests.java b/spring-cloud-release-tools-core/src/test/java/org/springframework/cloud/release/internal/git/MilestoneCloserTests.java index 9d6b9014..438c6265 100644 --- a/spring-cloud-release-tools-core/src/test/java/org/springframework/cloud/release/internal/git/MilestoneCloserTests.java +++ b/spring-cloud-release-tools-core/src/test/java/org/springframework/cloud/release/internal/git/MilestoneCloserTests.java @@ -48,6 +48,27 @@ public class MilestoneCloserTests { repo.milestones().create("0.2.0.BUILD-SNAPSHOT"); closer.closeMilestone(sleuthProject()); + + then(this.capture.toString()).doesNotContain("No matching milestone was found"); + } + + @Test + public void should_close_milestone_when_the_milestone_contains_numeric_version_only() throws IOException { + MilestoneCloser closer = new MilestoneCloser(this.github, withToken()) { + @Override String org() { + return repo.coordinates().user(); + } + + @Override String milestoneTitle(Milestone.Smart milestone) + throws IOException { + return "0.2.0"; + } + }; + repo.milestones().create("0.2.0"); + + closer.closeMilestone(sleuthProject()); + + then(this.capture.toString()).doesNotContain("No matching milestone was found"); } private ProjectVersion sleuthProject() {