Browse Source

Allow Flyway's Ignore Migration Patterns setting to be an empty string

See gh-46984

Signed-off-by: Chanwon-Seo <scwonn60@gmail.com>
pull/47304/head
Chanwon-Seo 4 months ago committed by Moritz Halbritter
parent
commit
972ceca8cd
  1. 1
      spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/flyway/FlywayAutoConfiguration.java
  2. 2
      spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/flyway/FlywayProperties.java
  3. 15
      spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/flyway/FlywayAutoConfigurationTests.java
  4. 3
      spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/flyway/FlywayPropertiesTests.java

1
spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/flyway/FlywayAutoConfiguration.java

@ -320,7 +320,6 @@ public class FlywayAutoConfiguration { @@ -320,7 +320,6 @@ public class FlywayAutoConfiguration {
map.from(properties.getSkipExecutingMigrations())
.to((skipExecutingMigrations) -> configuration.skipExecutingMigrations(skipExecutingMigrations));
map.from(properties.getIgnoreMigrationPatterns())
.whenNot(List::isEmpty)
.to((ignoreMigrationPatterns) -> configuration
.ignoreMigrationPatterns(ignoreMigrationPatterns.toArray(new String[0])));
map.from(properties.getDetectEncoding())

2
spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/flyway/FlywayProperties.java

@ -321,7 +321,7 @@ public class FlywayProperties { @@ -321,7 +321,7 @@ public class FlywayProperties {
/**
* List of patterns that identify migrations to ignore when performing validation.
*/
private List<String> ignoreMigrationPatterns;
private List<String> ignoreMigrationPatterns = Collections.singletonList("*:future");
/**
* Whether to attempt to automatically detect SQL migration file encoding.

15
spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/flyway/FlywayAutoConfigurationTests.java

@ -986,6 +986,21 @@ class FlywayAutoConfigurationTests { @@ -986,6 +986,21 @@ class FlywayAutoConfigurationTests {
.containsExactly(ValidatePattern.fromPattern("*:missing")));
}
@Test
void ignoreMigrationPatternsUsesDefaultValuesWhenNotSet() {
this.contextRunner.withUserConfiguration(EmbeddedDataSourceConfiguration.class)
.run((context) -> assertThat(context.getBean(Flyway.class).getConfiguration().getIgnoreMigrationPatterns())
.containsExactly(new FluentConfiguration().getIgnoreMigrationPatterns()));
}
@Test
void ignoreMigrationPatternsWhenEmpty() {
this.contextRunner.withUserConfiguration(EmbeddedDataSourceConfiguration.class)
.withPropertyValues("spring.flyway.ignore-migration-patterns=")
.run((context) -> assertThat(context.getBean(Flyway.class).getConfiguration().getIgnoreMigrationPatterns())
.isEmpty());
}
private ContextConsumer<AssertableApplicationContext> validateFlywayTeamsPropertyOnly(String propertyName) {
return (context) -> {
assertThat(context).hasFailed();

3
spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/flyway/FlywayPropertiesTests.java

@ -30,6 +30,7 @@ import org.flywaydb.core.api.MigrationVersion; @@ -30,6 +30,7 @@ import org.flywaydb.core.api.MigrationVersion;
import org.flywaydb.core.api.configuration.ClassicConfiguration;
import org.flywaydb.core.api.configuration.Configuration;
import org.flywaydb.core.api.configuration.FluentConfiguration;
import org.flywaydb.core.api.pattern.ValidatePattern;
import org.junit.jupiter.api.Test;
import org.springframework.beans.BeanWrapper;
@ -95,6 +96,8 @@ class FlywayPropertiesTests { @@ -95,6 +96,8 @@ class FlywayPropertiesTests {
assertThat(properties.getScriptPlaceholderSuffix()).isEqualTo(configuration.getScriptPlaceholderSuffix());
assertThat(properties.isExecuteInTransaction()).isEqualTo(configuration.isExecuteInTransaction());
assertThat(properties.getCommunityDbSupportEnabled()).isNull();
assertThat(properties.getIgnoreMigrationPatterns().stream().map(ValidatePattern::fromPattern))
.containsExactly(configuration.getIgnoreMigrationPatterns());
}
@Test

Loading…
Cancel
Save