Skip to content

Commit 6f589b8

Browse files
phlptphenryiii
authored andcommitted
fix issue with option defaults not propagating to option groups (#450)
1 parent eb1150d commit 6f589b8

File tree

2 files changed

+13
-1
lines changed

2 files changed

+13
-1
lines changed

include/CLI/App.hpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -975,7 +975,7 @@ class App {
975975
/// creates an option group as part of the given app
976976
template <typename T = Option_group>
977977
T *add_option_group(std::string group_name, std::string group_description = "") {
978-
auto option_group = std::make_shared<T>(std::move(group_description), group_name, nullptr);
978+
auto option_group = std::make_shared<T>(std::move(group_description), group_name, this);
979979
auto ptr = option_group.get();
980980
// move to App_p for overload resolution on older gcc versions
981981
App_p app_ptr = std::dynamic_pointer_cast<App>(option_group);

tests/OptionGroupTest.cpp

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -368,6 +368,18 @@ TEST_F(TApp, InvalidOptions) {
368368
EXPECT_THROW(ogroup->add_option(opt), CLI::OptionNotFound);
369369
}
370370

371+
TEST_F(TApp, OptionGroupInheritedOptionDefaults) {
372+
app.option_defaults()->ignore_case();
373+
auto ogroup = app.add_option_group("clusters");
374+
int res{0};
375+
ogroup->add_option("--test1", res);
376+
377+
args = {"--Test1", "5"};
378+
run();
379+
EXPECT_EQ(res, 5);
380+
EXPECT_EQ(app.count_all(), 1u);
381+
}
382+
371383
struct ManyGroups : public TApp {
372384

373385
CLI::Option_group *main{nullptr};

0 commit comments

Comments
 (0)