From 6f589b8443c49a736183c58c3a127ca801611b70 Mon Sep 17 00:00:00 2001 From: Philip Top Date: Thu, 21 May 2020 07:07:33 -0700 Subject: [PATCH] fix issue with option defaults not propagating to option groups (#450) --- include/CLI/App.hpp | 2 +- tests/OptionGroupTest.cpp | 12 ++++++++++++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/include/CLI/App.hpp b/include/CLI/App.hpp index 30810b075..55d31dec5 100644 --- a/include/CLI/App.hpp +++ b/include/CLI/App.hpp @@ -975,7 +975,7 @@ class App { /// creates an option group as part of the given app template T *add_option_group(std::string group_name, std::string group_description = "") { - auto option_group = std::make_shared(std::move(group_description), group_name, nullptr); + auto option_group = std::make_shared(std::move(group_description), group_name, this); auto ptr = option_group.get(); // move to App_p for overload resolution on older gcc versions App_p app_ptr = std::dynamic_pointer_cast(option_group); diff --git a/tests/OptionGroupTest.cpp b/tests/OptionGroupTest.cpp index 49ffc5ce9..8e2e7529d 100644 --- a/tests/OptionGroupTest.cpp +++ b/tests/OptionGroupTest.cpp @@ -368,6 +368,18 @@ TEST_F(TApp, InvalidOptions) { EXPECT_THROW(ogroup->add_option(opt), CLI::OptionNotFound); } +TEST_F(TApp, OptionGroupInheritedOptionDefaults) { + app.option_defaults()->ignore_case(); + auto ogroup = app.add_option_group("clusters"); + int res{0}; + ogroup->add_option("--test1", res); + + args = {"--Test1", "5"}; + run(); + EXPECT_EQ(res, 5); + EXPECT_EQ(app.count_all(), 1u); +} + struct ManyGroups : public TApp { CLI::Option_group *main{nullptr};