diff --git a/CHANGELOG.md b/CHANGELOG.md index 01f5345..cf69ab6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -12,6 +12,8 @@ * Subcommand now support groups [#46](https://github.com/CLIUtils/CLI11/pull/46) * `CLI::RuntimeError` added, for easy exit with error codes [#45](https://github.com/CLIUtils/CLI11/pull/45) * The clang-format script is now no longer "hidden" [#48](https://github.com/CLIUtils/CLI11/pull/48) +* The order is now preserved for subcommands (list and callbacks) [#49](https://github.com/CLIUtils/CLI11/pull/49) +* Tests now run individually, utilizing CMake 3.10 additions if possible ## Version 1.2 diff --git a/cmake/AddGoogletest.cmake b/cmake/AddGoogletest.cmake index 5e026cc..a98e9a0 100644 --- a/cmake/AddGoogletest.cmake +++ b/cmake/AddGoogletest.cmake @@ -32,11 +32,29 @@ set_target_properties(check PROPERTIES FOLDER "Scripts") # More modern way to do the last line, less messy but needs newish CMake: # target_include_directories(gtest INTERFACE ${gtest_SOURCE_DIR}/include) + +if(GOOGLE_TEST_INDIVIDUAL) + include(GoogleTest) +endif() + # Target must already exist macro(add_gtest TESTNAME) target_link_libraries(${TESTNAME} PUBLIC gtest gmock gtest_main) - add_test(${TESTNAME} ${TESTNAME}) - set_target_properties(${TESTNAME} PROPERTIES FOLDER "Tests") + + if(GOOGLE_TEST_INDIVIDUAL) + if(CMAKE_VERSION VERSION_LESS 3.10) + gtest_add_tests(TARGET ${TESTNAME} + TEST_LIST TmpTestList) + set_tests_properties(${TmpTestList} PROPERTIES FOLDER "Tests") + else() + gtest_discover_tests(${TESTNAME} + PROPERTIES FOLDER "Tests") + endif() + else() + add_test(${TESTNAME} ${TESTNAME}) + set_target_properties(${TESTNAME} PROPERTIES FOLDER "Tests") + endif() + endmacro() mark_as_advanced( diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index 238a099..e2ae6d2 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -1,3 +1,4 @@ +set(GOOGLE_TEST_INDIVIDUAL ON) include(AddGoogletest) set(CLI_TESTS