From 786b40ec621974a3b8fe7e52fc6eeaedc647e2a3 Mon Sep 17 00:00:00 2001 From: Andy Damevin Date: Mon, 13 Feb 2023 09:29:41 +0100 Subject: [PATCH] Print command --- .../cli/MavenProjectInfoAndUpdateTest.java | 63 ++++++++----------- .../handlers/ProjectInfoCommandHandler.java | 39 ++++++------ .../handlers/UpdateProjectCommandHandler.java | 51 ++++++++------- .../project/update/QuarkusUpdateRecipe.java | 3 +- .../update/QuarkusUpdatesRepository.java | 3 +- .../update/QuarkusUpdatesRepositoryTest.java | 19 ++++++ .../should_apply_recipe_test_cases.csv | 1 + 7 files changed, 99 insertions(+), 80 deletions(-) create mode 100644 independent-projects/tools/devtools-common/src/test/java/io/quarkus/devtools/project/update/QuarkusUpdatesRepositoryTest.java diff --git a/devtools/cli/src/test/java/io/quarkus/cli/MavenProjectInfoAndUpdateTest.java b/devtools/cli/src/test/java/io/quarkus/cli/MavenProjectInfoAndUpdateTest.java index bf3791b6f7aa7f..a479fa245556de 100644 --- a/devtools/cli/src/test/java/io/quarkus/cli/MavenProjectInfoAndUpdateTest.java +++ b/devtools/cli/src/test/java/io/quarkus/cli/MavenProjectInfoAndUpdateTest.java @@ -60,22 +60,23 @@ void testClean() throws Exception { final Path projectDir = workDir().resolve("acme-clean"); final CliDriver.Result infoResult = run(projectDir, "info"); - assertQuarkusPlatformBoms(infoResult.stdout, - ArtifactCoords.pom("org.acme.quarkus.platform", "quarkus-bom", "2.0.0"), - ArtifactCoords.pom("org.acme.quarkus.platform", "acme-bom", "2.0.0")); + assertQuarkusPlatformBoms(infoResult.stdout, "org.acme.quarkus.platform:quarkus-bom:pom:2.0.0 ✔", + "org.acme.quarkus.platform:acme-bom:pom:2.0.0 ✔"); assertPlatformBomExtensions(infoResult.stdout, ArtifactCoords.pom("org.acme.quarkus.platform", "quarkus-bom", "2.0.0"), - ArtifactCoords.jar("io.quarkus", "quarkus-arc", null)); + "io.quarkus:quarkus-arc ✔"); assertPlatformBomExtensions(infoResult.stdout, ArtifactCoords.pom("org.acme.quarkus.platform", "acme-bom", "2.0.0"), - ArtifactCoords.jar("org.acme.quarkus.platform", "acme-quarkus-supersonic", null)); + "org.acme.quarkus.platform:acme-quarkus-supersonic ✔"); assertRegistryExtensions(infoResult.stdout, "registry.acme.org", - ArtifactCoords.jar("org.acme", "acme-quarkiverse-extension", "1.0")); + "org.acme:acme-quarkiverse-extension:1.0"); final CliDriver.Result updateResult = run(projectDir, "update"); - assertThat(updateResult.stdout).contains("[INFO] The project is up-to-date"); + assertQuarkusPlatformBoms(updateResult.stdout, + "org.acme.quarkus.platform:quarkus-bom:pom:2.0.0 ✔", + "org.acme.quarkus.platform:acme-bom:pom:2.0.0 ✔"); } @Test - void testMissalignedPlatformExtensionVersion() throws Exception { + void testMisalignedPlatformExtensionVersion() throws Exception { final CliDriver.Result createResult = run(workDir(), "create", "acme-misaligned-ext-version", "-x supersonic,acme-quarkiverse-extension,org.acme.quarkus.platform:acme-quarkus-subatomic:1.0.0"); @@ -88,15 +89,15 @@ void testMissalignedPlatformExtensionVersion() throws Exception { final CliDriver.Result infoResult = run(projectDir, "info"); assertQuarkusPlatformBoms(infoResult.stdout, - ArtifactCoords.pom("org.acme.quarkus.platform", "quarkus-bom", "2.0.0"), - ArtifactCoords.pom("org.acme.quarkus.platform", "acme-bom", "2.0.0")); + "org.acme.quarkus.platform:quarkus-bom:pom:2.0.0 ✔", + "org.acme.quarkus.platform:acme-bom:pom:2.0.0 ✔"); assertPlatformBomExtensions(infoResult.stdout, ArtifactCoords.pom("org.acme.quarkus.platform", "quarkus-bom", "2.0.0"), - ArtifactCoords.jar("io.quarkus", "quarkus-arc", null)); + "io.quarkus:quarkus-arc ✔"); assertPlatformBomExtensions(infoResult.stdout, ArtifactCoords.pom("org.acme.quarkus.platform", "acme-bom", "2.0.0"), - ArtifactCoords.jar("org.acme.quarkus.platform", "acme-quarkus-supersonic", null), - ArtifactCoords.jar("org.acme.quarkus.platform", "acme-quarkus-subatomic", "1.0.0 | misaligned")); + "org.acme.quarkus.platform:acme-quarkus-supersonic ✔", + "org.acme.quarkus.platform:acme-quarkus-subatomic:1.0.0 ⚠"); assertRegistryExtensions(infoResult.stdout, "registry.acme.org", - ArtifactCoords.jar("org.acme", "acme-quarkiverse-extension", "1.0")); + "org.acme:acme-quarkiverse-extension:1.0"); final CliDriver.Result rectifyResult = run(projectDir, "update", "--platform-version=1.0.0"); assertThat(rectifyResult.stdout) @@ -108,7 +109,7 @@ void testMissalignedPlatformExtensionVersion() throws Exception { ArtifactCoords.pom("org.acme.quarkus.platform", "acme-bom", "1.0.0 -> 2.0.0")); } - private static void assertPlatformBomExtensions(String output, ArtifactCoords bom, ArtifactCoords... extensions) { + private static void assertPlatformBomExtensions(String output, ArtifactCoords bom, String... extensions) { final StringWriter buf = new StringWriter(); try (BufferedWriter writer = new BufferedWriter(buf)) { writer.write("[INFO] Extensions from "); @@ -117,15 +118,9 @@ private static void assertPlatformBomExtensions(String output, ArtifactCoords bo writer.write(bom.getArtifactId()); writer.write(":"); writer.newLine(); - for (ArtifactCoords c : extensions) { - writer.write("[INFO] "); - writer.write(c.getGroupId()); - writer.write(":"); - writer.write(c.getArtifactId()); - if (c.getVersion() != null) { - writer.write(":"); - writer.write(c.getVersion()); - } + for (String c : extensions) { + writer.write("[INFO] "); + writer.write(c); writer.newLine(); } writer.write("[INFO] "); @@ -136,20 +131,16 @@ private static void assertPlatformBomExtensions(String output, ArtifactCoords bo assertThat(output).contains(buf.getBuffer().toString()); } - private static void assertRegistryExtensions(String output, String id, ArtifactCoords... extensions) { + private static void assertRegistryExtensions(String output, String id, String... extensions) { final StringWriter buf = new StringWriter(); try (BufferedWriter writer = new BufferedWriter(buf)) { writer.write("[INFO] Extensions from "); writer.write(id); writer.write(":"); writer.newLine(); - for (ArtifactCoords c : extensions) { - writer.write("[INFO] "); - writer.write(c.getGroupId()); - writer.write(":"); - writer.write(c.getArtifactId()); - writer.write(":"); - writer.write(c.getVersion()); + for (String c : extensions) { + writer.write("[INFO] "); + writer.write(c); writer.newLine(); } writer.write("[INFO] "); @@ -160,14 +151,14 @@ private static void assertRegistryExtensions(String output, String id, ArtifactC assertThat(output).contains(buf.getBuffer().toString()); } - private static void assertQuarkusPlatformBoms(String output, ArtifactCoords... coords) { + private static void assertQuarkusPlatformBoms(String output, String... coords) { final StringWriter buf = new StringWriter(); try (BufferedWriter writer = new BufferedWriter(buf)) { writer.write("[INFO] Quarkus platform BOMs:"); writer.newLine(); - for (ArtifactCoords c : coords) { - writer.write("[INFO] "); - writer.write(c.toCompactCoords()); + for (String c : coords) { + writer.write("[INFO] "); + writer.write(c); writer.newLine(); } writer.write("[INFO] "); diff --git a/independent-projects/tools/devtools-common/src/main/java/io/quarkus/devtools/commands/handlers/ProjectInfoCommandHandler.java b/independent-projects/tools/devtools-common/src/main/java/io/quarkus/devtools/commands/handlers/ProjectInfoCommandHandler.java index ed9e14a7e5b4f7..5358414c6f06be 100644 --- a/independent-projects/tools/devtools-common/src/main/java/io/quarkus/devtools/commands/handlers/ProjectInfoCommandHandler.java +++ b/independent-projects/tools/devtools-common/src/main/java/io/quarkus/devtools/commands/handlers/ProjectInfoCommandHandler.java @@ -78,7 +78,7 @@ protected static boolean logState(ProjectState projectState, boolean perModule, final StringBuilder sb = new StringBuilder(); if (platform.recommended == null) { if (rectify) { - sb.append(String.format(UpdateProjectCommandHandler.PLATFORM_RECTIFY_FORMAT, + sb.append(String.format(UpdateProjectCommandHandler.ITEM_FORMAT, UpdateProjectCommandHandler.REMOVE, platform.imported.toCompactCoords())); recommendationsAvailable = true; } else { @@ -92,30 +92,26 @@ protected static boolean logState(ProjectState projectState, boolean perModule, } } } else if (platform.isVersionUpdateRecommended()) { + sb.append(String.format(UpdateProjectCommandHandler.ITEM_FORMAT, + rectify ? UpdateProjectCommandHandler.UPDATE : "", platform.imported.toCompactCoords())); if (rectify) { - sb.append(String.format(UpdateProjectCommandHandler.PLATFORM_RECTIFY_FORMAT, - UpdateProjectCommandHandler.UPDATE, platform.imported.toCompactCoords())); sb.append(platform.imported.toCompactCoords()).append(" -> ") .append(platform.getRecommendedVersion()); } else { - sb.append(" "); - sb.append(platform.imported.toCompactCoords()).append(" | misaligned"); + sb.append(" ⚠"); } recommendationsAvailable = true; } else { - if (rectify) { - sb.append(String.format(UpdateProjectCommandHandler.PLATFORM_RECTIFY_FORMAT, "", - platform.imported.toCompactCoords())); - } else { - sb.append(" ").append(platform.imported.toCompactCoords()); - } + sb.append(String.format(UpdateProjectCommandHandler.ITEM_FORMAT, "", + platform.imported.toCompactCoords())) + .append(" ✔"); } log.info(sb.toString()); } if (rectify && recommendExtraImports) { for (PlatformInfo platform : providerInfo.values()) { if (platform.imported == null) { - log.info(String.format(UpdateProjectCommandHandler.PLATFORM_RECTIFY_FORMAT, + log.info(String.format(UpdateProjectCommandHandler.ITEM_FORMAT, UpdateProjectCommandHandler.ADD, platform.recommended.toCompactCoords())); } @@ -177,10 +173,10 @@ private static boolean logExtensionInfo(TopExtensionDependency dep, boolean rect if (dep.isPlatformExtension()) { if (rectify) { if (dep.isNonRecommendedVersion()) { - sb.append(String.format(UpdateProjectCommandHandler.PLATFORM_RECTIFY_FORMAT, + sb.append(String.format(UpdateProjectCommandHandler.ITEM_FORMAT, UpdateProjectCommandHandler.UPDATE, "")); } else { - sb.append(String.format(UpdateProjectCommandHandler.PLATFORM_RECTIFY_FORMAT, "", "")); + sb.append(String.format(UpdateProjectCommandHandler.ITEM_FORMAT, "", "")); } sb.append(dep.getArtifact().getGroupId()).append(':') .append(dep.getArtifact().getArtifactId()); @@ -193,25 +189,26 @@ private static boolean logExtensionInfo(TopExtensionDependency dep, boolean rect sb.append(" -> remove version (managed)"); } recommendationsAvailable = true; + } else { + sb.append(" ✔"); } } else { - sb.append(" ").append(dep.getArtifact().getGroupId()).append(':') + sb.append(String.format(UpdateProjectCommandHandler.ITEM_FORMAT, "", "")).append(dep.getArtifact().getGroupId()) + .append(':') .append(dep.getArtifact().getArtifactId()); if (!dep.getArtifact().getClassifier().isEmpty()) { sb.append(':').append(dep.getArtifact().getClassifier()); } if (dep.isNonRecommendedVersion()) { sb.append(':').append(dep.getArtifact().getVersion()); - sb.append(" | misaligned"); + sb.append(" ⚠"); recommendationsAvailable = true; + } else { + sb.append(" ✔"); } } } else { - if (rectify) { - sb.append(String.format(UpdateProjectCommandHandler.PLATFORM_RECTIFY_FORMAT, "", "")); - } else { - sb.append(" "); - } + sb.append(String.format(UpdateProjectCommandHandler.ITEM_FORMAT, "", "")); sb.append(dep.getArtifact().toCompactCoords()); } if (dep.isTransitive()) { diff --git a/independent-projects/tools/devtools-common/src/main/java/io/quarkus/devtools/commands/handlers/UpdateProjectCommandHandler.java b/independent-projects/tools/devtools-common/src/main/java/io/quarkus/devtools/commands/handlers/UpdateProjectCommandHandler.java index cb62a099a5af70..ac8b7e223c57eb 100644 --- a/independent-projects/tools/devtools-common/src/main/java/io/quarkus/devtools/commands/handlers/UpdateProjectCommandHandler.java +++ b/independent-projects/tools/devtools-common/src/main/java/io/quarkus/devtools/commands/handlers/UpdateProjectCommandHandler.java @@ -1,5 +1,7 @@ package io.quarkus.devtools.commands.handlers; +import static io.quarkus.devtools.project.update.QuarkusUpdateRecipe.RECIPE_IO_QUARKUS_OPENREWRITE_QUARKUS; + import java.io.IOException; import java.nio.file.Files; import java.nio.file.Path; @@ -41,7 +43,7 @@ public class UpdateProjectCommandHandler implements QuarkusCommandHandler { public static final String ADD = "Add:"; public static final String REMOVE = "Remove:"; public static final String UPDATE = "Update:"; - public static final String PLATFORM_RECTIFY_FORMAT = "%-7s %s"; + public static final String ITEM_FORMAT = "%-7s %s"; @Override public QuarkusCommandOutcome execute(QuarkusCommandInvocation invocation) throws QuarkusCommandException { @@ -66,18 +68,25 @@ public QuarkusCommandOutcome execute(QuarkusCommandInvocation invocation) throws invocation.log().info("Instructions to update this project from '%s' to '%s':", projectQuarkusPlatformBom.getVersion(), targetPlatformVersion); logUpdates(currentState, latestCatalog, false, perModule, invocation.getQuarkusProject().log()); - } - if (generateRewriteConfig) { - QuarkusUpdates.ProjectUpdateRequest request = new QuarkusUpdates.ProjectUpdateRequest( - projectQuarkusPlatformBom.getVersion(), targetPlatformVersion); - try { - final Path tempFile = Files.createTempFile("quarkus-project-recipe-", ".yaml"); - QuarkusUpdates.createRecipe(tempFile, - QuarkusProjectHelper.artifactResolver(), request); - invocation.log().info("Project update recipe has been created: %s", tempFile.toString()); - } catch (IOException e) { - throw new QuarkusCommandException("Failed to create project update recipe", e); + if (generateRewriteConfig) { + QuarkusUpdates.ProjectUpdateRequest request = new QuarkusUpdates.ProjectUpdateRequest( + projectQuarkusPlatformBom.getVersion(), targetPlatformVersion); + try { + final Path tempFile = Files.createTempFile("quarkus-project-recipe-", ".yaml"); + QuarkusUpdates.createRecipe(tempFile, + QuarkusProjectHelper.artifactResolver(), request); + invocation.log().info("Project update recipe has been created:\n%s", tempFile.toString()); + + invocation.log().info("The command to update this project: \n" + + "mvn org.openrewrite.maven:rewrite-maven-plugin:4.39.0:run \\\n" + + " -Drewrite.configLocation=%s \\\n" + + " -DactiveRecipes=%s -e", + tempFile.toString(), RECIPE_IO_QUARKUS_OPENREWRITE_QUARKUS); + + } catch (IOException e) { + throw new QuarkusCommandException("Failed to create project update recipe", e); + } } } @@ -141,21 +150,21 @@ private static void logUpdates(ProjectState currentState, ExtensionCatalog recom log.info("Recommended Quarkus platform BOM updates:"); if (!importVersionUpdates.isEmpty()) { for (PlatformInfo importInfo : importVersionUpdates) { - log.info(String.format(UpdateProjectCommandHandler.PLATFORM_RECTIFY_FORMAT, + log.info(String.format(UpdateProjectCommandHandler.ITEM_FORMAT, UpdateProjectCommandHandler.UPDATE, importInfo.imported.toCompactCoords()) + " -> " + importInfo.getRecommendedVersion()); } } if (!newImports.isEmpty()) { for (PlatformInfo importInfo : newImports) { - log.info(String.format(UpdateProjectCommandHandler.PLATFORM_RECTIFY_FORMAT, + log.info(String.format(UpdateProjectCommandHandler.ITEM_FORMAT, UpdateProjectCommandHandler.ADD, importInfo.recommended.toCompactCoords())); } } if (importsToBeRemoved) { for (PlatformInfo importInfo : platformImports.values()) { if (importInfo.recommended == null) { - log.info(String.format(UpdateProjectCommandHandler.PLATFORM_RECTIFY_FORMAT, + log.info(String.format(UpdateProjectCommandHandler.ITEM_FORMAT, UpdateProjectCommandHandler.REMOVE, importInfo.imported.toCompactCoords())); } } @@ -229,17 +238,17 @@ private static void logUpdates(ProjectState currentState, ExtensionCatalog recom log.info("Extensions from " + platform.getRecommendedProviderKey() + ":"); for (ExtensionInfo e : versionedManagedExtensions.getOrDefault(provider, Collections.emptyList())) { final StringBuilder sb = new StringBuilder(); - sb.append(String.format(UpdateProjectCommandHandler.PLATFORM_RECTIFY_FORMAT, + sb.append(String.format(UpdateProjectCommandHandler.ITEM_FORMAT, UpdateProjectCommandHandler.UPDATE, e.currentDep.getArtifact().toCompactCoords())); sb.append(" -> remove version (managed)"); log.info(sb.toString()); } for (ArtifactCoords e : addedExtensions.getOrDefault(provider, Collections.emptyList())) { - log.info(String.format(UpdateProjectCommandHandler.PLATFORM_RECTIFY_FORMAT, UpdateProjectCommandHandler.ADD, + log.info(String.format(UpdateProjectCommandHandler.ITEM_FORMAT, UpdateProjectCommandHandler.ADD, e.getKey().toGacString())); } for (ArtifactCoords e : removedExtensions.getOrDefault(provider, Collections.emptyList())) { - log.info(String.format(UpdateProjectCommandHandler.PLATFORM_RECTIFY_FORMAT, UpdateProjectCommandHandler.REMOVE, + log.info(String.format(UpdateProjectCommandHandler.ITEM_FORMAT, UpdateProjectCommandHandler.REMOVE, e.getKey().toGacString())); } log.info(""); @@ -250,14 +259,14 @@ private static void logUpdates(ProjectState currentState, ExtensionCatalog recom log.info("Extensions from " + provider.getKey() + ":"); for (ExtensionInfo info : provider.getValue()) { if (info.currentDep.isPlatformExtension()) { - log.info(String.format(UpdateProjectCommandHandler.PLATFORM_RECTIFY_FORMAT, + log.info(String.format(UpdateProjectCommandHandler.ITEM_FORMAT, UpdateProjectCommandHandler.ADD, info.getRecommendedDependency().getArtifact().toCompactCoords())); } else if (info.getRecommendedDependency().isPlatformExtension()) { - log.info(String.format(UpdateProjectCommandHandler.PLATFORM_RECTIFY_FORMAT, + log.info(String.format(UpdateProjectCommandHandler.ITEM_FORMAT, UpdateProjectCommandHandler.REMOVE, info.currentDep.getArtifact().toCompactCoords())); } else { - log.info(String.format(UpdateProjectCommandHandler.PLATFORM_RECTIFY_FORMAT, + log.info(String.format(UpdateProjectCommandHandler.ITEM_FORMAT, UpdateProjectCommandHandler.UPDATE, info.currentDep.getArtifact().toCompactCoords() + " -> " + info.getRecommendedDependency().getVersion())); } diff --git a/independent-projects/tools/devtools-common/src/main/java/io/quarkus/devtools/project/update/QuarkusUpdateRecipe.java b/independent-projects/tools/devtools-common/src/main/java/io/quarkus/devtools/project/update/QuarkusUpdateRecipe.java index 321cef54a3ffca..6df006981e3673 100644 --- a/independent-projects/tools/devtools-common/src/main/java/io/quarkus/devtools/project/update/QuarkusUpdateRecipe.java +++ b/independent-projects/tools/devtools-common/src/main/java/io/quarkus/devtools/project/update/QuarkusUpdateRecipe.java @@ -10,9 +10,10 @@ public class QuarkusUpdateRecipe { + public static final String RECIPE_IO_QUARKUS_OPENREWRITE_QUARKUS = "io.quarkus.openrewrite.Quarkus"; public static final Map QUARKUS_RECIPE = Map.of( "type", "specs.openrewrite.org/v1beta/recipe", - "name", "io.quarkus.openrewrite.Quarkus", + "name", RECIPE_IO_QUARKUS_OPENREWRITE_QUARKUS, "displayName", "Migrate quarkus project to a new version", "description", "Update Quarkus version and refactor imports and resources if needed.", "tags", List.of("quarkus")); diff --git a/independent-projects/tools/devtools-common/src/main/java/io/quarkus/devtools/project/update/QuarkusUpdatesRepository.java b/independent-projects/tools/devtools-common/src/main/java/io/quarkus/devtools/project/update/QuarkusUpdatesRepository.java index 0db05e1be9351d..51aad48b948ff0 100644 --- a/independent-projects/tools/devtools-common/src/main/java/io/quarkus/devtools/project/update/QuarkusUpdatesRepository.java +++ b/independent-projects/tools/devtools-common/src/main/java/io/quarkus/devtools/project/update/QuarkusUpdatesRepository.java @@ -27,11 +27,12 @@ public static List fetchLatestRecipes(MavenArtifactResolver artifactReso try { final ResourceLoader resourceLoader = ResourceLoaders.resolveFileResourceLoader( artifactResolver.resolve(DependencyUtils.toArtifact(QUARKUS_RECIPE_GAV)).getArtifact().getFile()); + return resourceLoader.loadResourceAsPath("quarkus-updates/core", path -> { try (final Stream pathStream = Files.walk(path)) { return pathStream - .filter(p -> p.getFileName().toString().matches("^\\d\\.\\d(\\.\\d)?\\.ya?ml$")) + .filter(p -> p.getFileName().toString().matches("^\\d\\H+.ya?ml$")) .filter(p -> shouldApplyRecipe(p.getFileName().toString(), currentVersion, targetVersion)) .map(p -> { try { diff --git a/independent-projects/tools/devtools-common/src/test/java/io/quarkus/devtools/project/update/QuarkusUpdatesRepositoryTest.java b/independent-projects/tools/devtools-common/src/test/java/io/quarkus/devtools/project/update/QuarkusUpdatesRepositoryTest.java new file mode 100644 index 00000000000000..5e4dd6d4935d60 --- /dev/null +++ b/independent-projects/tools/devtools-common/src/test/java/io/quarkus/devtools/project/update/QuarkusUpdatesRepositoryTest.java @@ -0,0 +1,19 @@ +package io.quarkus.devtools.project.update; + +import static io.quarkus.devtools.project.update.QuarkusUpdatesRepository.shouldApplyRecipe; +import static org.junit.jupiter.api.Assertions.*; + +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.CsvFileSource; + +class QuarkusUpdatesRepositoryTest { + + @ParameterizedTest + @CsvFileSource(resources = "/should_apply_recipe_test_cases.csv", numLinesToSkip = 1) + void testShouldApplyRecipeWithCSV(String recipeVersion, String currentVersion, String targetVersion, + boolean expectedResult) { + boolean result = shouldApplyRecipe(recipeVersion, currentVersion, targetVersion); + assertEquals(expectedResult, result); + } + +} diff --git a/independent-projects/tools/devtools-common/src/test/resources/should_apply_recipe_test_cases.csv b/independent-projects/tools/devtools-common/src/test/resources/should_apply_recipe_test_cases.csv index 8b1cfc47e3635e..702af67245b4ab 100644 --- a/independent-projects/tools/devtools-common/src/test/resources/should_apply_recipe_test_cases.csv +++ b/independent-projects/tools/devtools-common/src/test/resources/should_apply_recipe_test_cases.csv @@ -1,4 +1,5 @@ recipeFileName,currentVersion,targetVersion,expectedResult +3alpha.yaml,2.0.0.Final,3.0.0.Alpha4,true 3.0.yaml,2.0.0.Final,3.0.0.Final,true 2.9.yaml,2.0.0.Final,3.0.0.Final,true 2.7.yaml,2.0.0.Final,3.0.0.Final,true