diff --git a/spring-cloud-release-tools-core/src/main/java/org/springframework/cloud/release/internal/Releaser.java b/spring-cloud-release-tools-core/src/main/java/org/springframework/cloud/release/internal/Releaser.java index f3b02b6b..c1a16f36 100644 --- a/spring-cloud-release-tools-core/src/main/java/org/springframework/cloud/release/internal/Releaser.java +++ b/spring-cloud-release-tools-core/src/main/java/org/springframework/cloud/release/internal/Releaser.java @@ -55,6 +55,11 @@ public class Releaser { } public void rollbackReleaseVersion(File project, ProjectVersion originalVersion, ProjectVersion changedVersion) { + ProjectVersion version = new ProjectVersion(project); + if (version.isSnapshot()) { + log.info("\nCurrent pom contains snapshot version [{}]. Will not proceed with rollback", version.toString()); + return; + } this.projectGitUpdater.revertChangesIfApplicable(project, changedVersion); if (changedVersion.isRelease()) { this.projectBuilder.bumpVersions(originalVersion.bumpedVersion()); diff --git a/spring-cloud-release-tools-core/src/test/java/org/springframework/cloud/release/internal/ReleaserTests.java b/spring-cloud-release-tools-core/src/test/java/org/springframework/cloud/release/internal/ReleaserTests.java new file mode 100644 index 00000000..8983605a --- /dev/null +++ b/spring-cloud-release-tools-core/src/test/java/org/springframework/cloud/release/internal/ReleaserTests.java @@ -0,0 +1,46 @@ +package org.springframework.cloud.release.internal; + +import java.io.File; +import java.net.URI; +import java.net.URISyntaxException; + +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.mockito.InjectMocks; +import org.mockito.Mock; +import org.mockito.runners.MockitoJUnitRunner; +import org.springframework.cloud.release.internal.git.ProjectGitUpdater; +import org.springframework.cloud.release.internal.pom.ProjectPomUpdater; +import org.springframework.cloud.release.internal.project.ProjectBuilder; + +import static org.mockito.Mockito.verifyZeroInteractions; + +/** + * @author Marcin Grzejszczak + */ +@RunWith(MockitoJUnitRunner.class) +public class ReleaserTests { + + @Mock ProjectPomUpdater projectPomUpdater; + @Mock ProjectBuilder projectBuilder; + @Mock ProjectGitUpdater projectGitUpdater; + @InjectMocks Releaser releaser; + File pom; + + @Before + public void setup() throws URISyntaxException { + URI pomUri = ReleaserTests.class.getResource("/projects/project/pom.xml").toURI(); + this.pom = new File(pomUri); + } + + @Test + public void rollbackReleaseVersion() throws Exception { + this.releaser.rollbackReleaseVersion(this.pom, null, null); + + verifyZeroInteractions(this.projectPomUpdater); + verifyZeroInteractions(this.projectBuilder); + verifyZeroInteractions(this.projectGitUpdater); + } + +} \ No newline at end of file