From 85ef95831b56f847dc2af4753d37c97ffe73717e Mon Sep 17 00:00:00 2001 From: Andrei Shakirin Date: Thu, 28 Jul 2022 16:34:18 +0200 Subject: [PATCH 1/7] Ping BOM test --- .../upgrade_27_30/UpgradeBomVersion27_30.java | 10 +++ .../upgrade_27_30/UpgradeBomTo30Test.java | 64 +++++++++++++++++++ 2 files changed, 74 insertions(+) create mode 100644 components/sbm-recipes-boot-upgrade/src/main/java/org/springframework/sbm/boot/upgrade_27_30/UpgradeBomVersion27_30.java create mode 100644 components/sbm-recipes-boot-upgrade/src/test/java/org/springframework/sbm/boot/upgrade_27_30/UpgradeBomTo30Test.java diff --git a/components/sbm-recipes-boot-upgrade/src/main/java/org/springframework/sbm/boot/upgrade_27_30/UpgradeBomVersion27_30.java b/components/sbm-recipes-boot-upgrade/src/main/java/org/springframework/sbm/boot/upgrade_27_30/UpgradeBomVersion27_30.java new file mode 100644 index 000000000..591b4802e --- /dev/null +++ b/components/sbm-recipes-boot-upgrade/src/main/java/org/springframework/sbm/boot/upgrade_27_30/UpgradeBomVersion27_30.java @@ -0,0 +1,10 @@ +package org.springframework.sbm.boot.upgrade_27_30; + +import org.openrewrite.Recipe; + +public class UpgradeBomVersion27_30 extends Recipe { + @Override + public String getDisplayName() { + return "UpgradeBomVersion27_30"; + } +} diff --git a/components/sbm-recipes-boot-upgrade/src/test/java/org/springframework/sbm/boot/upgrade_27_30/UpgradeBomTo30Test.java b/components/sbm-recipes-boot-upgrade/src/test/java/org/springframework/sbm/boot/upgrade_27_30/UpgradeBomTo30Test.java new file mode 100644 index 000000000..c953b915d --- /dev/null +++ b/components/sbm-recipes-boot-upgrade/src/test/java/org/springframework/sbm/boot/upgrade_27_30/UpgradeBomTo30Test.java @@ -0,0 +1,64 @@ +package org.springframework.sbm.boot.upgrade_27_30; + +import org.junit.jupiter.api.Test; +import org.openrewrite.InMemoryExecutionContext; +import org.openrewrite.Recipe; +import org.openrewrite.Result; +import org.openrewrite.java.JavaParser; +import org.openrewrite.java.tree.J; +import org.openrewrite.maven.MavenParser; +import org.openrewrite.xml.tree.Xml; + +import java.util.ArrayList; +import java.util.List; + +import static org.assertj.core.api.Assertions.assertThat; + +public class UpgradeBomTo30Test { + + @Test + void shouldUpdateBomVersionTo30() { + Recipe recipe = new UpgradeBomVersion27_30(); + + List errors = new ArrayList<>(); + InMemoryExecutionContext ctx = new InMemoryExecutionContext((ex) -> { + ex.printStackTrace(); + errors.add(ex); + }); + + MavenParser parser = MavenParser.builder().build(); + List documentList = parser.parse(""" + + + 4.0.0 + + test + test + 1.0.0-SNAPSHOT + + Test + + + 2.7.1 + + + + + + org.springframework.boot + spring-boot-dependencies + ${spring-boot.version} + pom + import + + + + + """); + + List result = recipe.run(documentList, ctx); + + assertThat(errors).hasSize(1); + } +} From 0e4ea6480dec46aab46be3423c51932337a86e56 Mon Sep 17 00:00:00 2001 From: sanagaraj-pivotal Date: Thu, 28 Jul 2022 16:28:09 +0100 Subject: [PATCH 2/7] Passing test --- .../upgrade_27_30/UpgradeBomTo30Test.java | 84 +++++++++++++++++-- 1 file changed, 77 insertions(+), 7 deletions(-) diff --git a/components/sbm-recipes-boot-upgrade/src/test/java/org/springframework/sbm/boot/upgrade_27_30/UpgradeBomTo30Test.java b/components/sbm-recipes-boot-upgrade/src/test/java/org/springframework/sbm/boot/upgrade_27_30/UpgradeBomTo30Test.java index c953b915d..9353905e9 100644 --- a/components/sbm-recipes-boot-upgrade/src/test/java/org/springframework/sbm/boot/upgrade_27_30/UpgradeBomTo30Test.java +++ b/components/sbm-recipes-boot-upgrade/src/test/java/org/springframework/sbm/boot/upgrade_27_30/UpgradeBomTo30Test.java @@ -7,6 +7,7 @@ import org.openrewrite.java.JavaParser; import org.openrewrite.java.tree.J; import org.openrewrite.maven.MavenParser; +import org.openrewrite.maven.UpgradeDependencyVersion; import org.openrewrite.xml.tree.Xml; import java.util.ArrayList; @@ -18,7 +19,13 @@ public class UpgradeBomTo30Test { @Test void shouldUpdateBomVersionTo30() { - Recipe recipe = new UpgradeBomVersion27_30(); + Recipe recipe = new UpgradeDependencyVersion( + "org.springframework.boot", + "spring-boot-dependencies", + "3.0.0-M3", + null, + null + ); List errors = new ArrayList<>(); InMemoryExecutionContext ctx = new InMemoryExecutionContext((ex) -> { @@ -39,26 +46,89 @@ void shouldUpdateBomVersionTo30() { Test - - 2.7.1 - - org.springframework.boot spring-boot-dependencies - ${spring-boot.version} + 2.7.1 pom import + + + spring-milestone + https://repo.spring.io/milestone + + false + + + + + + + spring-milestone + https://repo.spring.io/milestone + + false + + + """); List result = recipe.run(documentList, ctx); - assertThat(errors).hasSize(1); + assertThat(result).hasSize(1); + + assertThat(result.get(0).getAfter().printAll()) + .isEqualTo(""" + + + 4.0.0 + + test + test + 1.0.0-SNAPSHOT + + Test + + + + + org.springframework.boot + spring-boot-dependencies + 3.0.0-M3 + pom + import + + + + + + spring-milestone + https://repo.spring.io/milestone + + false + + + + + + + spring-milestone + https://repo.spring.io/milestone + + false + + + + + """); } + + // TODO: handle variable reference in pom } From ba457453b0c67a6259231cb0a89d7442d9b9d513 Mon Sep 17 00:00:00 2001 From: sanagaraj-pivotal Date: Thu, 28 Jul 2022 16:31:13 +0100 Subject: [PATCH 3/7] add variable reference --- .../boot/upgrade_27_30/UpgradeBomTo30Test.java | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/components/sbm-recipes-boot-upgrade/src/test/java/org/springframework/sbm/boot/upgrade_27_30/UpgradeBomTo30Test.java b/components/sbm-recipes-boot-upgrade/src/test/java/org/springframework/sbm/boot/upgrade_27_30/UpgradeBomTo30Test.java index 9353905e9..b3de9ea44 100644 --- a/components/sbm-recipes-boot-upgrade/src/test/java/org/springframework/sbm/boot/upgrade_27_30/UpgradeBomTo30Test.java +++ b/components/sbm-recipes-boot-upgrade/src/test/java/org/springframework/sbm/boot/upgrade_27_30/UpgradeBomTo30Test.java @@ -44,6 +44,9 @@ void shouldUpdateBomVersionTo30() { test 1.0.0-SNAPSHOT + + 2.7.1 + Test @@ -51,7 +54,7 @@ void shouldUpdateBomVersionTo30() { org.springframework.boot spring-boot-dependencies - 2.7.1 + ${spring.version} pom import @@ -93,15 +96,18 @@ void shouldUpdateBomVersionTo30() { test test 1.0.0-SNAPSHOT - + + + 3.0.0-M3 + Test - + org.springframework.boot spring-boot-dependencies - 3.0.0-M3 + ${spring.version} pom import @@ -129,6 +135,4 @@ void shouldUpdateBomVersionTo30() { """); } - - // TODO: handle variable reference in pom } From 79e3c28f7ddb80e919faa62437772f21c15d4fce Mon Sep 17 00:00:00 2001 From: sanagaraj-pivotal Date: Thu, 28 Jul 2022 16:39:57 +0100 Subject: [PATCH 4/7] Integrating BOM upgrade recipe --- ...oot-2.7-3.0-dependency-version-update.yaml | 8 ++- .../upgrade_27_30/UpgradeBomTo30Test.java | 64 +++++++++++++++++++ 2 files changed, 71 insertions(+), 1 deletion(-) diff --git a/components/sbm-recipes-boot-upgrade/src/main/resources/recipes/boot-2.7-3.0-dependency-version-update.yaml b/components/sbm-recipes-boot-upgrade/src/main/resources/recipes/boot-2.7-3.0-dependency-version-update.yaml index e72ed95c1..3f22b0f90 100644 --- a/components/sbm-recipes-boot-upgrade/src/main/resources/recipes/boot-2.7-3.0-dependency-version-update.yaml +++ b/components/sbm-recipes-boot-upgrade/src/main/resources/recipes/boot-2.7-3.0-dependency-version-update.yaml @@ -27,16 +27,22 @@ type: org.springframework.sbm.boot.upgrade.common.conditions.HasSpringBootParentOfVersion versionStartingWith: "2.7." description: Add Spring Milestone Repository and bump parent pom to 3.0.0-M3 - + openRewriteRecipe: |- type: specs.openrewrite.org/v1beta/recipe name: org.openrewrite.java.spring.boot3.data.UpgradeSpringData30 displayName: Upgrade to Spring Data 3.0 description: 'Upgrade to Spring Data to 3.0 from any prior version.' + recipeList: - org.openrewrite.maven.UpgradeParentVersion: groupId: org.springframework.boot artifactId: spring-boot-starter-parent newVersion: 3.0.0-M3 + - org.openrewrite.maven.UpgradeDependencyVersion: + groupId: org.springframework.boot + artifactId: spring-boot-dependencies + newVersion: 3.0.0-M3 + - type: org.springframework.sbm.engine.recipe.OpenRewriteDeclarativeRecipeAdapter condition: type: org.springframework.sbm.boot.upgrade.common.conditions.HasSpringBootParentOfVersion diff --git a/components/sbm-recipes-boot-upgrade/src/test/java/org/springframework/sbm/boot/upgrade_27_30/UpgradeBomTo30Test.java b/components/sbm-recipes-boot-upgrade/src/test/java/org/springframework/sbm/boot/upgrade_27_30/UpgradeBomTo30Test.java index b3de9ea44..8da6b42bc 100644 --- a/components/sbm-recipes-boot-upgrade/src/test/java/org/springframework/sbm/boot/upgrade_27_30/UpgradeBomTo30Test.java +++ b/components/sbm-recipes-boot-upgrade/src/test/java/org/springframework/sbm/boot/upgrade_27_30/UpgradeBomTo30Test.java @@ -135,4 +135,68 @@ void shouldUpdateBomVersionTo30() { """); } + + @Test + public void whenThereIsNoBomNoChanges() { + Recipe recipe = new UpgradeDependencyVersion( + "org.springframework.boot", + "spring-boot-dependencies", + "3.0.0-M3", + null, + null + ); + + List errors = new ArrayList<>(); + InMemoryExecutionContext ctx = new InMemoryExecutionContext((ex) -> { + ex.printStackTrace(); + errors.add(ex); + }); + + MavenParser parser = MavenParser.builder().build(); + List documentList = parser.parse(""" + + + 4.0.0 + + test + test + 1.0.0-SNAPSHOT + + + 2.7.1 + + Test + + + org.springframework.boot + spring-boot-starter-parent + 3.0.0-M3 + + + + spring-milestone + https://repo.spring.io/milestone + + false + + + + + + + spring-milestone + https://repo.spring.io/milestone + + false + + + + + """); + + List result = recipe.run(documentList, ctx); + + assertThat(result).hasSize(0); + } } From ff25734aa2da13a49039ce2af73bd5505882e0db Mon Sep 17 00:00:00 2001 From: sanagaraj-pivotal Date: Fri, 29 Jul 2022 09:58:14 +0100 Subject: [PATCH 5/7] Now the test code is runnable --- .../BootUpgrade_27_30_IntegrationTest.java | 138 ++++++++++-------- .../testcode/boot-migration-27-30/pom.xml | 5 + .../springboot/example/upgrade/Student.java | 10 +- .../example/upgrade/StudentRepo.java | 2 +- .../src/main/resources/application.properties | 10 +- .../src/main/resources/application.yaml | 14 +- 6 files changed, 105 insertions(+), 74 deletions(-) diff --git a/applications/spring-shell/src/test/java/org/springframework/sbm/BootUpgrade_27_30_IntegrationTest.java b/applications/spring-shell/src/test/java/org/springframework/sbm/BootUpgrade_27_30_IntegrationTest.java index 59351959a..d0a0d7504 100644 --- a/applications/spring-shell/src/test/java/org/springframework/sbm/BootUpgrade_27_30_IntegrationTest.java +++ b/applications/spring-shell/src/test/java/org/springframework/sbm/BootUpgrade_27_30_IntegrationTest.java @@ -59,7 +59,7 @@ private void verifyCrudRepoAddition() { import org.springframework.data.repository.CrudRepository; import org.springframework.data.repository.PagingAndSortingRepository; - public interface StudentRepo extends PagingAndSortingRepository, Long>, CrudRepository, Long> { + public interface StudentRepo extends PagingAndSortingRepository, CrudRepository { } """); } @@ -98,41 +98,45 @@ private void verifyYamlConfigurationUpdate() { String micrometerClass = loadFile(Path.of("src/main/resources/application.yaml")); assertThat(micrometerClass).isEqualTo( "spring:\n" + - " elasticsearch:\n" + - " connection-timeout: '1'\n" + - " password: testpassword\n" + - " socket-timeout: '2'\n" + - " restclient.sniffer.delay-after-failure: '3'\n" + - " restclient.sniffer.interval: '4'\n" + - " username: username\n" + - " security:\n" + - " saml2:\n" + - " relyingparty:\n" + - " registration:\n" + - " idpone:\n" + - " assertingparty:\n" + - " verification:\n" + - " credentials:\n" + - " certificate-location: classpath:saml/idpone.crt\n" + - " entity-id: https://idpone.com\n" + - " sso-url: https://idpone.com\n" + - " elasticsearch.connection-timeout: '1000'\n" + - " elasticsearch.webclient.max-in-memory-size: '122'\n" + - " elasticsearch.password: abc\n" + - " elasticsearch.socket-timeout: '100'\n" + - " elasticsearch.username: testUser\n" + - " sql.init.data-locations: testdata\n" + - " sql.init.password: password\n" + - " sql.init.username: username-data\n" + - " sql.init.mode: mode1\n" + - " sql.init.platform: pls\n" + - " sql.init.schema-locations: table1\n" + - " sql.init.password: password2\n" + - " sql.init.username: username-schema\n" + - " sql.init.separator: k\n" + - " sql.init.encoding: UTF-8\n" + - "server.reactive.session.cookie.same-site: 'true'" + - "\n"); + " datasource:\n" + + " url: jdbc:h2:mem:testdb\n" + + " driverClassName: org.h2.Driver\n" + + " jpa:\n" + + " database-platform: org.hibernate.dialect.H2Dialect\n" + + " elasticsearch:\n" + + " connection-timeout: '1'\n" + + " password: testpassword\n" + + " socket-timeout: '2'\n" + + " restclient.sniffer.delay-after-failure: '3'\n" + + " restclient.sniffer.interval: '4'\n" + + " username: username\n" + + " security:\n" + + " saml2:\n" + + " relyingparty:\n" + + " registration:\n" + + " idpone:\n" + + " assertingparty:\n" + + " verification:\n" + + " credentials:\n" + + " certificate-location: classpath:saml/idpone.crt\n" + + " entity-id: https://idpone.com\n" + + " sso-url: https://idpone.com\n" + + " elasticsearch.connection-timeout: '1000'\n" + + " elasticsearch.webclient.max-in-memory-size: '122'\n" + + " elasticsearch.password: abc\n" + + " elasticsearch.socket-timeout: '100'\n" + + " elasticsearch.username: testUser\n" + + " sql.init.data-locations: testdata\n" + + " sql.init.password: password\n" + + " sql.init.username: sa\n" + + " sql.init.mode: mode1\n" + + " sql.init.platform: pls\n" + + " sql.init.schema-locations: table1\n" + + " sql.init.password: password\n" + + " sql.init.username: sa\n" + + " sql.init.separator: k\n" + + " sql.init.encoding: UTF-8\n" + + "server.reactive.session.cookie.same-site: 'true'\n"); } @@ -141,34 +145,40 @@ private void verifyPropertyConfigurationUpdate() { String applicationProperties = loadFile(Path.of("src/main/resources/application.properties")); assertThat(applicationProperties).isEqualTo( "spring.elasticsearch.connection-timeout=1000\n" + - "spring.elasticsearch.webclient.max-in-memory-size=122\n" + - "spring.elasticsearch.password=abc\n" + - "spring.elasticsearch.socket-timeout=100\n" + - "spring.elasticsearch.username=testUser\n" + - "\n" + - "spring.sql.init.data-locations=testdata\n" + - "spring.sql.init.password=password\n" + - "spring.sql.init.username=username\n" + - "spring.sql.init.mode=mode1\n" + - "spring.sql.init.platform=pls\n" + - "spring.sql.init.schema-locations=table1\n" + - "spring.sql.init.password=password2\n" + - "spring.sql.init.username=username2\n" + - "spring.sql.init.separator=k\n" + - "spring.sql.init.encoding=UTF-8\n" + - "\n" + - "spring.elasticsearch.connection-timeout=1\n" + - "spring.elasticsearch.password=testpassword\n" + - "spring.elasticsearch.socket-timeout=2\n" + - "spring.elasticsearch.restclient.sniffer.delay-after-failure=3\n" + - "spring.elasticsearch.restclient.sniffer.interval=4\n" + - "spring.elasticsearch.username=username\n" + - "\n" + - "spring.security.saml2.relyingparty.registration.idpone.assertingparty.entity-id=https://idpone.com\n" + - "spring.security.saml2.relyingparty.registration.idpone.assertingparty.sso-url=https://idpone.com\n" + - "spring.security.saml2.relyingparty.registration.idpone.assertingparty.verification.credentials.certificate-location=classpath:saml/idpone.crt\n" + - "\n" + - "server.reactive.session.cookie.same-site=true\n"); + "spring.elasticsearch.webclient.max-in-memory-size=122\n" + + "spring.elasticsearch.password=abc\n" + + "spring.elasticsearch.socket-timeout=100\n" + + "spring.elasticsearch.username=testUser\n" + + "\n" + + "spring.sql.init.data-locations=testdata\n" + + "spring.sql.init.password=password\n" + + "spring.sql.init.username=username\n" + + "spring.sql.init.mode=mode1\n" + + "spring.sql.init.platform=pls\n" + + "spring.sql.init.schema-locations=table1\n" + + "spring.sql.init.password=password2\n" + + "spring.sql.init.username=username2\n" + + "spring.sql.init.separator=k\n" + + "spring.sql.init.encoding=UTF-8\n" + + "\n" + + "spring.elasticsearch.connection-timeout=1\n" + + "spring.elasticsearch.password=testpassword\n" + + "spring.elasticsearch.socket-timeout=2\n" + + "spring.elasticsearch.restclient.sniffer.delay-after-failure=3\n" + + "spring.elasticsearch.restclient.sniffer.interval=4\n" + + "spring.elasticsearch.username=username\n" + + "\n" + + "spring.security.saml2.relyingparty.registration.idpone.assertingparty.entity-id=https://idpone.com\n" + + "spring.security.saml2.relyingparty.registration.idpone.assertingparty.sso-url=https://idpone.com\n" + + "spring.security.saml2.relyingparty.registration.idpone.assertingparty.verification.credentials.certificate-location=classpath:saml/idpone.crt\n" + + "\n" + + "server.reactive.session.cookie.same-site=true\n" + + "\n" + + "spring.datasource.url=jdbc:h2:mem:testdb\n" + + "spring.datasource.driverClassName=org.h2.Driver\n" + + "spring.datasource.username=sa\n" + + "spring.datasource.password=password\n" + + "spring.jpa.database-platform=org.hibernate.dialect.H2Dialect\n"); } private void verifyParentPomVersion() { diff --git a/applications/spring-shell/src/test/resources/testcode/boot-migration-27-30/pom.xml b/applications/spring-shell/src/test/resources/testcode/boot-migration-27-30/pom.xml index c5d896f33..09bc13af5 100644 --- a/applications/spring-shell/src/test/resources/testcode/boot-migration-27-30/pom.xml +++ b/applications/spring-shell/src/test/resources/testcode/boot-migration-27-30/pom.xml @@ -29,6 +29,11 @@ org.springframework.boot spring-boot-starter-data-jpa + + com.h2database + h2 + runtime + org.springframework.boot spring-boot-starter-test diff --git a/applications/spring-shell/src/test/resources/testcode/boot-migration-27-30/src/main/java/org/springboot/example/upgrade/Student.java b/applications/spring-shell/src/test/resources/testcode/boot-migration-27-30/src/main/java/org/springboot/example/upgrade/Student.java index 1716b290d..ff60b3718 100644 --- a/applications/spring-shell/src/test/resources/testcode/boot-migration-27-30/src/main/java/org/springboot/example/upgrade/Student.java +++ b/applications/spring-shell/src/test/resources/testcode/boot-migration-27-30/src/main/java/org/springboot/example/upgrade/Student.java @@ -1,5 +1,11 @@ package org.springboot.example.upgrade; -public class Student { - private T name; +import javax.persistence.Entity; +import javax.persistence.Id; + +@Entity +public class Student { + @Id + private long id; + private String name; } diff --git a/applications/spring-shell/src/test/resources/testcode/boot-migration-27-30/src/main/java/org/springboot/example/upgrade/StudentRepo.java b/applications/spring-shell/src/test/resources/testcode/boot-migration-27-30/src/main/java/org/springboot/example/upgrade/StudentRepo.java index 32e1889fb..f7c054510 100644 --- a/applications/spring-shell/src/test/resources/testcode/boot-migration-27-30/src/main/java/org/springboot/example/upgrade/StudentRepo.java +++ b/applications/spring-shell/src/test/resources/testcode/boot-migration-27-30/src/main/java/org/springboot/example/upgrade/StudentRepo.java @@ -2,5 +2,5 @@ import org.springframework.data.repository.PagingAndSortingRepository; -public interface StudentRepo extends PagingAndSortingRepository, Long> { +public interface StudentRepo extends PagingAndSortingRepository { } diff --git a/applications/spring-shell/src/test/resources/testcode/boot-migration-27-30/src/main/resources/application.properties b/applications/spring-shell/src/test/resources/testcode/boot-migration-27-30/src/main/resources/application.properties index efb355fce..ca4a5204b 100644 --- a/applications/spring-shell/src/test/resources/testcode/boot-migration-27-30/src/main/resources/application.properties +++ b/applications/spring-shell/src/test/resources/testcode/boot-migration-27-30/src/main/resources/application.properties @@ -78,9 +78,9 @@ spring.graphql.cors.allowed-headers=hello spring.graphql.cors.allow-credentials=true spring.h2.console.enabled=true -spring.h2.console.path="/tmp" +spring.h2.console.path=/tmp spring.h2.console.settings.trace=true -spring.h2.console.settings.web-admin-password="password" +spring.h2.console.settings.web-admin-password=password spring.h2.console.settings.web-allow-others=true spring.jersey.type=type1 @@ -113,3 +113,9 @@ spring.security.saml2.relyingparty.registration.idpone.identityprovider.sso-url= spring.security.saml2.relyingparty.registration.idpone.identityprovider.verification.credentials.certificate-location=classpath:saml/idpone.crt spring.webflux.session.cookie.same-site=true + +spring.datasource.url=jdbc:h2:mem:testdb +spring.datasource.driverClassName=org.h2.Driver +spring.datasource.username=sa +spring.datasource.password=password +spring.jpa.database-platform=org.hibernate.dialect.H2Dialect diff --git a/applications/spring-shell/src/test/resources/testcode/boot-migration-27-30/src/main/resources/application.yaml b/applications/spring-shell/src/test/resources/testcode/boot-migration-27-30/src/main/resources/application.yaml index 6bd2957bd..b3bda7b38 100644 --- a/applications/spring-shell/src/test/resources/testcode/boot-migration-27-30/src/main/resources/application.yaml +++ b/applications/spring-shell/src/test/resources/testcode/boot-migration-27-30/src/main/resources/application.yaml @@ -1,15 +1,19 @@ spring: datasource: data: testdata - data-username: username-data - schema-username: username-schema - schema-password: password2 + url: jdbc:h2:mem:testdb + data-username: sa + schema-username: sa + schema-password: password + driverClassName: org.h2.Driver schema: table1 initialization-mode: mode1 data-password: password sql-script-encoding: UTF-8 platform: pls separator: k + jpa: + database-platform: org.hibernate.dialect.H2Dialect activemq: pool: max-sessions-per-connection: '300' @@ -83,9 +87,9 @@ spring: username: testUser h2: console: - path: '"/tmp"' + path: "/tmp" settings: - web-admin-password: '"password"' + web-admin-password: "password" web-allow-others: 'true' trace: 'true' enabled: 'true' From 46e59079749ed2bee59586e08a8433f46813d534 Mon Sep 17 00:00:00 2001 From: Andrei Shakirin Date: Fri, 29 Jul 2022 11:44:53 +0200 Subject: [PATCH 6/7] Adde integration test for BOM version migration --- .../BootUpgrade_27_30_IntegrationTest.java | 19 +++++++++++++++++++ .../testcode/boot-migration-27-30/pom.xml | 13 +++++++++++++ 2 files changed, 32 insertions(+) diff --git a/applications/spring-shell/src/test/java/org/springframework/sbm/BootUpgrade_27_30_IntegrationTest.java b/applications/spring-shell/src/test/java/org/springframework/sbm/BootUpgrade_27_30_IntegrationTest.java index d0a0d7504..acb9f3687 100644 --- a/applications/spring-shell/src/test/java/org/springframework/sbm/BootUpgrade_27_30_IntegrationTest.java +++ b/applications/spring-shell/src/test/java/org/springframework/sbm/BootUpgrade_27_30_IntegrationTest.java @@ -22,6 +22,7 @@ import org.openrewrite.xml.tree.Xml; import java.nio.file.Path; +import java.util.List; import static org.assertj.core.api.AssertionsForInterfaceTypes.assertThat; @@ -42,6 +43,7 @@ void migrateSimpleApplication() { applyRecipe("boot-2.7-3.0-dependency-version-update"); verifyParentPomVersion(); + verifyBomVersion(); verifyMicrometerPackageUpdate(); verifyYamlConfigurationUpdate(); verifyPropertyConfigurationUpdate(); @@ -200,6 +202,23 @@ private void verifyParentPomVersion() { assertThat(artifactId).isEqualTo("spring-boot-starter-parent"); } + private void verifyBomVersion() { + String pomContent = loadFile(Path.of("pom.xml")); + + Xml.Document mavenAsXMLDocument = parsePom(pomContent); + + Xml.Tag parentTag =mavenAsXMLDocument + .getRoot() + .getChildren("dependencyManagement").get(0); + + List dependencies = parentTag.getChildren("dependencies") + .get(0) + .getChildren("dependency"); + + assertThat(dependencies).hasSize(1); + assertThat(dependencies.get(0).getChildValue("version").get()).isEqualTo("3.0.0-M3"); + } + @NotNull private Xml.Document parsePom(String pomContent) { MavenParser mavenParser = new MavenParser.Builder().build(); diff --git a/applications/spring-shell/src/test/resources/testcode/boot-migration-27-30/pom.xml b/applications/spring-shell/src/test/resources/testcode/boot-migration-27-30/pom.xml index 09bc13af5..c671e857b 100644 --- a/applications/spring-shell/src/test/resources/testcode/boot-migration-27-30/pom.xml +++ b/applications/spring-shell/src/test/resources/testcode/boot-migration-27-30/pom.xml @@ -16,6 +16,19 @@ 17 + + + + + org.springframework.boot + spring-boot-dependencies + 2.7.1 + pom + import + + + + org.springframework.boot From da900cfc94347cde4ea0512902bf5f0be701efa6 Mon Sep 17 00:00:00 2001 From: Andrei Shakirin Date: Mon, 1 Aug 2022 12:36:14 +0200 Subject: [PATCH 7/7] Improved import BOM migration test --- .../BootUpgrade_27_30_IntegrationTest.java | 19 ------------------- .../testcode/boot-migration-27-30/pom.xml | 12 ------------ .../PreconditionVerifierIntegrationTest.java | 1 + 3 files changed, 1 insertion(+), 31 deletions(-) diff --git a/applications/spring-shell/src/test/java/org/springframework/sbm/BootUpgrade_27_30_IntegrationTest.java b/applications/spring-shell/src/test/java/org/springframework/sbm/BootUpgrade_27_30_IntegrationTest.java index acb9f3687..d0a0d7504 100644 --- a/applications/spring-shell/src/test/java/org/springframework/sbm/BootUpgrade_27_30_IntegrationTest.java +++ b/applications/spring-shell/src/test/java/org/springframework/sbm/BootUpgrade_27_30_IntegrationTest.java @@ -22,7 +22,6 @@ import org.openrewrite.xml.tree.Xml; import java.nio.file.Path; -import java.util.List; import static org.assertj.core.api.AssertionsForInterfaceTypes.assertThat; @@ -43,7 +42,6 @@ void migrateSimpleApplication() { applyRecipe("boot-2.7-3.0-dependency-version-update"); verifyParentPomVersion(); - verifyBomVersion(); verifyMicrometerPackageUpdate(); verifyYamlConfigurationUpdate(); verifyPropertyConfigurationUpdate(); @@ -202,23 +200,6 @@ private void verifyParentPomVersion() { assertThat(artifactId).isEqualTo("spring-boot-starter-parent"); } - private void verifyBomVersion() { - String pomContent = loadFile(Path.of("pom.xml")); - - Xml.Document mavenAsXMLDocument = parsePom(pomContent); - - Xml.Tag parentTag =mavenAsXMLDocument - .getRoot() - .getChildren("dependencyManagement").get(0); - - List dependencies = parentTag.getChildren("dependencies") - .get(0) - .getChildren("dependency"); - - assertThat(dependencies).hasSize(1); - assertThat(dependencies.get(0).getChildValue("version").get()).isEqualTo("3.0.0-M3"); - } - @NotNull private Xml.Document parsePom(String pomContent) { MavenParser mavenParser = new MavenParser.Builder().build(); diff --git a/applications/spring-shell/src/test/resources/testcode/boot-migration-27-30/pom.xml b/applications/spring-shell/src/test/resources/testcode/boot-migration-27-30/pom.xml index c671e857b..65b7c2172 100644 --- a/applications/spring-shell/src/test/resources/testcode/boot-migration-27-30/pom.xml +++ b/applications/spring-shell/src/test/resources/testcode/boot-migration-27-30/pom.xml @@ -17,18 +17,6 @@ 17 - - - - org.springframework.boot - spring-boot-dependencies - 2.7.1 - pom - import - - - - org.springframework.boot diff --git a/components/sbm-core/src/test/java/org/springframework/sbm/engine/precondition/PreconditionVerifierIntegrationTest.java b/components/sbm-core/src/test/java/org/springframework/sbm/engine/precondition/PreconditionVerifierIntegrationTest.java index f6e467f85..eb83a5cd3 100644 --- a/components/sbm-core/src/test/java/org/springframework/sbm/engine/precondition/PreconditionVerifierIntegrationTest.java +++ b/components/sbm-core/src/test/java/org/springframework/sbm/engine/precondition/PreconditionVerifierIntegrationTest.java @@ -17,6 +17,7 @@ import org.eclipse.jgit.api.Git; import org.jetbrains.annotations.NotNull; +import org.junit.jupiter.api.Disabled; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.io.TempDir; import org.springframework.beans.factory.annotation.Autowired;