@@ -143,9 +143,12 @@ void placeholderValueContainingSeparatorIsHandledAsIs() {
143
143
144
144
@ Test
145
145
void placeholdersWithoutEscapeCharAreNotEscaped () {
146
- PlaceholderResolver resolver = mockPlaceholderResolver ("p1" , "v1" );
146
+ PlaceholderResolver resolver = mockPlaceholderResolver ("p1" , "v1" , "p2" , "v2" , "p3" , "v3" , "p4" , "v4" );
147
147
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" );
149
152
}
150
153
151
154
@ Test
@@ -295,7 +298,13 @@ static Stream<Arguments> escapedPlaceholders() {
295
298
Arguments .of ("${p4}" , "adc${p1}" ),
296
299
Arguments .of ("${p5}" , "adcv1" ),
297
300
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" )
299
308
);
300
309
}
301
310
0 commit comments