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);
|
||||
}
|
||||
|
||||
// Skip empty commands
|
||||
if (line.isEmpty()) {
|
||||
continue;
|
||||
}
|
||||
|
||||
// special case to handle exit
|
||||
if (isExit(line)) {
|
||||
cliTerminal.line().em("Bye!").ln();
|
||||
|
|
|
@ -38,6 +38,28 @@ public class CliReplTests extends ESTestCase {
|
|||
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 {
|
||||
CliTerminal cliTerminal = new TestTerminal(
|
||||
|
|
Loading…
Reference in New Issue