diff options
author | Sourabh Mehta <73165318+soumeh01@users.noreply.github.com> | 2022-11-09 23:24:19 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-11-09 23:24:19 +0300 |
commit | 1dcb44e79a17e703e024594487b3a442d87e4741 (patch) | |
tree | ffa4b19b809687aa581ac7ecd4b2ccfd39be2b1e | |
parent | f087dc8fcdcd6aabba68e671ae17ff3e975134f4 (diff) |
-rw-r--r-- | include/cxxopts.hpp | 7 | ||||
-rw-r--r-- | test/options.cpp | 24 |
2 files changed, 30 insertions, 1 deletions
diff --git a/include/cxxopts.hpp b/include/cxxopts.hpp index 8028b67..e84e876 100644 --- a/include/cxxopts.hpp +++ b/include/cxxopts.hpp @@ -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()) { diff --git a/test/options.cpp b/test/options.cpp index 288810d..4fed683 100644 --- a/test/options.cpp +++ b/test/options.cpp @@ -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); +} |