From c917b614848db14b63ca6edb1f859dfbcefecdb1 Mon Sep 17 00:00:00 2001 From: Andy Wilkinson Date: Tue, 10 Mar 2020 20:52:51 +0000 Subject: [PATCH] Reinstate leading / in default value for spring.liquibase.change-log Unfortunately, while redundant for new applications, removing the leading slash adversely affected existing application upon upgrades as it caused Liquibase to re-apply every change log. Closes gh-20177 --- .../liquibase/LiquibaseEndpointTests.java | 6 +++--- .../liquibase/LiquibaseProperties.java | 2 +- ...additional-spring-configuration-metadata.json | 2 +- .../LiquibaseAutoConfigurationTests.java | 16 ++++++++-------- .../SampleLiquibaseApplicationTests.java | 4 ++-- 5 files changed, 15 insertions(+), 15 deletions(-) diff --git a/spring-boot-project/spring-boot-actuator/src/test/java/org/springframework/boot/actuate/liquibase/LiquibaseEndpointTests.java b/spring-boot-project/spring-boot-actuator/src/test/java/org/springframework/boot/actuate/liquibase/LiquibaseEndpointTests.java index 865adc38011..2afe88061a6 100644 --- a/spring-boot-project/spring-boot-actuator/src/test/java/org/springframework/boot/actuate/liquibase/LiquibaseEndpointTests.java +++ b/spring-boot-project/spring-boot-actuator/src/test/java/org/springframework/boot/actuate/liquibase/LiquibaseEndpointTests.java @@ -104,10 +104,10 @@ class LiquibaseEndpointTests { .liquibaseBeans().getContexts().get(context.getId()).getLiquibaseBeans(); assertThat(liquibaseBeans.get("liquibase").getChangeSets()).hasSize(1); assertThat(liquibaseBeans.get("liquibase").getChangeSets().get(0).getChangeLog()) - .isEqualTo("classpath:db/changelog/db.changelog-master.yaml"); + .isEqualTo("classpath:/db/changelog/db.changelog-master.yaml"); assertThat(liquibaseBeans.get("liquibaseBackup").getChangeSets()).hasSize(1); assertThat(liquibaseBeans.get("liquibaseBackup").getChangeSets().get(0).getChangeLog()) - .isEqualTo("classpath:db/changelog/db.changelog-master-backup.yaml"); + .isEqualTo("classpath:/db/changelog/db.changelog-master-backup.yaml"); }); } @@ -157,7 +157,7 @@ class LiquibaseEndpointTests { private SpringLiquibase createSpringLiquibase(String changeLog, DataSource dataSource) { SpringLiquibase liquibase = new SpringLiquibase(); - liquibase.setChangeLog("classpath:db/changelog/" + changeLog); + liquibase.setChangeLog("classpath:/db/changelog/" + changeLog); liquibase.setShouldRun(true); liquibase.setDataSource(dataSource); return liquibase; diff --git a/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/liquibase/LiquibaseProperties.java b/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/liquibase/LiquibaseProperties.java index 02545a08e6f..78f486e2f48 100644 --- a/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/liquibase/LiquibaseProperties.java +++ b/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/liquibase/LiquibaseProperties.java @@ -37,7 +37,7 @@ public class LiquibaseProperties { /** * Change log configuration path. */ - private String changeLog = "classpath:db/changelog/db.changelog-master.yaml"; + private String changeLog = "classpath:/db/changelog/db.changelog-master.yaml"; /** * Comma-separated list of runtime contexts to use. diff --git a/spring-boot-project/spring-boot-autoconfigure/src/main/resources/META-INF/additional-spring-configuration-metadata.json b/spring-boot-project/spring-boot-autoconfigure/src/main/resources/META-INF/additional-spring-configuration-metadata.json index 0aafe1f38f5..3246fd0288a 100644 --- a/spring-boot-project/spring-boot-autoconfigure/src/main/resources/META-INF/additional-spring-configuration-metadata.json +++ b/spring-boot-project/spring-boot-autoconfigure/src/main/resources/META-INF/additional-spring-configuration-metadata.json @@ -1105,7 +1105,7 @@ "name": "liquibase.change-log", "type": "java.lang.String", "description": "Change log configuration path.", - "defaultValue": "classpath:db/changelog/db.changelog-master.yaml", + "defaultValue": "classpath:/db/changelog/db.changelog-master.yaml", "deprecation": { "replacement": "spring.liquibase.change-log", "level": "error" diff --git a/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/liquibase/LiquibaseAutoConfigurationTests.java b/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/liquibase/LiquibaseAutoConfigurationTests.java index 93b255d870f..9dc07096011 100644 --- a/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/liquibase/LiquibaseAutoConfigurationTests.java +++ b/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/liquibase/LiquibaseAutoConfigurationTests.java @@ -102,7 +102,7 @@ class LiquibaseAutoConfigurationTests { void defaultSpringLiquibase() { this.contextRunner.withUserConfiguration(EmbeddedDataSourceConfiguration.class) .run(assertLiquibase((liquibase) -> { - assertThat(liquibase.getChangeLog()).isEqualTo("classpath:db/changelog/db.changelog-master.yaml"); + assertThat(liquibase.getChangeLog()).isEqualTo("classpath:/db/changelog/db.changelog-master.yaml"); assertThat(liquibase.getContexts()).isNull(); assertThat(liquibase.getDefaultSchema()).isNull(); assertThat(liquibase.isDropFirst()).isFalse(); @@ -112,26 +112,26 @@ class LiquibaseAutoConfigurationTests { @Test void changelogXml() { this.contextRunner.withUserConfiguration(EmbeddedDataSourceConfiguration.class) - .withPropertyValues("spring.liquibase.change-log:classpath:db/changelog/db.changelog-override.xml") + .withPropertyValues("spring.liquibase.change-log:classpath:/db/changelog/db.changelog-override.xml") .run(assertLiquibase((liquibase) -> assertThat(liquibase.getChangeLog()) - .isEqualTo("classpath:db/changelog/db.changelog-override.xml"))); + .isEqualTo("classpath:/db/changelog/db.changelog-override.xml"))); } @Test void changelogJson() { this.contextRunner.withUserConfiguration(EmbeddedDataSourceConfiguration.class) - .withPropertyValues("spring.liquibase.change-log:classpath:db/changelog/db.changelog-override.json") + .withPropertyValues("spring.liquibase.change-log:classpath:/db/changelog/db.changelog-override.json") .run(assertLiquibase((liquibase) -> assertThat(liquibase.getChangeLog()) - .isEqualTo("classpath:db/changelog/db.changelog-override.json"))); + .isEqualTo("classpath:/db/changelog/db.changelog-override.json"))); } @Test @EnabledOnJre(JRE.JAVA_8) void changelogSql() { this.contextRunner.withUserConfiguration(EmbeddedDataSourceConfiguration.class) - .withPropertyValues("spring.liquibase.change-log:classpath:db/changelog/db.changelog-override.sql") + .withPropertyValues("spring.liquibase.change-log:classpath:/db/changelog/db.changelog-override.sql") .run(assertLiquibase((liquibase) -> assertThat(liquibase.getChangeLog()) - .isEqualTo("classpath:db/changelog/db.changelog-override.sql"))); + .isEqualTo("classpath:/db/changelog/db.changelog-override.sql"))); } @Test @@ -381,7 +381,7 @@ class LiquibaseAutoConfigurationTests { @Bean SpringLiquibase springLiquibase(DataSource dataSource) { SpringLiquibase liquibase = new SpringLiquibase(); - liquibase.setChangeLog("classpath:db/changelog/db.changelog-master.yaml"); + liquibase.setChangeLog("classpath:/db/changelog/db.changelog-master.yaml"); liquibase.setShouldRun(true); liquibase.setDataSource(dataSource); return liquibase; diff --git a/spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-liquibase/src/test/java/smoketest/liquibase/SampleLiquibaseApplicationTests.java b/spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-liquibase/src/test/java/smoketest/liquibase/SampleLiquibaseApplicationTests.java index 2f3434f9aba..66aad00a25b 100644 --- a/spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-liquibase/src/test/java/smoketest/liquibase/SampleLiquibaseApplicationTests.java +++ b/spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-liquibase/src/test/java/smoketest/liquibase/SampleLiquibaseApplicationTests.java @@ -59,10 +59,10 @@ class SampleLiquibaseApplicationTests { assertThat(output).contains("Successfully acquired change log lock") .contains("Creating database history table with name: PUBLIC.DATABASECHANGELOG") .contains("Table person created") - .contains("ChangeSet classpath:db/changelog/db.changelog-master.yaml::1::" + .contains("ChangeSet classpath:/db/changelog/db.changelog-master.yaml::1::" + "marceloverdijk ran successfully") .contains("New row inserted into person") - .contains("ChangeSet classpath:db/changelog/" + .contains("ChangeSet classpath:/db/changelog/" + "db.changelog-master.yaml::2::marceloverdijk ran successfully") .contains("Successfully released change log lock"); }