Skip to content

Commit

Permalink
Make PathPatternParserTests compatible with JDK 13
Browse files Browse the repository at this point in the history
Closes gh-23669
  • Loading branch information
sbrannen committed Sep 21, 2019
1 parent 4acd180 commit 2572cd0
Showing 1 changed file with 29 additions and 10 deletions.
Expand Up @@ -32,7 +32,9 @@

/**
* Exercise the {@link PathPatternParser}.
*
* @author Andy Clement
* @author Sam Brannen
*/
public class PathPatternParserTests {

Expand Down Expand Up @@ -118,7 +120,10 @@ public void equalsAndHashcode() {
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;
Expand Down Expand Up @@ -432,18 +437,32 @@ private PathPattern checkStructure(String pattern) {
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
Expand Down

0 comments on commit 2572cd0

Please sign in to comment.