diff --git a/include/CLI/App.hpp b/include/CLI/App.hpp index dbbc6be6..91096c60 100644 --- a/include/CLI/App.hpp +++ b/include/CLI/App.hpp @@ -540,7 +540,10 @@ public: for(const auto subcomptr : selected_subcommands_) if(subcomptr->check_name(name)) return true; - return false; + for(const App_p &subcomptr : subcommands_) + if(subcomptr->check_name(name)) + return false; + throw CLI::OptionNotFound(name); } ///@} diff --git a/tests/SubcommandTest.cpp b/tests/SubcommandTest.cpp index 2b50fef5..b2775e73 100644 --- a/tests/SubcommandTest.cpp +++ b/tests/SubcommandTest.cpp @@ -50,6 +50,15 @@ TEST_F(TApp, MultiSubFallthrough) { app.require_subcommand(1); EXPECT_THROW(run(), CLI::RequiredError); + + app.reset(); + args = {"sub1"}; + run(); + + EXPECT_TRUE(app.got_subcommand("sub1")); + EXPECT_FALSE(app.got_subcommand("sub2")); + + EXPECT_THROW(app.got_subcommand("sub3"), CLI::OptionNotFound); }