SQL: Teach the CLI to ignore empty commands (#30265)
Cause the CLI to ignore commands that are empty or consist only of newlines. This is a fairly standard thing for SQL CLIs to do. It looks like: ``` sql> ; sql> | | ; sql> exit; Bye! ``` I think I *could* have implemented this with a `CliCommand` that throws out empty string but it felt simpler to bake it in to the `CliRepl`. Closes #30000
This commit is contained in:
parent
7933f5e28e
commit
abe797bd42
|
@ -56,6 +56,11 @@ public class CliRepl {
|
||||||
multiLine.setLength(0);
|
multiLine.setLength(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Skip empty commands
|
||||||
|
if (line.isEmpty()) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
// special case to handle exit
|
// special case to handle exit
|
||||||
if (isExit(line)) {
|
if (isExit(line)) {
|
||||||
cliTerminal.line().em("Bye!").ln();
|
cliTerminal.line().em("Bye!").ln();
|
||||||
|
|
|
@ -38,6 +38,28 @@ public class CliReplTests extends ESTestCase {
|
||||||
verifyNoMoreInteractions(mockCommand, mockSession);
|
verifyNoMoreInteractions(mockCommand, mockSession);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Test that empty commands are skipped. This includes commands that are
|
||||||
|
* just new lines.
|
||||||
|
*/
|
||||||
|
public void testEmptyNotSent() {
|
||||||
|
CliTerminal cliTerminal = new TestTerminal(
|
||||||
|
";",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
";",
|
||||||
|
"exit;"
|
||||||
|
);
|
||||||
|
|
||||||
|
CliSession mockSession = mock(CliSession.class);
|
||||||
|
CliCommand mockCommand = mock(CliCommand.class);
|
||||||
|
|
||||||
|
CliRepl cli = new CliRepl(cliTerminal, mockSession, mockCommand);
|
||||||
|
cli.execute();
|
||||||
|
|
||||||
|
verify(mockCommand, times(1)).handle(cliTerminal, mockSession, "logo");
|
||||||
|
verifyNoMoreInteractions(mockSession, mockCommand);
|
||||||
|
}
|
||||||
|
|
||||||
public void testFatalCliExceptionHandling() throws Exception {
|
public void testFatalCliExceptionHandling() throws Exception {
|
||||||
CliTerminal cliTerminal = new TestTerminal(
|
CliTerminal cliTerminal = new TestTerminal(
|
||||||
|
|
Loading…
Reference in New Issue