RFR: 8332124: Jcmd should recognise options that look like requests for help [v5]

Sonia Zaldana Calles szaldana at openjdk.org
Wed Jul 3 14:31:51 UTC 2024


On Wed, 3 Jul 2024 12:13:34 GMT, Kevin Walls <kevinw at openjdk.org> wrote:

>> Sonia Zaldana Calles has updated the pull request incrementally with one additional commit since the last revision:
>> 
>>   Making enabling help more restrictive. Will not accept -help
>
> Additional test possibility.  I copied what you had already, but should have used the OutputAnalyzer "shouldContain" method.
> 
> 
> *** orig.txt    2024-07-03 13:08:46.460514793 +0100
> --- test/jdk/sun/tools/jcmd/TestJcmdSubcommandHelp.java 2024-07-03 12:50:48.324022729 +0100
> ***************
> *** 39,48 ****
> --- 39,49 ----
>   public class TestJcmdSubcommandHelp {
> 
>       private static final String HELP_ONE_DASH = "-h";
>       private static final String HELP_TWO_DASH = "--help";
>       private static final String CMD = "VM.metaspace";
> +     private static final String ILLEGAL = "IllegalArgumentException: Unknown argument";
> 
>       public static void main(String[] args) throws Exception {
> 
>           // Sanity check with empty input
>           OutputAnalyzer output = JcmdBase.jcmd();
> ***************
> *** 59,68 ****
> --- 60,72 ----
>           testIgnoreAdditionalArgs(HELP_ONE_DASH, expectedOutput);
>           testIgnoreAdditionalArgs(HELP_TWO_DASH, expectedOutput);
> 
>           testIgnoreTrailingSpaces(HELP_ONE_DASH, expectedOutput);
>           testIgnoreTrailingSpaces(HELP_TWO_DASH, expectedOutput);
> +
> +         testSimilarCommand(HELP_ONE_DASH + "ello", ILLEGAL);
> +         testSimilarCommand(HELP_TWO_DASH + "me", ILLEGAL);
>       }
> 
>       private static void testExpectedUsage(String helpOption, String expectedOutput) throws Exception {
>           verifyOutput(new String[] {CMD, helpOption}, expectedOutput,
>                   "Expected jcmd to accept '%s' suboption as a command argument and issue the same help output.".formatted(helpOption));
> ***************
> *** 76,93 ****
> --- 80,114 ----
>       private static void testIgnoreTrailingSpaces(String helpOption, String expectedOutput) throws Exception {
>           verifyOutput(new String[] {CMD, "%s    ".formatted(helpOption)}, expectedOutput,
>                   "Expected jcmd to accept '%s' suboption with trailing spaces".formatted(helpOption));
>       }
> 
> +     private static void testSimilarCommand(String helpOption, String expectedOutput) throws Exception {
> +         verifyOutputContains(new String[] {CMD, helpOption}, expectedOutput,
> +                 "Expected jcmd to NOT accept '%s' suboption with trailing content".formatted(helpOption));
> +     }
> +
>       private static void verifyOutput(String[] args, String expectedOutput, String errorMessage) throws Exception {
>           OutputAnalyzer output = JcmdBase.jcmd(args);
>           String issuedOutput = output.getOutput();
>           if (!expectedOutput.equals(issuedOutput)) {
>             ...

Hi @kevinjwalls, thanks for taking a look! I made some updates based on your comments.

-------------

PR Comment: https://git.openjdk.org/jdk/pull/19776#issuecomment-2206297148


More information about the serviceability-dev mailing list