use of io.confluent.ksql.test.KsqlTestException in project ksql by confluentinc.
the class SqlTestLoader method loadTest.
/**
* @param path a single sql test file, containing possibly many tests
*
* @return the list of tests to run
*/
public List<SqlTest> loadTest(final Path path) throws IOException {
final ImmutableList.Builder<SqlTest> builder = ImmutableList.builder();
List<TestStatement> statements = null;
String name = null;
final SqlTestReader reader = SqlTestReader.of(path);
while (reader.hasNext()) {
final TestStatement statement = reader.next();
final Optional<String> nextName = statement.consumeDirective(directive -> directive.getType() == Type.TEST ? directive.getContents() : null);
if (nextName.isPresent()) {
// flush the previous test
if (statements != null) {
builder.add(new SqlTest(path, name, statements));
}
statements = new ArrayList<>();
name = nextName.get();
} else if (statements == null) {
throw new KsqlTestException(statement, path, "Exepcted test to start with --@test.");
}
statements.add(statement);
}
builder.add(new SqlTest(path, name, statements));
return builder.build().stream().filter(shouldRun).collect(ImmutableList.toImmutableList());
}
use of io.confluent.ksql.test.KsqlTestException in project ksql by confluentinc.
the class KsqlTesterTest method test.
@Test
public void test() {
for (final TestStatement testStatement : statements) {
try {
testStatement.consume(this::execute, this::doAssert, this::directive);
} catch (final Throwable e) {
handleExpectedException(testStatement, e);
return;
}
}
if (expectedException != null || expectedMessage != null) {
final String clazz = expectedException == null ? "<any>" : expectedException.getName();
final String msg = expectedMessage == null ? "<any>" : expectedMessage;
throw new KsqlTestException(Iterables.getLast(statements), file, "Did not get expected exception of type " + clazz + " with message " + msg);
}
}
Aggregations