Skip to content

Commit 021bf6e

Browse files
committed
Add more tests for escape character support in PlaceholderParser
1 parent 9045364 commit 021bf6e

File tree

1 file changed

+12
-3
lines changed

1 file changed

+12
-3
lines changed

spring-core/src/test/java/org/springframework/util/PlaceholderParserTests.java

+12-3
Original file line numberDiff line numberDiff line change
@@ -143,9 +143,12 @@ void placeholderValueContainingSeparatorIsHandledAsIs() {
143143

144144
@Test
145145
void placeholdersWithoutEscapeCharAreNotEscaped() {
146-
PlaceholderResolver resolver = mockPlaceholderResolver("p1", "v1");
146+
PlaceholderResolver resolver = mockPlaceholderResolver("p1", "v1", "p2", "v2", "p3", "v3", "p4", "v4");
147147
assertThat(this.parser.replacePlaceholders("\\${p1}", resolver)).isEqualTo("\\v1");
148-
verifyPlaceholderResolutions(resolver, "p1");
148+
assertThat(this.parser.replacePlaceholders("\\\\${p2}", resolver)).isEqualTo("\\\\v2");
149+
assertThat(this.parser.replacePlaceholders("\\${p3}\\", resolver)).isEqualTo("\\v3\\");
150+
assertThat(this.parser.replacePlaceholders("a\\${p4}\\z", resolver)).isEqualTo("a\\v4\\z");
151+
verifyPlaceholderResolutions(resolver, "p1", "p2", "p3", "p4");
149152
}
150153

151154
@Test
@@ -295,7 +298,13 @@ static Stream<Arguments> escapedPlaceholders() {
295298
Arguments.of("${p4}", "adc${p1}"),
296299
Arguments.of("${p5}", "adcv1"),
297300
Arguments.of("${p6}", "adcdef${p1}"),
298-
Arguments.of("${p7}", "adc\\${")
301+
Arguments.of("${p7}", "adc\\${"),
302+
// Double backslash
303+
Arguments.of("DOMAIN\\\\${user.name}", "DOMAIN\\${user.name}"),
304+
// Triple backslash
305+
Arguments.of("triple\\\\\\${backslash}", "triple\\\\${backslash}"),
306+
// Multiple escaped placeholders
307+
Arguments.of("start\\${prop1}middle\\${prop2}end", "start${prop1}middle${prop2}end")
299308
);
300309
}
301310

0 commit comments

Comments
 (0)