public void testMultiCommandUnknownCommand() { Terminal terminal = new MockTerminal(); int count = randomIntBetween(2, 7); List<AtomicReference<Boolean>> executed = new ArrayList<>(count); for (int i = 0; i < count; i++) { executed.add(new AtomicReference<>(false)); } NamedCommand[] cmds = new NamedCommand[count]; for (int i = 0; i < count; i++) { final int index = i; cmds[i] = new NamedCommand("cmd" + index, terminal) { @Override public CliTool.ExitStatus execute(Settings settings, Environment env) throws Exception { executed.get(index).set(true); return OK; } }; } MultiCmdTool tool = new MultiCmdTool("tool", terminal, cmds); CliTool.ExitStatus status = tool.execute("cmd" + count); // "cmd" + count doesn't exist assertThat(status, is(CliTool.ExitStatus.USAGE)); for (int i = 0; i < count; i++) { assertThat(executed.get(i).get(), is(false)); } }
public void testMultiCommandCmdHelp() { CaptureOutputTerminal terminal = new CaptureOutputTerminal(); NamedCommand[] cmds = new NamedCommand[2]; cmds[0] = new NamedCommand("cmd0", terminal) { @Override public CliTool.ExitStatus execute(Settings settings, Environment env) throws Exception { return OK; } }; cmds[1] = new NamedCommand("cmd1", terminal) { @Override public CliTool.ExitStatus execute(Settings settings, Environment env) throws Exception { return OK; } }; MultiCmdTool tool = new MultiCmdTool("tool", terminal, cmds); CliTool.ExitStatus status = tool.execute(args("cmd1 -h")); assertStatus(status, CliTool.ExitStatus.OK_AND_EXIT); assertThat(terminal.getTerminalOutput(), hasSize(3)); assertThat(terminal.getTerminalOutput(), hasItem(containsString("cmd1 help"))); }