void handleLine(final String line) {
    final String trimmedLine = Optional.ofNullable(line).orElse("").trim();
    if (trimmedLine.isEmpty()) {
      return;
    }

    handleStatements(trimmedLine);
  }
@Test
  public void shouldDescribeTableFunction() {
    final String expectedOutput =
        "Name        : EXPLODE\n"
            + "Author      : Confluent\n"
            + "Overview    : Explodes an array. This function outputs one value for each element of the array.\n"
            + "Type        : TABLE\n"
            + "Jar         : internal\n"
            + "Variations  : ";

    localCli.handleLine("describe function explode;");
    final String outputString = terminal.getOutputString();
    assertThat(outputString, containsString(expectedOutput));

    // variations for Udfs are loaded non-deterministically. Don't assume which variation is first
    String expectedVariation =
        "\tVariation   : EXPLODE(list ARRAY<T>)\n"
            + "\tReturns     : T";
    assertThat(outputString, containsString(expectedVariation));

    expectedVariation = "\tVariation   : EXPLODE(input ARRAY<DECIMAL>)\n"
        + "\tReturns     : DECIMAL";
    assertThat(outputString, containsString(expectedVariation));
  }