Skip to content

Commit

Permalink
Ignore documents that do not apply when checking mandatory locations
Browse files Browse the repository at this point in the history
Closes gh-24584
  • Loading branch information
mbhave committed Jan 5, 2021
1 parent 89f29c9 commit 615a8ae
Show file tree
Hide file tree
Showing 3 changed files with 23 additions and 3 deletions.
@@ -1,5 +1,5 @@
/*
* Copyright 2012-2020 the original author or authors.
* Copyright 2012-2021 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
Expand Down Expand Up @@ -348,7 +348,9 @@ private void checkMandatoryLocations(ConfigDataEnvironmentContributors contribut
ConfigDataActivationContext activationContext) {
Set<ConfigDataLocation> mandatoryLocations = new LinkedHashSet<>();
for (ConfigDataEnvironmentContributor contributor : contributors) {
mandatoryLocations.addAll(getMandatoryImports(contributor));
if (contributor.isActive(activationContext)) {
mandatoryLocations.addAll(getMandatoryImports(contributor));
}
}
for (ConfigDataEnvironmentContributor contributor : contributors) {
if (contributor.getLocation() != null) {
Expand Down
@@ -1,5 +1,5 @@
/*
* Copyright 2012-2020 the original author or authors.
* Copyright 2012-2021 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
Expand Down Expand Up @@ -186,6 +186,21 @@ void runWhenOneCustomLocationDoesNotExistLoadsOthers() {
assertThat(property).isEqualTo("frompropertiesfile");
}

@Test
void runWhenProfileSpecificMandatoryLocationDoesNotExistShouldNotFail() {
ConfigurableApplicationContext context = this.application.run("--spring.config.name=testprofiles",
"--spring.config.location=classpath:configdata/profiles/");
String property = context.getEnvironment().getProperty("my.property");
assertThat(property).isEqualTo("fromyamlfile");
}

@Test
void runWhenProfileSpecificMandatoryLocationDoesNotExistShouldFailWhenProfileActive() {
this.application.setAdditionalProfiles("prod");
assertThatExceptionOfType(ConfigDataResourceNotFoundException.class).isThrownBy(() -> this.application
.run("--spring.config.name=testprofiles", "--spring.config.location=classpath:configdata/profiles/"));
}

@Test
void runWhenHasActiveProfilesFromMultipleLocationsActivatesProfileFromOneLocation() {
ConfigurableApplicationContext context = this.application
Expand Down
Expand Up @@ -12,4 +12,7 @@ dev:
spring.config.activate.on-profile: other
my:
property: fromotherprofile
---
spring.config.activate.on-profile: prod
spring.config.import: file:./non-existent.yml

0 comments on commit 615a8ae

Please sign in to comment.