diff --git a/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/context/properties/source/SpringConfigurationPropertySource.java b/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/context/properties/source/SpringConfigurationPropertySource.java index 3e79fbc411..1512a3618d 100644 --- a/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/context/properties/source/SpringConfigurationPropertySource.java +++ b/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/context/properties/source/SpringConfigurationPropertySource.java @@ -104,7 +104,7 @@ class SpringConfigurationPropertySource implements ConfigurationPropertySource { } private static ConfigurationPropertyState containsDescendantOfForRandom(ConfigurationPropertyName name) { - if (name.isAncestorOf(RANDOM) || name.equals(RANDOM)) { + if (RANDOM.isAncestorOf(name) || name.equals(RANDOM)) { return ConfigurationPropertyState.PRESENT; } return ConfigurationPropertyState.ABSENT; diff --git a/spring-boot-project/spring-boot/src/test/java/org/springframework/boot/context/properties/source/SpringConfigurationPropertySourceTests.java b/spring-boot-project/spring-boot/src/test/java/org/springframework/boot/context/properties/source/SpringConfigurationPropertySourceTests.java index d72e6da2d3..f5aeee6c6a 100644 --- a/spring-boot-project/spring-boot/src/test/java/org/springframework/boot/context/properties/source/SpringConfigurationPropertySourceTests.java +++ b/spring-boot-project/spring-boot/src/test/java/org/springframework/boot/context/properties/source/SpringConfigurationPropertySourceTests.java @@ -21,6 +21,7 @@ import java.util.Map; import org.junit.jupiter.api.Test; +import org.springframework.boot.env.RandomValuePropertySource; import org.springframework.boot.origin.Origin; import org.springframework.boot.origin.OriginLookup; import org.springframework.core.env.MapPropertySource; @@ -141,6 +142,30 @@ class SpringConfigurationPropertySourceTests { .isInstanceOf(IterableConfigurationPropertySource.class); } + @Test + void containsDescendantOfWhenRandomSourceAndRandomPropertyReturnsPresent() { + SpringConfigurationPropertySource source = SpringConfigurationPropertySource + .from(new RandomValuePropertySource()); + assertThat(source.containsDescendantOf(ConfigurationPropertyName.of("random"))) + .isEqualTo(ConfigurationPropertyState.PRESENT); + } + + @Test + void containsDescendantOfWhenRandomSourceAndRandomPrefixedPropertyReturnsPresent() { + SpringConfigurationPropertySource source = SpringConfigurationPropertySource + .from(new RandomValuePropertySource()); + assertThat(source.containsDescendantOf(ConfigurationPropertyName.of("random.something"))) + .isEqualTo(ConfigurationPropertyState.PRESENT); + } + + @Test + void containsDescendantOfWhenRandomSourceAndNonRandomPropertyReturnsAbsent() { + SpringConfigurationPropertySource source = SpringConfigurationPropertySource + .from(new RandomValuePropertySource()); + assertThat(source.containsDescendantOf(ConfigurationPropertyName.of("abandon.something"))) + .isEqualTo(ConfigurationPropertyState.ABSENT); + } + /** * Test {@link PropertySource} that's also an {@link OriginLookup}. *