Make PathPatternParserTests compatible with JDK 13
Closes gh-23669
This commit is contained in:
@@ -32,7 +32,9 @@ import static org.assertj.core.api.Assertions.fail;
|
||||
|
||||
/**
|
||||
* Exercise the {@link PathPatternParser}.
|
||||
*
|
||||
* @author Andy Clement
|
||||
* @author Sam Brannen
|
||||
*/
|
||||
public class PathPatternParserTests {
|
||||
|
||||
@@ -118,7 +120,10 @@ public class PathPatternParserTests {
|
||||
public void regexPathElementPatterns() {
|
||||
checkError("/{var:[^/]*}", 8, PatternMessage.MISSING_CLOSE_CAPTURE);
|
||||
checkError("/{var:abc", 8, PatternMessage.MISSING_CLOSE_CAPTURE);
|
||||
checkError("/{var:a{{1,2}}}", 6, PatternMessage.REGEX_PATTERN_SYNTAX_EXCEPTION);
|
||||
|
||||
// Do not check the expected position due a change in RegEx parsing in JDK 13.
|
||||
// See https://github.com/spring-projects/spring-framework/issues/23669
|
||||
checkError("/{var:a{{1,2}}}", PatternMessage.REGEX_PATTERN_SYNTAX_EXCEPTION);
|
||||
|
||||
pathPattern = checkStructure("/{var:\\\\}");
|
||||
PathElement next = pathPattern.getHeadSection().next;
|
||||
@@ -432,18 +437,32 @@ public class PathPatternParserTests {
|
||||
return pp;
|
||||
}
|
||||
|
||||
/**
|
||||
* Delegates to {@link #checkError(String, int, PatternMessage, String...)},
|
||||
* passing {@code -1} as the {@code expectedPos}.
|
||||
* @since 5.2
|
||||
*/
|
||||
private void checkError(String pattern, PatternMessage expectedMessage, String... expectedInserts) {
|
||||
checkError(pattern, -1, expectedMessage, expectedInserts);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param expectedPos the expected position, or {@code -1} if the position should not be checked
|
||||
*/
|
||||
private void checkError(String pattern, int expectedPos, PatternMessage expectedMessage,
|
||||
String... expectedInserts) {
|
||||
|
||||
assertThatExceptionOfType(PatternParseException.class).isThrownBy(() ->
|
||||
pathPattern = parse(pattern))
|
||||
.satisfies(ex -> {
|
||||
assertThat(ex.getPosition()).as(ex.toDetailedString()).isEqualTo(expectedPos);
|
||||
assertThat(ex.getMessageType()).as(ex.toDetailedString()).isEqualTo(expectedMessage);
|
||||
if (expectedInserts.length != 0) {
|
||||
assertThat(ex.getInserts()).isEqualTo(expectedInserts);
|
||||
}
|
||||
});
|
||||
assertThatExceptionOfType(PatternParseException.class)
|
||||
.isThrownBy(() -> pathPattern = parse(pattern))
|
||||
.satisfies(ex -> {
|
||||
if (expectedPos >= 0) {
|
||||
assertThat(ex.getPosition()).as(ex.toDetailedString()).isEqualTo(expectedPos);
|
||||
}
|
||||
assertThat(ex.getMessageType()).as(ex.toDetailedString()).isEqualTo(expectedMessage);
|
||||
if (expectedInserts.length != 0) {
|
||||
assertThat(ex.getInserts()).isEqualTo(expectedInserts);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@SafeVarargs
|
||||
|
||||
Reference in New Issue
Block a user