1
0
mirror of https://github.com/CLIUtils/CLI11.git synced 2025-05-07 23:33:52 +00:00

Adding better error messages, Xcode folders

This commit is contained in:
Henry Fredrick Schreiner 2017-11-22 09:12:09 -05:00
parent 19f8da6101
commit 20f881f692
2 changed files with 13 additions and 5 deletions

View File

@ -50,16 +50,16 @@ macro(add_gtest TESTNAME)
gtest_add_tests(TARGET ${TESTNAME}
TEST_PREFIX "${TESTNAME}."
TEST_LIST TmpTestList)
set_tests_properties(${TmpTestList} PROPERTIES FOLDER "Tests")
else()
gtest_discover_tests(${TESTNAME}
TEST_PREFIX "${TESTNAME}."
PROPERTIES FOLDER "Tests")
)
endif()
else()
add_test(${TESTNAME} ${TESTNAME})
set_target_properties(${TESTNAME} PROPERTIES FOLDER "Tests")
endif()
set_target_properties(${TESTNAME} PROPERTIES FOLDER "Tests")
endmacro()

View File

@ -1105,8 +1105,16 @@ class App {
// Verify required options
for(const Option_p &opt : options_) {
// Required
if(opt->get_required() && (static_cast<int>(opt->count()) < opt->get_expected() || opt->count() == 0))
throw RequiredError(opt->get_name());
if(opt->get_required()) {
if(opt->count() == 0) {
throw RequiredError(opt->get_name() + " is required");
} else if (static_cast<int>(opt->count()) < opt->get_expected()) {
if(opt->get_expected() == 1)
throw RequiredError(opt->get_name() + " requires an argument");
else
throw RequiredError(opt->get_name() + " requires at least " + std::to_string(opt->get_expected()) + " arguments");
}
}
// Requires
for(const Option *opt_req : opt->requires_)
if(opt->count() > 0 && opt_req->count() == 0)