From 194c1062dd5c24189382372327d98d9a25176122 Mon Sep 17 00:00:00 2001 From: Nick McKinney Date: Wed, 14 Feb 2024 04:43:37 -0500 Subject: [PATCH] =?UTF-8?q?ChangeDependencyGroupIdAndArtifactId=20-=20fixe?= =?UTF-8?q?d=20issue=20described=20by=20`managedToUnmanagedExternalizedDep?= =?UTF-8?q?Mgmt`=20test=E2=80=A6=20(#3998)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * fixed issue described by `managedToUnmanagedExternalizedDepMgmt` test; previously, the changed dep would erroneously have no version (and one or more "No version provided" markers) after recipe execution * shifting RemoveRedundantDependencyVersions call to be conditional on ChangeManagedDependencyGroupIdAndArtifactId making a change, to fix test failures with `multipleRetainVersions` on `UpgradeDependencyVersionTest` and `ChangeParentPomTest` --- .../ChangeDependencyGroupIdAndArtifactId.java | 2 +- ...ManagedDependencyGroupIdAndArtifactId.java | 1 + ...ngeDependencyGroupIdAndArtifactIdTest.java | 130 ++++++++++++++++++ 3 files changed, 132 insertions(+), 1 deletion(-) diff --git a/rewrite-maven/src/main/java/org/openrewrite/maven/ChangeDependencyGroupIdAndArtifactId.java b/rewrite-maven/src/main/java/org/openrewrite/maven/ChangeDependencyGroupIdAndArtifactId.java index dc40767039f..b8196b41787 100755 --- a/rewrite-maven/src/main/java/org/openrewrite/maven/ChangeDependencyGroupIdAndArtifactId.java +++ b/rewrite-maven/src/main/java/org/openrewrite/maven/ChangeDependencyGroupIdAndArtifactId.java @@ -203,7 +203,7 @@ public Xml visitTag(Xml.Tag tag, ExecutionContext ctx) { // Otherwise, change the version to the new value. t = changeChildTagValue(t, "version", resolvedNewVersion, ctx); } - } else if (configuredToOverrideManageVersion || !newDependencyManaged && !(oldDependencyManaged && configuredToChangeManagedDependency)) { + } else if (configuredToOverrideManageVersion || !newDependencyManaged) { //If the version is not present, add the version if we are explicitly overriding a managed version or if no managed version exists. Xml.Tag newVersionTag = Xml.Tag.build("" + resolvedNewVersion + ""); //noinspection ConstantConditions diff --git a/rewrite-maven/src/main/java/org/openrewrite/maven/ChangeManagedDependencyGroupIdAndArtifactId.java b/rewrite-maven/src/main/java/org/openrewrite/maven/ChangeManagedDependencyGroupIdAndArtifactId.java index 6fd50b1a19a..da0389461af 100644 --- a/rewrite-maven/src/main/java/org/openrewrite/maven/ChangeManagedDependencyGroupIdAndArtifactId.java +++ b/rewrite-maven/src/main/java/org/openrewrite/maven/ChangeManagedDependencyGroupIdAndArtifactId.java @@ -167,6 +167,7 @@ public Xml.Tag visitTag(Xml.Tag tag, ExecutionContext ctx) { } if (changed) { maybeUpdateModel(); + doAfterVisit(new RemoveRedundantDependencyVersions(null, null, null, null).getVisitor()); } } return t; diff --git a/rewrite-maven/src/test/java/org/openrewrite/maven/ChangeDependencyGroupIdAndArtifactIdTest.java b/rewrite-maven/src/test/java/org/openrewrite/maven/ChangeDependencyGroupIdAndArtifactIdTest.java index 22fe9af6951..aca6d239d9d 100644 --- a/rewrite-maven/src/test/java/org/openrewrite/maven/ChangeDependencyGroupIdAndArtifactIdTest.java +++ b/rewrite-maven/src/test/java/org/openrewrite/maven/ChangeDependencyGroupIdAndArtifactIdTest.java @@ -381,6 +381,71 @@ void managedToUnmanagedWithoutChangeManagedDependency() { ); } + @Test + void managedToUnmanagedExternalizedDepMgmt() { + rewriteRun( + spec -> spec.recipe(new ChangeDependencyGroupIdAndArtifactId( + "org.springframework.cloud", + "spring-cloud-starter-sleuth", + "io.micrometer", + "micrometer-tracing-bridge-brave", + "1.0.12", + null + )), + pomXml( + """ + + + + + org.springframework.cloud + spring-cloud-dependencies + 2021.0.0 + bom + import + + + + com.mycompany.app + sample + 1 + + + org.springframework.cloud + spring-cloud-starter-sleuth + + + + """, + """ + + + + + org.springframework.cloud + spring-cloud-dependencies + 2021.0.0 + bom + import + + + + com.mycompany.app + sample + 1 + + + io.micrometer + micrometer-tracing-bridge-brave + 1.0.12 + + + + """ + ) + ); + } + @Test void unmanagedToManaged() { rewriteRun( @@ -573,6 +638,71 @@ void unmanagedToManagedWithOverrideManagedVersionNull() { ); } + @Test + void unmanagedToManagedExternalizedDepMgmt() { + rewriteRun( + spec -> spec.recipe(new ChangeDependencyGroupIdAndArtifactId( + "io.micrometer", + "micrometer-tracing-bridge-brave", + "org.springframework.cloud", + "spring-cloud-starter-sleuth", + "2021.0.0", + null + )), + pomXml( + """ + + + + + org.springframework.cloud + spring-cloud-dependencies + 2021.0.0 + bom + import + + + + com.mycompany.app + sample + 1 + + + io.micrometer + micrometer-tracing-bridge-brave + 1.0.12 + + + + """, + """ + + + + + org.springframework.cloud + spring-cloud-dependencies + 2021.0.0 + bom + import + + + + com.mycompany.app + sample + 1 + + + org.springframework.cloud + spring-cloud-starter-sleuth + + + + """ + ) + ); + } + @Test void changeOnlyArtifactId() { rewriteRun(