Commit 0c3df9150cbf6c495803b3023e8e905390ee6eb4

Authored by Henry Fredrick Schreiner
Committed by Henry Schreiner
1 parent f0595285

Adding FetchContent on CMake 3.11

cmake/AddGoogletest.cmake
@@ -4,24 +4,39 @@ @@ -4,24 +4,39 @@
4 # gives output on failed tests without having to set an environment variable. 4 # gives output on failed tests without having to set an environment variable.
5 # 5 #
6 # 6 #
7 -set(UPDATE_DISCONNECTED_IF_AVAILABLE "UPDATE_DISCONNECTED 1") 7 +set(gtest_force_shared_crt ON CACHE BOOL "" FORCE)
8 8
9 -include(DownloadProject)  
10 -download_project(PROJ googletest  
11 - GIT_REPOSITORY https://github.com/google/googletest.git  
12 - GIT_TAG release-1.8.0  
13 - UPDATE_DISCONNECTED 1  
14 - QUIET  
15 -) 9 +if(CMAKE_VERSION VERSION_LESS 3.11)
  10 + set(UPDATE_DISCONNECTED_IF_AVAILABLE "UPDATE_DISCONNECTED 1")
  11 + include(DownloadProject)
  12 + download_project(PROJ googletest
  13 + GIT_REPOSITORY https://github.com/google/googletest.git
  14 + GIT_TAG release-1.8.0
  15 + UPDATE_DISCONNECTED 1
  16 + QUIET
  17 + )
  18 +
  19 + # CMake warning suppression will not be needed in version 1.9
  20 + set(CMAKE_SUPPRESS_DEVELOPER_WARNINGS 1 CACHE BOOL "")
  21 + add_subdirectory(${googletest_SOURCE_DIR} ${googletest_SOURCE_DIR} EXCLUDE_FROM_ALL)
  22 + unset(CMAKE_SUPPRESS_DEVELOPER_WARNINGS)
  23 +else()
  24 + include(FetchContent)
  25 + FetchContent_Declare(googletest
  26 + GIT_REPOSITORY https://github.com/google/googletest.git
  27 + GIT_TAG release-1.8.0)
  28 + FetchContent_GetProperties(googletest)
  29 + if(NOT googletest_POPULATED)
  30 + FetchContent_Populate(googletest)
  31 + set(CMAKE_SUPPRESS_DEVELOPER_WARNINGS 1 CACHE BOOL "")
  32 + add_subdirectory(${googletest_SOURCE_DIR} ${googletest_BINARY_DIR} EXCLUDE_FROM_ALL)
  33 + unset(CMAKE_SUPPRESS_DEVELOPER_WARNINGS)
  34 + endif()
  35 +endif()
16 36
17 -set(gtest_force_shared_crt ON CACHE BOOL "" FORCE)  
18 37
19 -# CMake warning suppression will not be needed in version 1.9  
20 -set(CMAKE_SUPPRESS_DEVELOPER_WARNINGS 1 CACHE BOOL "")  
21 -add_subdirectory(${googletest_SOURCE_DIR} ${googletest_SOURCE_DIR} EXCLUDE_FROM_ALL)  
22 -unset(CMAKE_SUPPRESS_DEVELOPER_WARNINGS)  
23 38
24 -if (CMAKE_CONFIGURATION_TYPES) 39 +if(CMAKE_CONFIGURATION_TYPES)
25 add_custom_target(check COMMAND ${CMAKE_CTEST_COMMAND} 40 add_custom_target(check COMMAND ${CMAKE_CTEST_COMMAND}
26 --force-new-ctest-process --output-on-failure 41 --force-new-ctest-process --output-on-failure
27 --build-config "$<CONFIGURATION>") 42 --build-config "$<CONFIGURATION>")
@@ -54,16 +69,17 @@ macro(add_gtest TESTNAME) @@ -54,16 +69,17 @@ macro(add_gtest TESTNAME)
54 gtest_add_tests(TARGET ${TESTNAME} 69 gtest_add_tests(TARGET ${TESTNAME}
55 TEST_PREFIX "${TESTNAME}." 70 TEST_PREFIX "${TESTNAME}."
56 TEST_LIST TmpTestList) 71 TEST_LIST TmpTestList)
  72 + set_tests_properties(${TmpTestList} PROPERTIES FOLDER "Tests")
57 else() 73 else()
58 gtest_discover_tests(${TESTNAME} 74 gtest_discover_tests(${TESTNAME}
59 TEST_PREFIX "${TESTNAME}." 75 TEST_PREFIX "${TESTNAME}."
60 - ) 76 + PROPERTIES FOLDER "Tests")
61 77
62 endif() 78 endif()
63 else() 79 else()
64 add_test(${TESTNAME} ${TESTNAME}) 80 add_test(${TESTNAME} ${TESTNAME})
  81 + set_target_properties(${TESTNAME} PROPERTIES FOLDER "Tests")
65 endif() 82 endif()
66 - set_target_properties(${TESTNAME} PROPERTIES FOLDER "Tests")  
67 83
68 endmacro() 84 endmacro()
69 85
tests/AppTest.cpp
@@ -353,6 +353,23 @@ TEST_F(TApp, MissingValueMoreThan) { @@ -353,6 +353,23 @@ TEST_F(TApp, MissingValueMoreThan) {
353 EXPECT_THROW(run(), CLI::ArgumentMismatch); 353 EXPECT_THROW(run(), CLI::ArgumentMismatch);
354 } 354 }
355 355
  356 +TEST_F(TApp, NoMissingValueMoreThan) {
  357 + std::vector<int> vals1;
  358 + std::vector<int> vals2;
  359 + app.add_option("-v", vals1)->expected(-2);
  360 + app.add_option("--vals", vals2)->expected(-2);
  361 +
  362 + args = {"-v", "2", "3", "4"};
  363 + run();
  364 + EXPECT_EQ(vals1, std::vector<int>({2,3,4}));
  365 +
  366 + app.reset();
  367 +
  368 + args = {"--vals", "2", "3", "4"};
  369 + run();
  370 + EXPECT_EQ(vals2, std::vector<int>({2,3,4}));
  371 +}
  372 +
356 TEST_F(TApp, NotRequiredOptsSingle) { 373 TEST_F(TApp, NotRequiredOptsSingle) {
357 374
358 std::string str; 375 std::string str;