From 09913e50b6f0f3817e67805289ead66dc013f14e Mon Sep 17 00:00:00 2001 From: Marcin Grzejszczak Date: Thu, 20 Jul 2017 16:11:26 +0200 Subject: [PATCH] fix #34; closing numeric milestones for GA only --- .../release/internal/git/MilestoneCloser.java | 3 +- .../internal/git/MilestoneCloserTests.java | 37 +++++++++++++++---- 2 files changed, 32 insertions(+), 8 deletions(-) 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 0a76bce8..7b3824ff 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 @@ -67,7 +67,8 @@ class MilestoneCloser { } private String numericVersion(String version) { - return version.substring(0, version.lastIndexOf(".")); + return version.contains("RELEASE") ? + version.substring(0, version.lastIndexOf(".")) : ""; } String milestoneTitle(Milestone.Smart milestone) throws IOException { 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 438c6265..1b8e67a9 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 @@ -47,13 +47,13 @@ public class MilestoneCloserTests { }; repo.milestones().create("0.2.0.BUILD-SNAPSHOT"); - closer.closeMilestone(sleuthProject()); + closer.closeMilestone(nonGaSleuthProject()); 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 { + public void should_close_milestone_when_the_milestone_contains_numeric_version_only_and_version_is_ga() throws IOException { MilestoneCloser closer = new MilestoneCloser(this.github, withToken()) { @Override String org() { return repo.coordinates().user(); @@ -66,12 +66,35 @@ public class MilestoneCloserTests { }; repo.milestones().create("0.2.0"); - closer.closeMilestone(sleuthProject()); + closer.closeMilestone(gaSleuthProject()); then(this.capture.toString()).doesNotContain("No matching milestone was found"); } - private ProjectVersion sleuthProject() { + private ProjectVersion gaSleuthProject() { + return new ProjectVersion("spring-cloud-sleuth", "0.2.0.RELEASE"); + } + + @Test + public void should_not_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(nonGaSleuthProject()); + + then(this.capture.toString()).contains("No matching milestone was found"); + } + + private ProjectVersion nonGaSleuthProject() { return new ProjectVersion("spring-cloud-sleuth", "0.2.0.BUILD-SNAPSHOT"); } @@ -89,7 +112,7 @@ public class MilestoneCloserTests { }; repo.milestones().create("v0.2.0.BUILD-SNAPSHOT"); - closer.closeMilestone(sleuthProject()); + closer.closeMilestone(nonGaSleuthProject()); then(this.capture.toString()).contains("No matching milestone was found"); } @@ -107,7 +130,7 @@ public class MilestoneCloserTests { }; repo.milestones().create("v0.2.0.BUILD-SNAPSHOT"); - thenThrownBy(() -> closer.closeMilestone(sleuthProject())) + thenThrownBy(() -> closer.closeMilestone(nonGaSleuthProject())) .isInstanceOf(IllegalStateException.class) .hasMessageContaining("foo"); } @@ -125,7 +148,7 @@ public class MilestoneCloserTests { public void should_throw_exception_when_no_token_was_passed() { MilestoneCloser closer = new MilestoneCloser(new ReleaserProperties()); - thenThrownBy(() -> closer.closeMilestone(sleuthProject())) + thenThrownBy(() -> closer.closeMilestone(nonGaSleuthProject())) .isInstanceOf(IllegalArgumentException.class) .hasMessageContaining("You have to pass Github OAuth token for milestone closing to be operational"); }