diff --git a/include/CLI/App.hpp b/include/CLI/App.hpp index df6cba3a..206473f6 100644 --- a/include/CLI/App.hpp +++ b/include/CLI/App.hpp @@ -1370,7 +1370,6 @@ class App { int num = op->get_expected(); - /// ONE /////////////////////////////////////////////////////////////// if(!value.empty()) { if(num != -1) num--; @@ -1409,8 +1408,8 @@ class App { args.pop_back(); collected++; } - // if(collected < -num) - // throw ArgumentMismatch(op->single_name() + ": At least " + std::to_string(-num) + " required"); + if(op->results_.size() < static_cast(-num)) + throw ArgumentMismatch(op->single_name() + ": At least " + std::to_string(-num) + " required"); } else { while(num > 0 && !args.empty()) { diff --git a/tests/AppTest.cpp b/tests/AppTest.cpp index 7bee007b..2ffce3d4 100644 --- a/tests/AppTest.cpp +++ b/tests/AppTest.cpp @@ -338,7 +338,7 @@ TEST_F(TApp, RequiredOptsUnlimited) { app.add_option("--str", strs)->required(); args = {"--str"}; - EXPECT_THROW(run(), CLI::RequiredError); + EXPECT_THROW(run(), CLI::ArgumentMismatch); app.reset(); args = {"--str", "one", "--str", "two"}; @@ -372,7 +372,7 @@ TEST_F(TApp, RequiredOptsUnlimitedShort) { app.add_option("-s", strs)->required(); args = {"-s"}; - EXPECT_THROW(run(), CLI::RequiredError); + EXPECT_THROW(run(), CLI::ArgumentMismatch); app.reset(); args = {"-s", "one", "-s", "two"};