Commit 20f881f6923f71c59b782367caa2ef606b954264

Authored by Henry Fredrick Schreiner
1 parent 19f8da61

Adding better error messages, Xcode folders

cmake/AddGoogletest.cmake
... ... @@ -50,16 +50,16 @@ macro(add_gtest TESTNAME)
50 50 gtest_add_tests(TARGET ${TESTNAME}
51 51 TEST_PREFIX "${TESTNAME}."
52 52 TEST_LIST TmpTestList)
53   - set_tests_properties(${TmpTestList} PROPERTIES FOLDER "Tests")
54 53 else()
55 54 gtest_discover_tests(${TESTNAME}
56 55 TEST_PREFIX "${TESTNAME}."
57   - PROPERTIES FOLDER "Tests")
  56 + )
  57 +
58 58 endif()
59 59 else()
60 60 add_test(${TESTNAME} ${TESTNAME})
61   - set_target_properties(${TESTNAME} PROPERTIES FOLDER "Tests")
62 61 endif()
  62 + set_target_properties(${TESTNAME} PROPERTIES FOLDER "Tests")
63 63  
64 64 endmacro()
65 65  
... ...
include/CLI/App.hpp
... ... @@ -1105,8 +1105,16 @@ class App {
1105 1105 // Verify required options
1106 1106 for(const Option_p &opt : options_) {
1107 1107 // Required
1108   - if(opt->get_required() && (static_cast<int>(opt->count()) < opt->get_expected() || opt->count() == 0))
1109   - throw RequiredError(opt->get_name());
  1108 + if(opt->get_required()) {
  1109 + if(opt->count() == 0) {
  1110 + throw RequiredError(opt->get_name() + " is required");
  1111 + } else if (static_cast<int>(opt->count()) < opt->get_expected()) {
  1112 + if(opt->get_expected() == 1)
  1113 + throw RequiredError(opt->get_name() + " requires an argument");
  1114 + else
  1115 + throw RequiredError(opt->get_name() + " requires at least " + std::to_string(opt->get_expected()) + " arguments");
  1116 + }
  1117 + }
1110 1118 // Requires
1111 1119 for(const Option *opt_req : opt->requires_)
1112 1120 if(opt->count() > 0 && opt_req->count() == 0)
... ...