Fix an additional space in help generated (#377)

This commit is contained in:
Sourabh Mehta 2022-11-09 21:24:19 +01:00 committed by GitHub
parent f087dc8fcd
commit 1dcb44e79a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 30 additions and 1 deletions

View File

@ -2742,7 +2742,12 @@ Options::help(const std::vector<std::string>& help_groups, bool print_usage) con
String result = m_help_string;
if(print_usage)
{
result+= "\nUsage:\n " + toLocalString(m_program) + " " + toLocalString(m_custom_help);
result+= "\nUsage:\n " + toLocalString(m_program);
}
if (!m_custom_help.empty())
{
result += " " + toLocalString(m_custom_help);
}
if (!m_positional.empty() && !m_positional_help.empty()) {

View File

@ -918,3 +918,27 @@ TEST_CASE("Iterator", "[iterator]") {
REQUIRE(++iter == result.end());
}
TEST_CASE("No Options help", "[options]")
{
std::vector<std::string> positional;
cxxopts::Options options("test", "test no options help");
// explicitly setting custom help empty to overwrite
// default "[OPTION...]" when there are no options
options.positional_help("<posArg1>...<posArgN>")
.custom_help("")
.add_options()
("positional", "", cxxopts::value<std::vector<std::string>>(positional));
Argv av({"test", "posArg1", "posArg2", "posArg3"});
auto argc = av.argc();
auto** argv = av.argv();
options.parse_positional({"positional"});
CHECK_NOTHROW(options.parse(argc, argv));
CHECK(options.help().find("test <posArg1>...<posArgN>") != std::string::npos);
}