diff --git a/src/main/java/io/moderne/devcenter/DependencyVulnerabilityCheck.java b/src/main/java/io/moderne/devcenter/DependencyVulnerabilityCheck.java index b5414f9..881ca05 100644 --- a/src/main/java/io/moderne/devcenter/DependencyVulnerabilityCheck.java +++ b/src/main/java/io/moderne/devcenter/DependencyVulnerabilityCheck.java @@ -15,7 +15,6 @@ */ package io.moderne.devcenter; -import io.moderne.devcenter.internal.DataTableRowWatcher; import lombok.EqualsAndHashCode; import lombok.Getter; import lombok.RequiredArgsConstructor; @@ -87,13 +86,7 @@ public Tree preVisit(Tree tree, ExecutionContext ctx) { } // ignore the MavenDownloadingException(s) that might occur in the scanning phase as the RecipeRunCycle.scanSources also does this when such an error occurs during scanning phase in a ScanningRecipe. } - - DataTableRowWatcher dataTableWatcher = new DataTableRowWatcher<>(scan.getVulnerabilityReport(), ctx); - dataTableWatcher.start(); - scan.generate(acc, ctx); - - List vulnerableDependencies = dataTableWatcher.stop(); - insertRows(vulnerableDependencies, ctx); + insertRows(scan.vulnerabilities(acc), ctx); return tree; } diff --git a/src/main/java/io/moderne/devcenter/GroovyVersionUpgrade.java b/src/main/java/io/moderne/devcenter/GroovyVersionUpgrade.java index 241396f..b3207a0 100644 --- a/src/main/java/io/moderne/devcenter/GroovyVersionUpgrade.java +++ b/src/main/java/io/moderne/devcenter/GroovyVersionUpgrade.java @@ -15,7 +15,7 @@ */ package io.moderne.devcenter; -import io.moderne.devcenter.internal.DataTableRowWatcher; +import io.moderne.devcenter.internal.ResolvedDependencyVersions; import lombok.EqualsAndHashCode; import lombok.Getter; import lombok.RequiredArgsConstructor; @@ -24,9 +24,7 @@ import org.jspecify.annotations.Nullable; import org.openrewrite.*; import org.openrewrite.gradle.IsBuildGradle; -import org.openrewrite.java.dependencies.DependencyInsight; import org.openrewrite.maven.search.FindMavenProject; -import org.openrewrite.maven.table.DependenciesInUse; import java.util.List; import java.util.stream.Stream; @@ -63,24 +61,21 @@ public TreeVisitor getVisitor() { @Override public Tree preVisit(Tree tree, ExecutionContext ctx) { stopAfterPreVisit(); - - Tree t = findGroovyDependency(ctx, tree, "groovy", "groovy"); - t = findGroovyDependency(ctx, t, "org.codehaus.groovy", "groovy"); - return findGroovyDependency(ctx, t, "org.apache.groovy", "groovy"); + if (!(tree instanceof SourceFile)) { + return tree; + } + SourceFile source = (SourceFile) tree; + findGroovyDependency(ctx, source, "groovy", "groovy"); + findGroovyDependency(ctx, source, "org.codehaus.groovy", "groovy"); + findGroovyDependency(ctx, source, "org.apache.groovy", "groovy"); + return tree; } }); } - private Tree findGroovyDependency(ExecutionContext ctx, Tree tree, String groupId, String artifactId) { - DependencyInsight dependencyInsight = new DependencyInsight(groupId, artifactId, null, null); - DataTableRowWatcher dataTableWatcher = new DataTableRowWatcher<>(dependencyInsight.getDependenciesInUse(), ctx); - dataTableWatcher.start(); - - Tree t = dependencyInsight.getVisitor().visitNonNull(tree, ctx); - - List dependenciesInUse = dataTableWatcher.stop(); - for (DependenciesInUse.Row row : dependenciesInUse) { - int actualMajor = parseMajorVersion(row.getVersion()); + private void findGroovyDependency(ExecutionContext ctx, SourceFile source, String groupId, String artifactId) { + for (String version : ResolvedDependencyVersions.findVersions(source, groupId, artifactId)) { + int actualMajor = parseMajorVersion(version); Measure measure = Measure.Completed; if (actualMajor < majorVersion) { if (actualMajor >= 5) { @@ -96,10 +91,8 @@ private Tree findGroovyDependency(ExecutionContext ctx, Tree tree, String groupI } } - upgradesAndMigrations.insertRow(ctx, GroovyVersionUpgrade.this, - measure, row.getVersion()); + upgradesAndMigrations.insertRow(ctx, GroovyVersionUpgrade.this, measure, version); } - return t; } static int parseMajorVersion(String version) { diff --git a/src/main/java/io/moderne/devcenter/KotlinVersionUpgrade.java b/src/main/java/io/moderne/devcenter/KotlinVersionUpgrade.java index 613fe02..326fa63 100644 --- a/src/main/java/io/moderne/devcenter/KotlinVersionUpgrade.java +++ b/src/main/java/io/moderne/devcenter/KotlinVersionUpgrade.java @@ -15,7 +15,7 @@ */ package io.moderne.devcenter; -import io.moderne.devcenter.internal.DataTableRowWatcher; +import io.moderne.devcenter.internal.ResolvedDependencyVersions; import lombok.EqualsAndHashCode; import lombok.Getter; import lombok.RequiredArgsConstructor; @@ -24,9 +24,7 @@ import org.jspecify.annotations.Nullable; import org.openrewrite.*; import org.openrewrite.gradle.IsBuildGradle; -import org.openrewrite.java.dependencies.DependencyInsight; import org.openrewrite.maven.search.FindMavenProject; -import org.openrewrite.maven.table.DependenciesInUse; import java.util.List; import java.util.stream.Stream; @@ -63,17 +61,12 @@ public TreeVisitor getVisitor() { @Override public Tree preVisit(Tree tree, ExecutionContext ctx) { stopAfterPreVisit(); - - DependencyInsight dependencyInsight = new DependencyInsight("org.jetbrains.kotlin", "kotlin-stdlib", null, null); - DataTableRowWatcher dataTableWatcher = new DataTableRowWatcher<>(dependencyInsight.getDependenciesInUse(), ctx); - dataTableWatcher.start(); - - Tree t = dependencyInsight.getVisitor().visitNonNull(tree, ctx); - - List dependenciesInUse = dataTableWatcher.stop(); + if (!(tree instanceof SourceFile)) { + return tree; + } int[] target = parseVersion(version); - for (DependenciesInUse.Row row : dependenciesInUse) { - int[] actual = parseVersion(row.getVersion()); + for (String found : ResolvedDependencyVersions.findVersions((SourceFile) tree, "org.jetbrains.kotlin", "kotlin-stdlib")) { + int[] actual = parseVersion(found); Measure measure = Measure.Completed; if (compareMajorMinor(actual, target) < 0) { if (actual[0] >= 2 && actual[1] >= 1) { @@ -89,11 +82,9 @@ public Tree preVisit(Tree tree, ExecutionContext ctx) { } } - upgradesAndMigrations.insertRow(ctx, KotlinVersionUpgrade.this, - measure, row.getVersion()); + upgradesAndMigrations.insertRow(ctx, KotlinVersionUpgrade.this, measure, found); } - - return t; + return tree; } }); } diff --git a/src/main/java/io/moderne/devcenter/LibraryUpgrade.java b/src/main/java/io/moderne/devcenter/LibraryUpgrade.java index 0d83ab4..222c449 100644 --- a/src/main/java/io/moderne/devcenter/LibraryUpgrade.java +++ b/src/main/java/io/moderne/devcenter/LibraryUpgrade.java @@ -15,16 +15,13 @@ */ package io.moderne.devcenter; -import io.moderne.devcenter.internal.DataTableRowWatcher; -import io.moderne.devcenter.table.UpgradesAndMigrations; +import io.moderne.devcenter.internal.ResolvedDependencyVersions; import lombok.EqualsAndHashCode; import lombok.Value; import org.jspecify.annotations.Nullable; import org.openrewrite.*; import org.openrewrite.gradle.IsBuildGradle; -import org.openrewrite.java.dependencies.DependencyInsight; import org.openrewrite.maven.search.FindMavenProject; -import org.openrewrite.maven.table.DependenciesInUse; import java.util.Arrays; import java.util.List; @@ -75,21 +72,14 @@ public TreeVisitor getVisitor() { @Override public Tree preVisit(Tree tree, ExecutionContext ctx) { stopAfterPreVisit(); - - DependencyInsight dependencyInsight = new DependencyInsight(groupIdPattern, artifactIdPattern, null, null); - DataTableRowWatcher dataTableWatcher = new DataTableRowWatcher<>(dependencyInsight.getDependenciesInUse(), ctx); - dataTableWatcher.start(); - + if (!(tree instanceof SourceFile)) { + return tree; + } SemverRowBuilder rowBuilder = new SemverRowBuilder(cardName, version); - Tree t = dependencyInsight.getVisitor().visitNonNull(tree, ctx); - - List dependenciesInUse = dataTableWatcher.stop(); - for (DependenciesInUse.Row dependencyInUse : dependenciesInUse) { - UpgradesAndMigrations.Row row = rowBuilder.getRow(dependencyInUse.getVersion()); - upgradesAndMigrations.insertRow(ctx, row); + for (String found : ResolvedDependencyVersions.findVersions((SourceFile) tree, groupIdPattern, artifactIdPattern)) { + upgradesAndMigrations.insertRow(ctx, rowBuilder.getRow(found)); } - - return t; + return tree; } }); } diff --git a/src/main/java/io/moderne/devcenter/ParentPomUpgrade.java b/src/main/java/io/moderne/devcenter/ParentPomUpgrade.java index 253d112..03ad63e 100644 --- a/src/main/java/io/moderne/devcenter/ParentPomUpgrade.java +++ b/src/main/java/io/moderne/devcenter/ParentPomUpgrade.java @@ -15,19 +15,19 @@ */ package io.moderne.devcenter; -import io.moderne.devcenter.internal.DataTableRowWatcher; -import io.moderne.devcenter.table.UpgradesAndMigrations; import lombok.EqualsAndHashCode; import lombok.Value; import org.jspecify.annotations.Nullable; import org.openrewrite.*; import org.openrewrite.maven.search.FindMavenProject; -import org.openrewrite.maven.search.ParentPomInsight; -import org.openrewrite.maven.table.ParentPomsInUse; +import org.openrewrite.maven.tree.MavenResolutionResult; +import org.openrewrite.maven.tree.Parent; import java.util.Arrays; import java.util.List; +import static org.openrewrite.internal.StringUtils.matchesGlob; + @Value @EqualsAndHashCode(callSuper = false) public class ParentPomUpgrade extends UpgradeMigrationCard { @@ -74,23 +74,20 @@ public TreeVisitor getVisitor() { @Override public Tree preVisit(Tree tree, ExecutionContext ctx) { stopAfterPreVisit(); - - ParentPomInsight parentPomInsight = new ParentPomInsight(groupIdPattern, artifactIdPattern, null, null); - DataTableRowWatcher dataTableWatcher = new DataTableRowWatcher<>(parentPomInsight.getInUse(), ctx); - dataTableWatcher.start(); - + if (!(tree instanceof SourceFile)) { + return tree; + } SemverRowBuilder rowBuilder = new SemverRowBuilder(cardName, version); - Tree t = parentPomInsight.getVisitor().visitNonNull(tree, ctx); - - List parentPomsInUse = dataTableWatcher.stop(); - for (ParentPomsInUse.Row parentPomInUse : parentPomsInUse) { - if (parentPomInUse.getVersion() != null) { - UpgradesAndMigrations.Row row = rowBuilder.getRow(parentPomInUse.getVersion()); - upgradesAndMigrations.insertRow(ctx, row); + ((SourceFile) tree).getMarkers().findFirst(MavenResolutionResult.class).ifPresent(mrr -> { + Parent parent = mrr.getPom().getRequested().getParent(); + if (parent != null && + matchesGlob(parent.getGroupId(), groupIdPattern) && + matchesGlob(parent.getArtifactId(), artifactIdPattern) && + parent.getVersion() != null) { + upgradesAndMigrations.insertRow(ctx, rowBuilder.getRow(parent.getVersion())); } - } - - return t; + }); + return tree; } }); } diff --git a/src/main/java/io/moderne/devcenter/ScalaVersionUpgrade.java b/src/main/java/io/moderne/devcenter/ScalaVersionUpgrade.java index 73fd0e7..70c6b6a 100644 --- a/src/main/java/io/moderne/devcenter/ScalaVersionUpgrade.java +++ b/src/main/java/io/moderne/devcenter/ScalaVersionUpgrade.java @@ -15,7 +15,7 @@ */ package io.moderne.devcenter; -import io.moderne.devcenter.internal.DataTableRowWatcher; +import io.moderne.devcenter.internal.ResolvedDependencyVersions; import lombok.EqualsAndHashCode; import lombok.Getter; import lombok.RequiredArgsConstructor; @@ -24,9 +24,7 @@ import org.jspecify.annotations.Nullable; import org.openrewrite.*; import org.openrewrite.gradle.IsBuildGradle; -import org.openrewrite.java.dependencies.DependencyInsight; import org.openrewrite.maven.search.FindMavenProject; -import org.openrewrite.maven.table.DependenciesInUse; import java.util.List; import java.util.stream.Stream; @@ -63,47 +61,33 @@ public TreeVisitor getVisitor() { @Override public Tree preVisit(Tree tree, ExecutionContext ctx) { stopAfterPreVisit(); + if (!(tree instanceof SourceFile)) { + return tree; + } + SourceFile source = (SourceFile) tree; // Check for Scala 3 first (scala3-library_3), then fall back to // scala-library for Scala 2. This order matters because scala3-library_3 // transitively depends on scala-library, and we want to report // the Scala 3 version, not the transitive Scala 2 dependency. - FindResult result = findScalaDependency(ctx, tree, "org.scala-lang", "scala3-library_3"); - if (!result.found) { - result = findScalaDependency(ctx, result.tree, "org.scala-lang", "scala-library"); + if (!emitMeasures(ctx, source, "org.scala-lang", "scala3-library_3")) { + emitMeasures(ctx, source, "org.scala-lang", "scala-library"); } - - return result.tree; + return tree; } }); } - private static class FindResult { - final Tree tree; - final boolean found; - - FindResult(Tree tree, boolean found) { - this.tree = tree; - this.found = found; - } - } - - private FindResult findScalaDependency(ExecutionContext ctx, Tree tree, String groupId, String artifactId) { - DependencyInsight dependencyInsight = new DependencyInsight(groupId, artifactId, null, null); - DataTableRowWatcher dataTableWatcher = new DataTableRowWatcher<>(dependencyInsight.getDependenciesInUse(), ctx); - dataTableWatcher.start(); - - Tree t = dependencyInsight.getVisitor().visitNonNull(tree, ctx); - - List dependenciesInUse = dataTableWatcher.stop(); - for (DependenciesInUse.Row row : dependenciesInUse) { - int actualMajor = parseMajorVersion(row.getVersion()); + private boolean emitMeasures(ExecutionContext ctx, SourceFile source, String groupId, String artifactId) { + List versions = ResolvedDependencyVersions.findVersions(source, groupId, artifactId); + for (String version : versions) { + int actualMajor = parseMajorVersion(version); Measure measure = Measure.Completed; if (actualMajor < majorVersion) { if (actualMajor >= 3) { measure = Measure.Scala3Plus; } else if (actualMajor == 2) { - int actualMinor = parseMinorVersion(row.getVersion()); + int actualMinor = parseMinorVersion(version); if (actualMinor >= 13) { measure = Measure.Scala213Plus; } else if (actualMinor >= 12) { @@ -116,10 +100,9 @@ private FindResult findScalaDependency(ExecutionContext ctx, Tree tree, String g } } - upgradesAndMigrations.insertRow(ctx, ScalaVersionUpgrade.this, - measure, row.getVersion()); + upgradesAndMigrations.insertRow(ctx, ScalaVersionUpgrade.this, measure, version); } - return new FindResult(t, !dependenciesInUse.isEmpty()); + return !versions.isEmpty(); } static int parseMajorVersion(String version) { diff --git a/src/main/java/io/moderne/devcenter/internal/DataTableRowWatcher.java b/src/main/java/io/moderne/devcenter/internal/DataTableRowWatcher.java deleted file mode 100644 index 792af88..0000000 --- a/src/main/java/io/moderne/devcenter/internal/DataTableRowWatcher.java +++ /dev/null @@ -1,91 +0,0 @@ -/* - * Copyright 2025 the original author or authors. - *

- * Licensed under the Moderne Source Available License (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - *

- * https://docs.moderne.io/licensing/moderne-source-available-license - *

- * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package io.moderne.devcenter.internal; - -import org.jspecify.annotations.Nullable; -import org.openrewrite.DataTable; -import org.openrewrite.DataTableExecutionContextView; -import org.openrewrite.DataTableStore; -import org.openrewrite.ExecutionContext; - -import java.util.ArrayList; -import java.util.Collection; -import java.util.List; -import java.util.Objects; -import java.util.stream.Stream; - -public class DataTableRowWatcher { - private final DataTable dataTable; - private final ExecutionContext ctx; - private final List captured = new ArrayList<>(); - private @Nullable DataTableStore originalStore; - - public DataTableRowWatcher(DataTable dataTable, ExecutionContext ctx) { - this.dataTable = dataTable; - this.ctx = ctx; - } - - public void start() { - DataTableExecutionContextView view = DataTableExecutionContextView.view(ctx); - originalStore = view.getDataTableStore(); - view.setDataTableStore(new RecordingStore(originalStore)); - } - - public List stop() { - DataTableExecutionContextView.view(ctx).setDataTableStore( - Objects.requireNonNull(originalStore, "stop() called before start()")); - return new ArrayList<>(captured); - } - - private boolean matchesTarget(DataTable table) { - if (!table.getName().equals(dataTable.getName())) { - return false; - } - return Objects.equals(bucketKey(table), bucketKey(dataTable)); - } - - private static @Nullable String bucketKey(DataTable table) { - return table.getGroup() != null ? table.getGroup() : table.getInstanceName(); - } - - private final class RecordingStore implements DataTableStore { - private final DataTableStore delegate; - - RecordingStore(DataTableStore delegate) { - this.delegate = delegate; - } - - @Override - public void insertRow(DataTable table, ExecutionContext ctx, R row) { - delegate.insertRow(table, ctx, row); - if (matchesTarget(table)) { - @SuppressWarnings("unchecked") - Row casted = (Row) row; - captured.add(casted); - } - } - - @Override - public Stream getRows(String dataTableName, @Nullable String group) { - return delegate.getRows(dataTableName, group); - } - - @Override - public Collection> getDataTables() { - return delegate.getDataTables(); - } - } -} diff --git a/src/main/java/io/moderne/devcenter/internal/ResolvedDependencyVersions.java b/src/main/java/io/moderne/devcenter/internal/ResolvedDependencyVersions.java new file mode 100644 index 0000000..ce749a9 --- /dev/null +++ b/src/main/java/io/moderne/devcenter/internal/ResolvedDependencyVersions.java @@ -0,0 +1,50 @@ +/* + * Copyright 2026 the original author or authors. + *

+ * Licensed under the Moderne Source Available License (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + *

+ * https://docs.moderne.io/licensing/moderne-source-available-license + *

+ * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package io.moderne.devcenter.internal; + +import org.openrewrite.SourceFile; +import org.openrewrite.gradle.marker.GradleDependencyConfiguration; +import org.openrewrite.gradle.marker.GradleProject; +import org.openrewrite.maven.tree.MavenResolutionResult; +import org.openrewrite.maven.tree.ResolvedDependency; + +import java.util.ArrayList; +import java.util.List; + +public final class ResolvedDependencyVersions { + + private ResolvedDependencyVersions() { + } + + public static List findVersions(SourceFile source, String groupIdPattern, String artifactIdPattern) { + List versions = new ArrayList<>(); + source.getMarkers().findFirst(MavenResolutionResult.class).ifPresent(mrr -> { + for (ResolvedDependency d : mrr.findDependencies(groupIdPattern, artifactIdPattern, null)) { + versions.add(d.getVersion()); + } + }); + source.getMarkers().findFirst(GradleProject.class).ifPresent(gp -> { + for (GradleDependencyConfiguration c : gp.getConfigurations()) { + for (ResolvedDependency root : c.getResolved()) { + for (ResolvedDependency match : root.findDependencies(groupIdPattern, artifactIdPattern)) { + versions.add(match.getVersion()); + } + } + } + }); + return versions; + } +} diff --git a/src/test/java/io/moderne/devcenter/DevCenterTest.java b/src/test/java/io/moderne/devcenter/DevCenterTest.java index 21ed284..4ea752b 100644 --- a/src/test/java/io/moderne/devcenter/DevCenterTest.java +++ b/src/test/java/io/moderne/devcenter/DevCenterTest.java @@ -348,32 +348,11 @@ void libraryUpgradeUnderCsvDataTableStore(@TempDir Path tempDir) throws Exceptio dependencies { implementation "org.springframework.boot:spring-boot-starter:3.1.2" } - """, - """ - plugins { - id "java" - } - repositories { - mavenCentral() - } - dependencies { - /*~~(org.springframework.boot:spring-boot-autoconfigure:3.1.2,org.springframework.boot:spring-boot-starter-logging:3.1.2,org.springframework.boot:spring-boot-starter:3.1.2,org.springframework.boot:spring-boot:3.1.2)~~>*/implementation "org.springframework.boot:spring-boot-starter:3.1.2" - } """ ) ); store.close(); - Path depsCsv = csvDir.resolve("org.openrewrite.maven.table.DependenciesInUse.csv"); - assertThat(depsCsv).exists(); - assertThat(readCsvRows(depsCsv)) - .as("Dependency is resolved and written to DependenciesInUse.csv") - .anySatisfy(row -> { - assertThat(row.getField("groupId")).isEqualTo("org.springframework.boot"); - assertThat(row.getField("artifactId")).isEqualTo("spring-boot-starter"); - assertThat(row.getField("version")).isEqualTo("3.1.2"); - }); - Path upgradesCsv = findCsv(csvDir, "io.moderne.devcenter.table.UpgradesAndMigrations"); assertThat(readCsvRows(upgradesCsv)) .singleElement() @@ -449,21 +428,7 @@ void devcenterWithMultipleLibraryUpgradeRecipesHasCorrectData() { implementation "org.springframework.boot:spring-boot-starter-web" implementation "commons-collections:commons-collections:2.0" } - """, - """ - plugins { - id "java" - id 'org.springframework.boot' version '2.7.18' - id 'io.spring.dependency-management' version '1.1.7' - } - repositories { - mavenCentral() - } - dependencies { - /*~~(org.springframework.boot:spring-boot-autoconfigure:2.7.18,org.springframework.boot:spring-boot-starter-json:2.7.18,org.springframework.boot:spring-boot-starter-logging:2.7.18,org.springframework.boot:spring-boot-starter-tomcat:2.7.18,org.springframework.boot:spring-boot-starter-web:2.7.18,org.springframework.boot:spring-boot-starter:2.7.18,org.springframework.boot:spring-boot:2.7.18)~~>*/implementation "org.springframework.boot:spring-boot-starter-web" - /*~~(commons-collections:commons-collections:2.0)~~>*/implementation "commons-collections:commons-collections:2.0" - } - """ + """ ) ); } diff --git a/src/test/java/io/moderne/devcenter/GroovyVersionUpgradeTest.java b/src/test/java/io/moderne/devcenter/GroovyVersionUpgradeTest.java index 6c320f4..1f03c1b 100644 --- a/src/test/java/io/moderne/devcenter/GroovyVersionUpgradeTest.java +++ b/src/test/java/io/moderne/devcenter/GroovyVersionUpgradeTest.java @@ -73,11 +73,7 @@ void detectsGroovyVersion(int targetVersion, String groupId, String currentVersi - """.formatted(groupId, currentVersion), - spec -> spec.after(after -> { - assertThat(after).isNotNull(); - return after; - }) + """.formatted(groupId, currentVersion) ) ); } diff --git a/src/test/java/io/moderne/devcenter/KotlinVersionUpgradeTest.java b/src/test/java/io/moderne/devcenter/KotlinVersionUpgradeTest.java index 5ae1a8a..eccf226 100644 --- a/src/test/java/io/moderne/devcenter/KotlinVersionUpgradeTest.java +++ b/src/test/java/io/moderne/devcenter/KotlinVersionUpgradeTest.java @@ -71,11 +71,7 @@ void detectsKotlinVersion(String targetVersion, String currentVersion, KotlinVer - """.formatted(currentVersion), - spec -> spec.after(after -> { - assertThat(after).isNotNull(); - return after; - }) + """.formatted(currentVersion) ) ); } diff --git a/src/test/java/io/moderne/devcenter/LibraryUpgradeTest.java b/src/test/java/io/moderne/devcenter/LibraryUpgradeTest.java index 9c7cde3..9381ae8 100644 --- a/src/test/java/io/moderne/devcenter/LibraryUpgradeTest.java +++ b/src/test/java/io/moderne/devcenter/LibraryUpgradeTest.java @@ -70,20 +70,6 @@ void minorUpgrade(String targetVersion, String currentVersion, SemverMeasure sem - """.formatted(currentVersion), - """ - - com.example - example - 1.0-SNAPSHOT - - - com.fasterxml.jackson.module - jackson-module-parameter-names - %1$s - - - """.formatted(currentVersion) ) ); diff --git a/src/test/java/io/moderne/devcenter/ParentPomUpgradeTest.java b/src/test/java/io/moderne/devcenter/ParentPomUpgradeTest.java index 0a37133..7a311ec 100644 --- a/src/test/java/io/moderne/devcenter/ParentPomUpgradeTest.java +++ b/src/test/java/io/moderne/devcenter/ParentPomUpgradeTest.java @@ -74,18 +74,6 @@ void minorUpgrade(String targetVersion, String currentVersion, SemverMeasure sem %s - """.formatted(currentVersion), - """ - - com.example - example - 1.0-SNAPSHOT - - org.springframework.boot - spring-boot-parent - %s - - """.formatted(currentVersion) ) ); diff --git a/src/test/java/io/moderne/devcenter/ScalaVersionUpgradeTest.java b/src/test/java/io/moderne/devcenter/ScalaVersionUpgradeTest.java index c4cf52d..daef888 100644 --- a/src/test/java/io/moderne/devcenter/ScalaVersionUpgradeTest.java +++ b/src/test/java/io/moderne/devcenter/ScalaVersionUpgradeTest.java @@ -36,25 +36,23 @@ class ScalaVersionUpgradeTest implements RewriteTest { private static Stream scalaVersions() { return Stream.of( - Arguments.of(3, "org.scala-lang", "scala-library", "2.11.12", Scala211Plus, 1), - Arguments.of(3, "org.scala-lang", "scala-library", "2.12.18", Scala212Plus, 1), - Arguments.of(3, "org.scala-lang", "scala-library", "2.13.12", Scala213Plus, 1), - Arguments.of(3, "org.scala-lang", "scala3-library_3", "3.3.1", Completed, 2), - Arguments.of(3, "org.scala-lang", "scala3-library_3", "3.5.0", Completed, 2), - Arguments.of(4, "org.scala-lang", "scala3-library_3", "3.5.0", Scala3Plus, 2) + Arguments.of(3, "org.scala-lang", "scala-library", "2.11.12", Scala211Plus), + Arguments.of(3, "org.scala-lang", "scala-library", "2.12.18", Scala212Plus), + Arguments.of(3, "org.scala-lang", "scala-library", "2.13.12", Scala213Plus), + Arguments.of(3, "org.scala-lang", "scala3-library_3", "3.3.1", Completed), + Arguments.of(3, "org.scala-lang", "scala3-library_3", "3.5.0", Completed), + Arguments.of(4, "org.scala-lang", "scala3-library_3", "3.5.0", Scala3Plus) ); } @MethodSource("scalaVersions") @ParameterizedTest void detectsScalaVersion(int targetVersion, String groupId, String artifactId, - String currentVersion, ScalaVersionUpgrade.Measure measure, - int expectedCycles) { + String currentVersion, ScalaVersionUpgrade.Measure measure) { var recipe = new ScalaVersionUpgrade(targetVersion, null); rewriteRun( spec -> spec .recipe(recipe) - .expectedCyclesThatMakeChanges(expectedCycles) .dataTable(UpgradesAndMigrations.Row.class, rows -> assertThat(rows).containsExactly( new UpgradesAndMigrations.Row("Move to Scala " + targetVersion, @@ -75,11 +73,7 @@ void detectsScalaVersion(int targetVersion, String groupId, String artifactId, - """.formatted(groupId, artifactId, currentVersion), - spec -> spec.after(after -> { - assertThat(after).isNotNull(); - return after; - }) + """.formatted(groupId, artifactId, currentVersion) ) ); } diff --git a/src/test/java/io/moderne/devcenter/table/UpgradesAndMigrationsTest.java b/src/test/java/io/moderne/devcenter/table/UpgradesAndMigrationsTest.java index 2b170b7..fb832c4 100644 --- a/src/test/java/io/moderne/devcenter/table/UpgradesAndMigrationsTest.java +++ b/src/test/java/io/moderne/devcenter/table/UpgradesAndMigrationsTest.java @@ -39,10 +39,8 @@ void leastOrdinalRetained() { assertThat(rows).containsExactly( new UpgradesAndMigrations.Row("Spring Boot", Major.ordinal(), "Major", "2.7.0") )), - pomXml(pom("2.7.0"), expected("2.7.0"), - spec -> spec.path(Path.of("module1/pom.xml"))), - pomXml(pom("3.2.0"), expected("3.2.0"), - spec -> spec.path(Path.of("module2/pom.xml"))) + pomXml(pom("2.7.0"), spec -> spec.path(Path.of("module1/pom.xml"))), + pomXml(pom("3.2.0"), spec -> spec.path(Path.of("module2/pom.xml"))) ); } @@ -56,10 +54,8 @@ void leastVersionRetainedAtSameOrdinal() { assertThat(rows).containsExactly( new UpgradesAndMigrations.Row("Spring Boot", Minor.ordinal(), "Minor", "3.1.0") )), - pomXml(pom("3.1.0"), expected("3.1.0"), - spec -> spec.path(Path.of("module1/pom.xml"))), - pomXml(pom("3.2.0"), expected("3.2.0"), - spec -> spec.path(Path.of("module2/pom.xml"))) + pomXml(pom("3.1.0"), spec -> spec.path(Path.of("module1/pom.xml"))), + pomXml(pom("3.2.0"), spec -> spec.path(Path.of("module2/pom.xml"))) ); } @@ -86,18 +82,4 @@ private static String pom(String version) { """.formatted(version); } - private static String expected(String version) { - return """ - - com.example - example - 1.0-SNAPSHOT - - org.springframework.boot - spring-boot-parent - %s - - - """.formatted(version); - } }