diff --git a/cmake/AddGoogletest.cmake b/cmake/AddGoogletest.cmake index 9801238d..91e04659 100644 --- a/cmake/AddGoogletest.cmake +++ b/cmake/AddGoogletest.cmake @@ -4,24 +4,39 @@ # gives output on failed tests without having to set an environment variable. # # -set(UPDATE_DISCONNECTED_IF_AVAILABLE "UPDATE_DISCONNECTED 1") - -include(DownloadProject) -download_project(PROJ googletest - GIT_REPOSITORY https://github.com/google/googletest.git - GIT_TAG release-1.8.0 - UPDATE_DISCONNECTED 1 - QUIET -) - set(gtest_force_shared_crt ON CACHE BOOL "" FORCE) -# CMake warning suppression will not be needed in version 1.9 -set(CMAKE_SUPPRESS_DEVELOPER_WARNINGS 1 CACHE BOOL "") -add_subdirectory(${googletest_SOURCE_DIR} ${googletest_SOURCE_DIR} EXCLUDE_FROM_ALL) -unset(CMAKE_SUPPRESS_DEVELOPER_WARNINGS) +if(CMAKE_VERSION VERSION_LESS 3.11) + set(UPDATE_DISCONNECTED_IF_AVAILABLE "UPDATE_DISCONNECTED 1") + include(DownloadProject) + download_project(PROJ googletest + GIT_REPOSITORY https://github.com/google/googletest.git + GIT_TAG release-1.8.0 + UPDATE_DISCONNECTED 1 + QUIET + ) + + # CMake warning suppression will not be needed in version 1.9 + set(CMAKE_SUPPRESS_DEVELOPER_WARNINGS 1 CACHE BOOL "") + add_subdirectory(${googletest_SOURCE_DIR} ${googletest_SOURCE_DIR} EXCLUDE_FROM_ALL) + unset(CMAKE_SUPPRESS_DEVELOPER_WARNINGS) +else() + include(FetchContent) + FetchContent_Declare(googletest + GIT_REPOSITORY https://github.com/google/googletest.git + GIT_TAG release-1.8.0) + FetchContent_GetProperties(googletest) + if(NOT googletest_POPULATED) + FetchContent_Populate(googletest) + set(CMAKE_SUPPRESS_DEVELOPER_WARNINGS 1 CACHE BOOL "") + add_subdirectory(${googletest_SOURCE_DIR} ${googletest_BINARY_DIR} EXCLUDE_FROM_ALL) + unset(CMAKE_SUPPRESS_DEVELOPER_WARNINGS) + endif() +endif() -if (CMAKE_CONFIGURATION_TYPES) + + +if(CMAKE_CONFIGURATION_TYPES) add_custom_target(check COMMAND ${CMAKE_CTEST_COMMAND} --force-new-ctest-process --output-on-failure --build-config "$") @@ -54,16 +69,17 @@ 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() diff --git a/tests/AppTest.cpp b/tests/AppTest.cpp index c9a398be..b7f36611 100644 --- a/tests/AppTest.cpp +++ b/tests/AppTest.cpp @@ -353,6 +353,23 @@ TEST_F(TApp, MissingValueMoreThan) { EXPECT_THROW(run(), CLI::ArgumentMismatch); } +TEST_F(TApp, NoMissingValueMoreThan) { + std::vector vals1; + std::vector vals2; + app.add_option("-v", vals1)->expected(-2); + app.add_option("--vals", vals2)->expected(-2); + + args = {"-v", "2", "3", "4"}; + run(); + EXPECT_EQ(vals1, std::vector({2,3,4})); + + app.reset(); + + args = {"--vals", "2", "3", "4"}; + run(); + EXPECT_EQ(vals2, std::vector({2,3,4})); +} + TEST_F(TApp, NotRequiredOptsSingle) { std::string str;