File 6142-stdlib-Fix-argparse-format_help-2-crash-on-hidden-co.patch of Package erlang
From b2b2331dbde34d50db60ad5875e6c61959e94c47 Mon Sep 17 00:00:00 2001
From: Stefan Grundmann <sg2342@googlemail.com>
Date: Fri, 6 Dec 2024 03:30:17 +0000
Subject: [PATCH] stdlib: Fix argparse:format_help/2 crash on 'hidden' command
Fixes #9150
---
lib/stdlib/src/argparse.erl | 2 ++
lib/stdlib/test/argparse_SUITE.erl | 16 ++++++++++++++++
2 files changed, 18 insertions(+)
diff --git a/lib/stdlib/src/argparse.erl b/lib/stdlib/src/argparse.erl
index c39302ef03..932816fae4 100644
--- a/lib/stdlib/src/argparse.erl
+++ b/lib/stdlib/src/argparse.erl
@@ -1680,6 +1680,8 @@ collect_options(CmdName, Command, [Cmd|Tail], Args) ->
collect_options(CmdName ++ " " ++ Cmd, SubCmd, Tail, Args ++ maps:get(arguments, Command, [])).
%% gets help for sub-command
+get_help(#{help := hidden}, []) ->
+ "";
get_help(Command, []) ->
case maps:get(help, Command, "") of
Help when is_binary(Help) -> unicode:characters_to_list(Help);
diff --git a/lib/stdlib/test/argparse_SUITE.erl b/lib/stdlib/test/argparse_SUITE.erl
index 3c67a6d0c8..47d2ddeb28 100644
--- a/lib/stdlib/test/argparse_SUITE.erl
+++ b/lib/stdlib/test/argparse_SUITE.erl
@@ -828,6 +828,22 @@ usage(Config) when is_list(Config) ->
" ---extra extra option very deep\n",
?assertEqual(CrawlerStatus, unicode:characters_to_list(argparse:help(Cmd,
#{progname => "erl", command => ["erl", "status", "crawler"]}))),
+ RestartCmd = "Usage:\n erl restart [-rfv] [--force] [-i <interval>] [--req <weird>] [--float <float>]\n"
+ " [-d <duo>] [--duo <duo>] <server>\n"
+ "\n"
+ "Arguments:\n"
+ " server server to restart\n"
+ "\n"
+ "Optional arguments:\n"
+ " -r recursive\n"
+ " -f, --force force\n"
+ " -v verbosity level\n"
+ " -i interval set (int >= 1)\n"
+ " --req required optional, right?\n"
+ " --float floating-point long form argument (float), default: 3.14\n"
+ " -d, --duo dual option\n",
+ ?assertEqual(RestartCmd, unicode:characters_to_list(argparse:help(Cmd,
+ #{progname => "erl", command => ["restart"]}))),
ok.
usage_help_binary() ->
--
2.43.0