diff --git a/spring-shell-core/src/main/java/org/springframework/shell/core/command/AbstractCommand.java b/spring-shell-core/src/main/java/org/springframework/shell/core/command/AbstractCommand.java index 9b4650a8d..afdee4006 100644 --- a/spring-shell-core/src/main/java/org/springframework/shell/core/command/AbstractCommand.java +++ b/spring-shell-core/src/main/java/org/springframework/shell/core/command/AbstractCommand.java @@ -46,7 +46,7 @@ public abstract class AbstractCommand implements Command { private final String group; - private final boolean hidden; + private boolean hidden; private AvailabilityProvider availabilityProvider = AvailabilityProvider.alwaysAvailable(); @@ -105,6 +105,10 @@ public boolean isHidden() { return this.hidden; } + public void setHidden(boolean hidden) { + this.hidden = hidden; + } + @Override public List getAliases() { return this.aliases; diff --git a/spring-shell-core/src/test/java/org/springframework/shell/core/command/HelpTests.java b/spring-shell-core/src/test/java/org/springframework/shell/core/command/HelpTests.java index 3542bf571..c18bd79dd 100644 --- a/spring-shell-core/src/test/java/org/springframework/shell/core/command/HelpTests.java +++ b/spring-shell-core/src/test/java/org/springframework/shell/core/command/HelpTests.java @@ -18,6 +18,7 @@ import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; import org.springframework.shell.core.InputReader; +import org.springframework.shell.core.utils.Utils; import java.io.PrintWriter; import java.io.StringWriter; @@ -51,6 +52,35 @@ void testDefaultHelpMessage() throws Exception { Assertions.assertEquals(expectedOutput.replaceAll("\\R", "\n"), actualOutput.replaceAll("\\R", "\n")); } + @Test + void testDefaultHelpMessageWithoutQuit() throws Exception { + // given + CommandRegistry commandRegistry = new CommandRegistry(); + StringWriter stringWriter = new StringWriter(); + PrintWriter outputWriter = new PrintWriter(stringWriter); + InputReader inputReader = new InputReader() { + }; + ParsedInput parsedInput = ParsedInput.builder().build(); + CommandContext commandContext = new CommandContext(parsedInput, commandRegistry, outputWriter, inputReader); + + ((AbstractCommand) Utils.QUIT_COMMAND).setHidden(true); + + // when + Help help = new Help(); + help.execute(commandContext); + + // then + String actualOutput = stringWriter.toString(); + String expectedOutput = """ + AVAILABLE COMMANDS + + + """; + Assertions.assertEquals(expectedOutput.replaceAll("\\R", "\n"), actualOutput.replaceAll("\\R", "\n")); + + ((AbstractCommand) Utils.QUIT_COMMAND).setHidden(false); + } + @Test void testHelpMessageForCommand() throws Exception { // given @@ -352,4 +382,4 @@ void testHelpMessageForCommandAlias() throws Exception { Assertions.assertEquals(expectedOutput.replaceAll("\\R", "\n"), actualOutput.replaceAll("\\R", "\n")); } -} \ No newline at end of file +}