diff --git a/test/framework/src/main/java/org/elasticsearch/test/ESTestCase.java b/test/framework/src/main/java/org/elasticsearch/test/ESTestCase.java index bdb35ceed7d4e..9d779156e3630 100644 --- a/test/framework/src/main/java/org/elasticsearch/test/ESTestCase.java +++ b/test/framework/src/main/java/org/elasticsearch/test/ESTestCase.java @@ -2713,6 +2713,20 @@ public static T expectThrows(Class expectedType, Matche return e; } + /** + * Checks a specific exception class with matched message is thrown by the given runnable, and returns it. + */ + public static T expectThrows( + String reason, + Class expectedType, + Matcher messageMatcher, + ThrowingRunnable runnable + ) { + var e = expectThrows(expectedType, reason, runnable); + assertThat(reason, e.getMessage(), messageMatcher); + return e; + } + /** * Same as {@link #runInParallel(int, IntConsumer)} but also attempts to start all tasks at the same time by blocking execution on a * barrier until all threads are started and ready to execute their task. diff --git a/x-pack/plugin/esql/src/test/java/org/elasticsearch/xpack/esql/IdentifierGenerator.java b/x-pack/plugin/esql/src/test/java/org/elasticsearch/xpack/esql/IdentifierGenerator.java index 1f063912d51c5..8e594c96d84af 100644 --- a/x-pack/plugin/esql/src/test/java/org/elasticsearch/xpack/esql/IdentifierGenerator.java +++ b/x-pack/plugin/esql/src/test/java/org/elasticsearch/xpack/esql/IdentifierGenerator.java @@ -90,8 +90,7 @@ public static String randomIndexPattern(Feature... features) { var cluster = maybeQuote(randomIdentifier()); pattern = maybeQuote(cluster + ":" + pattern); } else if (EsqlCapabilities.Cap.INDEX_COMPONENT_SELECTORS.isEnabled() && canAdd(Features.INDEX_SELECTOR, features)) { - var selector = ESTestCase.randomFrom(IndexComponentSelector.values()); - pattern = maybeQuote(pattern + "::" + selector.getKey()); + pattern = maybeQuote(pattern + "::" + randomFrom(IndexComponentSelector.values()).getKey()); } return pattern; } diff --git a/x-pack/plugin/esql/src/test/java/org/elasticsearch/xpack/esql/parser/AbstractStatementParserTests.java b/x-pack/plugin/esql/src/test/java/org/elasticsearch/xpack/esql/parser/AbstractStatementParserTests.java index 15ce478469474..27c2b2b67e984 100644 --- a/x-pack/plugin/esql/src/test/java/org/elasticsearch/xpack/esql/parser/AbstractStatementParserTests.java +++ b/x-pack/plugin/esql/src/test/java/org/elasticsearch/xpack/esql/parser/AbstractStatementParserTests.java @@ -140,22 +140,25 @@ static MapExpression mapExpression(Map keyValuePairs) { } void expectError(String query, String errorMessage) { - ParsingException e = expectThrows(ParsingException.class, "Expected syntax error for " + query, () -> statement(query)); - assertThat(e.getMessage(), containsString(errorMessage)); - } - - void expectVerificationError(String query, String errorMessage) { - VerificationException e = expectThrows(VerificationException.class, "Expected syntax error for " + query, () -> statement(query)); - assertThat(e.getMessage(), containsString(errorMessage)); + expectError(query, null, errorMessage); } void expectError(String query, List params, String errorMessage) { - ParsingException e = expectThrows( + expectThrows( + "Query [" + query + "] is expected to throw " + ParsingException.class + " with message [" + errorMessage + "]", ParsingException.class, - "Expected syntax error for " + query, + containsString(errorMessage), () -> statement(query, new QueryParams(params)) ); - assertThat(e.getMessage(), containsString(errorMessage)); + } + + void expectVerificationError(String query, String errorMessage) { + expectThrows( + "Query [" + query + "] is expected to throw " + VerificationException.class + " with message [" + errorMessage + "]", + VerificationException.class, + containsString(errorMessage), + () -> parser.createStatement(query) + ); } void expectInvalidIndexNameErrorWithLineNumber(String query, String indexString, String lineNumber) {