diff --git a/spring-cloud-release-tools-core/src/main/java/org/springframework/cloud/release/internal/PomUpdater.java b/spring-cloud-release-tools-core/src/main/java/org/springframework/cloud/release/internal/PomUpdater.java index 7aa46f62..34cc7785 100644 --- a/spring-cloud-release-tools-core/src/main/java/org/springframework/cloud/release/internal/PomUpdater.java +++ b/spring-cloud-release-tools-core/src/main/java/org/springframework/cloud/release/internal/PomUpdater.java @@ -123,6 +123,7 @@ class PomUpdater { String rootProjectName = wrapper.projectName(); List changes = new ArrayList<>(sourceChanges); if (model.getParent() == null || StringUtils.isEmpty(model.getParent().getVersion())) { + log.debug("Can't set the value for parent... Will return {}", sourceChanges); return changes; } String parentGroupId = model.getParent().getGroupId(); @@ -140,7 +141,7 @@ class PomUpdater { } } if (oldVersion.equals(version)) { - log.debug("Won't update the version of [{}:{}] since you're already using the proper one", parentGroupId, parentArtifactId); + log.debug("Won't update the version of parent [{}:{}] since you're already using the proper one", parentGroupId, parentArtifactId); return changes; } log.info("Setting version of parent [{}] to [{}] for module [{}]", parentArtifactId, @@ -164,7 +165,7 @@ class PomUpdater { return changes; } if (oldVersion.equals(version)) { - log.debug("Won't update the version of [{}]:[{}] since you're already using the proper one", groupId, artifactId); + log.debug("Won't update the version of module [{}]:[{}] since you're already using the proper one", groupId, artifactId); return changes; } log.info("Setting [{}] version to [{}]", artifactId, version); @@ -172,6 +173,14 @@ class PomUpdater { return changes; } + private boolean relativePathIsSet(Model model) { + return model.getParent() != null && StringUtils.hasText(model.getParent().getRelativePath()); + } + + private String parentName(Model model) { + return model.getParent() != null ? model.getParent().getArtifactId() : ""; + } + private String groupId(Model model) { if (StringUtils.hasText(model.getGroupId())) { return model.getGroupId(); diff --git a/spring-cloud-release-tools-core/src/test/java/org/springframework/cloud/release/internal/PomUpdaterTests.java b/spring-cloud-release-tools-core/src/test/java/org/springframework/cloud/release/internal/PomUpdaterTests.java index 17e48c2f..88f2f484 100644 --- a/spring-cloud-release-tools-core/src/test/java/org/springframework/cloud/release/internal/PomUpdaterTests.java +++ b/spring-cloud-release-tools-core/src/test/java/org/springframework/cloud/release/internal/PomUpdaterTests.java @@ -28,6 +28,7 @@ import org.junit.Before; import org.junit.Rule; import org.junit.Test; import org.junit.rules.TemporaryFolder; +import org.springframework.boot.test.rule.OutputCapture; import org.springframework.util.FileSystemUtils; import static org.springframework.cloud.release.internal.VersionChangeAssertions.then; @@ -40,6 +41,7 @@ public class PomUpdaterTests { Versions versions = new Versions("0.0.1", "0.0.2", projects()); PomUpdater pomUpdater = new PomUpdater(); PomReader pomReader = new PomReader(); + @Rule public OutputCapture capture = new OutputCapture(); @Rule public TemporaryFolder tmp = new TemporaryFolder(); File temporaryFolder; @@ -86,7 +88,7 @@ public class PomUpdaterTests { File storedPom = this.pomUpdater.overwritePomIfDirty(model, this.versions, pomInTemp); - then(asString(originalPom)).isEqualTo(asString(storedPom)); + then(asString(storedPom)).isEqualTo(asString(originalPom)); } @Test @@ -98,7 +100,7 @@ public class PomUpdaterTests { File storedPom = this.pomUpdater.overwritePomIfDirty(model, this.versions, pomInTemp); - then(asString(originalPom)).isNotEqualTo(asString(storedPom)); + then(asString(storedPom)).isNotEqualTo(asString(originalPom)); Model overriddenPomModel = this.pomReader.readPom(storedPom); then(overriddenPomModel.getVersion()).isEqualTo("0.0.3.BUILD-SNAPSHOT"); } @@ -127,7 +129,7 @@ public class PomUpdaterTests { File storedPom = this.pomUpdater.overwritePomIfDirty(model, this.versions, pomInTemp); - then(asString(originalPom)).isNotEqualTo(asString(storedPom)); + then(asString(storedPom)).isNotEqualTo(asString(originalPom)); Model overriddenPomModel = this.pomReader.readPom(storedPom); then(overriddenPomModel.getVersion()).isEqualTo("0.0.3.BUILD-SNAPSHOT"); then(overriddenPomModel.getParent().getVersion()).isEqualTo("0.0.2"); @@ -156,7 +158,7 @@ public class PomUpdaterTests { File storedPom = this.pomUpdater.overwritePomIfDirty(model, this.versions, pomInTemp); - then(asString(originalPom)).isNotEqualTo(asString(storedPom)); + then(asString(storedPom)).isNotEqualTo(asString(originalPom)); Model overriddenPomModel = this.pomReader.readPom(storedPom); then(overriddenPomModel.getVersion()).isEqualTo("0.0.3.BUILD-SNAPSHOT"); then(overriddenPomModel.getParent().getVersion()).isEqualTo("0.0.3.BUILD-SNAPSHOT"); @@ -175,7 +177,7 @@ public class PomUpdaterTests { File storedPom = this.pomUpdater.overwritePomIfDirty(model, this.versions, pomInTemp); - then(asString(originalPom)).isNotEqualTo(asString(storedPom)); + then(asString(storedPom)).isNotEqualTo(asString(originalPom)); Model overriddenPomModel = this.pomReader.readPom(storedPom); then(overriddenPomModel.getVersion()).isEqualTo("0.0.3.BUILD-SNAPSHOT"); then(overriddenPomModel.getParent().getVersion()).isEqualTo("0.0.3.BUILD-SNAPSHOT"); @@ -194,7 +196,7 @@ public class PomUpdaterTests { File storedPom = this.pomUpdater.overwritePomIfDirty(model, this.versions, pomInTemp); - then(asString(originalPom)).isNotEqualTo(asString(storedPom)); + then(asString(storedPom)).isNotEqualTo(asString(originalPom)); Model overriddenPomModel = this.pomReader.readPom(storedPom); then(overriddenPomModel.getVersion()).isEqualTo("0.0.3.BUILD-SNAPSHOT"); then(overriddenPomModel.getParent().getVersion()).isEqualTo("0.0.3.BUILD-SNAPSHOT"); @@ -211,7 +213,6 @@ public class PomUpdaterTests { File processedPom = this.pomUpdater.overwritePomIfDirty(model, Versions.EMPTY_VERSION, afterProcessing); - then(processedPom).isSameAs(afterProcessing); String processedPomText = asString(processedPom); String beforeProcessingText = asString(beforeProcessing); then(processedPomText).isNotEqualTo(beforeProcessingText); @@ -225,7 +226,6 @@ public class PomUpdaterTests { File processedPom = this.pomUpdater.overwritePomIfDirty(model, Versions.EMPTY_VERSION, afterProcessing); - then(processedPom).isSameAs(afterProcessing); then(asString(processedPom)).isEqualTo(asString(beforeProcessing)); } @@ -238,12 +238,27 @@ public class PomUpdaterTests { File storedPom = this.pomUpdater.overwritePomIfDirty(model, this.versions, pomInTemp); - then(asString(originalPom)).isNotEqualTo(asString(storedPom)); + then(asString(storedPom)).isNotEqualTo(asString(originalPom)); Model overriddenPomModel = this.pomReader.readPom(storedPom); then(overriddenPomModel.getVersion()).isEqualTo("0.0.2.BUILD-SNAPSHOT"); then(overriddenPomModel.getParent().getVersion()).isEqualTo("0.0.2"); } + @Test + public void should_not_update_the_model_when_project_uses_same_version_for_artifact() throws Exception { + File originalPom = pom("/projects/project/", "pom_matching_artifact_same_version.xml"); + File pomInTemp = tmpFile("/project/pom_matching_artifact_same_version.xml"); + ModelWrapper rootPom = model("spring-cloud-sleuth"); + ModelWrapper model = this.pomUpdater.updateModel(rootPom, pomInTemp, this.versions); + + File storedPom = this.pomUpdater.overwritePomIfDirty(model, this.versions, pomInTemp); + + then(asString(storedPom)).isEqualTo(asString(originalPom)); + then(this.capture.toString()) + .contains("Won't update the version of parent") + .contains("Won't update the version of module"); + } + Set projects() { Set projects = new HashSet<>(); projects.add(new Project("spring-cloud-contract", "0.0.2.BUILD-SNAPSHOT")); diff --git a/spring-cloud-release-tools-core/src/test/resources/projects/project/pom_matching_artifact_same_version.xml b/spring-cloud-release-tools-core/src/test/resources/projects/project/pom_matching_artifact_same_version.xml new file mode 100644 index 00000000..7e097d58 --- /dev/null +++ b/spring-cloud-release-tools-core/src/test/resources/projects/project/pom_matching_artifact_same_version.xml @@ -0,0 +1,39 @@ + + + + + 4.0.0 + + spring-cloud-sleuth + 0.0.3.BUILD-SNAPSHOT + pom + foo + foo + + + org.springframework + spring-cloud-sleuth + 0.0.3.BUILD-SNAPSHOT + + + + 1.3.1.BUILD-SNAPSHOT + 1.2.0.BUILD-SNAPSHOT + +