Add and fix tests for overridden bindings

The order of property values is only preserved if we check carefully
that each property is actually present in the source being inspected.

Fixes gh-3385
This commit is contained in:
Dave Syer 2015-07-02 09:02:08 +01:00
parent 43dc0c64c2
commit 1abd0879ca
4 changed files with 38 additions and 1 deletions

View File

@ -153,6 +153,9 @@ public class PropertySourcesPropertyValues implements PropertyValues {
PropertySourcesPropertyResolver resolver,
PropertyNamePatternsMatcher includes, Collection<String> exacts) {
for (String propertyName : exacts) {
if (!source.containsProperty(propertyName)) {
continue;
}
Object value = null;
try {
value = resolver.getProperty(propertyName, Object.class);

View File

@ -57,6 +57,16 @@ public class PropertySourcesBindingTests {
assertThat(this.properties.getBar(), is("override"));
}
@Test
public void overridingOfPropertiesOrderOfAtPropertySourcesWherePropertyIsCapitalized() {
assertThat(this.properties.getSpam(), is("BUCKET"));
}
@Test
public void overridingOfPropertiesOrderOfAtPropertySourcesWherePropertyNamesDiffer() {
assertThat(this.properties.getTheName(), is("NAME"));
}
@Test
public void overridingOfPropertiesAndBindToAtValue() {
assertThat(this.foo, is(this.properties.getFoo()));
@ -93,6 +103,10 @@ public class PropertySourcesBindingTests {
private String bar;
private String spam;
private String theName;
public String getBar() {
return this.bar;
}
@ -108,6 +122,22 @@ public class PropertySourcesBindingTests {
public void setFoo(String foo) {
this.foo = foo;
}
public String getSpam() {
return this.spam;
}
public void setSpam(String spam) {
this.spam = spam;
}
public String getTheName() {
return this.theName;
}
public void setTheName(String theName) {
this.theName = theName;
}
}
}

View File

@ -1,2 +1,4 @@
foo=bar
bar=override
SPAM=BUCKET
THE_NAME=NAME

View File

@ -1,2 +1,4 @@
foo=spam
bar=some
bar=some
spam=bucket
the-name=name