onqtam | 7cc0e96 | 2017-04-17 23:30:36 +0300 | [diff] [blame] | 1 | ################################################################################ |
| 2 | ## BUILD ALL EXAMPLE SOURCES INTO A SINGLE BINARY AND EXECUTE TESTS ON EACH FILE |
| 3 | ################################################################################ |
| 4 | |
onqtam | c9b4e1f | 2018-08-17 14:20:59 +0300 | [diff] [blame] | 5 | set(files_with_output |
onqtam | 98e12af | 2017-04-16 22:11:21 +0300 | [diff] [blame] | 6 | main.cpp |
onqtam | 12d5598 | 2017-04-16 22:35:27 +0300 | [diff] [blame] | 7 | doctest_proxy.h |
onqtam | 7cc0e96 | 2017-04-17 23:30:36 +0300 | [diff] [blame] | 8 | header.h |
onqtam | 98e12af | 2017-04-16 22:11:21 +0300 | [diff] [blame] | 9 | alternative_macros.cpp |
| 10 | assertion_macros.cpp |
| 11 | stringification.cpp |
onqtam | a1a38de | 2019-03-16 19:11:36 +0200 | [diff] [blame] | 12 | reporters_and_listeners.cpp |
onqtam | 98e12af | 2017-04-16 22:11:21 +0300 | [diff] [blame] | 13 | subcases.cpp |
onqtam | 119cfb6 | 2017-04-17 10:46:55 +0300 | [diff] [blame] | 14 | logging.cpp |
| 15 | templated_test_cases.cpp |
onqtam | 378d670 | 2017-04-19 11:30:03 +0300 | [diff] [blame] | 16 | test_cases_and_suites.cpp |
onqtam | 8171c48 | 2018-07-03 20:31:18 +0300 | [diff] [blame] | 17 | asserts_used_outside_of_tests.cpp |
jkriegshauser | 961a542 | 2020-11-04 08:13:29 -0800 | [diff] [blame] | 18 | enums.cpp |
onqtam | 98e12af | 2017-04-16 22:11:21 +0300 | [diff] [blame] | 19 | ) |
| 20 | |
onqtam | c9b4e1f | 2018-08-17 14:20:59 +0300 | [diff] [blame] | 21 | set(files_all |
| 22 | ${files_with_output} |
| 23 | concurrency.cpp |
| 24 | ../../scripts/coverage_maxout.cpp |
Navin P | 318e1df | 2021-03-21 19:15:46 +0530 | [diff] [blame] | 25 | namespace1.cpp |
| 26 | namespace2.cpp |
| 27 | namespace3.cpp |
| 28 | namespace4.cpp |
| 29 | namespace5.cpp |
| 30 | namespace6.cpp |
| 31 | namespace7.cpp |
| 32 | namespace8.cpp |
| 33 | namespace9.cpp |
Stefan | 8f63ba4 | 2021-12-09 16:01:47 +0100 | [diff] [blame] | 34 | no_failures.cpp |
onqtam | c9b4e1f | 2018-08-17 14:20:59 +0300 | [diff] [blame] | 35 | ) |
| 36 | |
onqtam | 3ac4c3f | 2018-06-01 15:31:06 +0300 | [diff] [blame] | 37 | # add the executable |
onqtam | 36e3745 | 2019-03-02 20:10:05 +0200 | [diff] [blame] | 38 | add_executable(all_features ${files_all}) |
| 39 | target_link_libraries(all_features doctest ${CMAKE_THREAD_LIBS_INIT}) |
onqtam | 3ac4c3f | 2018-06-01 15:31:06 +0300 | [diff] [blame] | 40 | |
onqtam | f0f899b | 2017-05-02 21:40:41 +0300 | [diff] [blame] | 41 | # easy way to fix test coverage - disable colors and crash handling |
onqtam | 36e3745 | 2019-03-02 20:10:05 +0200 | [diff] [blame] | 42 | target_compile_definitions(all_features PRIVATE |
onqtam | f0f899b | 2017-05-02 21:40:41 +0300 | [diff] [blame] | 43 | DOCTEST_CONFIG_COLORS_NONE |
| 44 | DOCTEST_CONFIG_NO_POSIX_SIGNALS |
| 45 | DOCTEST_CONFIG_NO_WINDOWS_SEH) |
onqtam | 98e12af | 2017-04-16 22:11:21 +0300 | [diff] [blame] | 46 | |
onqtam | 3ac4c3f | 2018-06-01 15:31:06 +0300 | [diff] [blame] | 47 | # omit the version and the num test cases skipped from the summary - this way the output will change less often |
onqtam | 585bb71 | 2019-03-16 17:46:58 +0200 | [diff] [blame] | 48 | set(common_args COMMAND $<TARGET_FILE:all_features> --no-skipped-summary --no-version) |
onqtam | 7630535 | 2017-05-01 20:25:09 +0300 | [diff] [blame] | 49 | |
onqtam | 98e12af | 2017-04-16 22:11:21 +0300 | [diff] [blame] | 50 | # add per-file tests |
onqtam | c9b4e1f | 2018-08-17 14:20:59 +0300 | [diff] [blame] | 51 | foreach(f ${files_with_output}) |
onqtam | 5dbcb1e | 2017-05-02 23:07:56 +0300 | [diff] [blame] | 52 | doctest_add_test(NAME ${f} ${common_args} -sf=*${f}) |
onqtam | 98e12af | 2017-04-16 22:11:21 +0300 | [diff] [blame] | 53 | endforeach() |
| 54 | |
onqtam | c9b4e1f | 2018-08-17 14:20:59 +0300 | [diff] [blame] | 55 | # add this separately since it shouldn't have output compared to reference output - due to concurrency |
onqtam | 7b7bb8a | 2018-08-17 16:20:16 +0300 | [diff] [blame] | 56 | # not adding it for MinGW since it crashes when using mingw-w64-x86_64-8.1.0-release-posix-seh-rt_v6-rev0 |
onqtam | 443c707 | 2022-01-10 14:40:50 +0200 | [diff] [blame] | 57 | # (also disabled for old XCode builds where there is no thread_local support and this is defined in the build matrix) |
onqtam | eb89a02 | 2019-01-14 00:16:11 +0200 | [diff] [blame] | 58 | if(NOT MINGW AND NOT DEFINED DOCTEST_THREAD_LOCAL) |
onqtam | acbcd12 | 2019-03-02 21:24:18 +0200 | [diff] [blame] | 59 | doctest_add_test(NO_OUTPUT NAME concurrency.cpp ${common_args} -sf=*concurrency.cpp -d) # duration: there is no output anyway |
onqtam | 7b7bb8a | 2018-08-17 16:20:16 +0300 | [diff] [blame] | 60 | endif() |
onqtam | c9b4e1f | 2018-08-17 14:20:59 +0300 | [diff] [blame] | 61 | |
Navin P | 318e1df | 2021-03-21 19:15:46 +0530 | [diff] [blame] | 62 | doctest_add_test(NO_OUTPUT NAME namespace1.cpp ${common_args} -sf=*namespace1.cpp ) |
| 63 | doctest_add_test(NO_OUTPUT NAME namespace2.cpp ${common_args} -sf=*namespace2.cpp ) |
| 64 | doctest_add_test(NO_OUTPUT NAME namespace3.cpp ${common_args} -sf=*namespace3.cpp ) |
| 65 | doctest_add_test(NO_OUTPUT NAME namespace4.cpp ${common_args} -sf=*namespace4.cpp ) |
| 66 | doctest_add_test(NO_OUTPUT NAME namespace5.cpp ${common_args} -sf=*namespace5.cpp ) |
| 67 | doctest_add_test(NO_OUTPUT NAME namespace6.cpp ${common_args} -sf=*namespace6.cpp ) |
| 68 | doctest_add_test(NO_OUTPUT NAME namespace7.cpp ${common_args} -sf=*namespace7.cpp ) |
| 69 | doctest_add_test(NO_OUTPUT NAME namespace8.cpp ${common_args} -sf=*namespace8.cpp ) |
| 70 | doctest_add_test(NO_OUTPUT NAME namespace9.cpp ${common_args} -sf=*namespace9.cpp ) |
| 71 | |
onqtam | 3ac4c3f | 2018-06-01 15:31:06 +0300 | [diff] [blame] | 72 | # add this separately since the file has a non-straightforward path |
| 73 | doctest_add_test(NAME coverage_maxout.cpp ${common_args} -sf=*coverage_maxout.cpp) |
| 74 | |
onqtam | 7630535 | 2017-05-01 20:25:09 +0300 | [diff] [blame] | 75 | # queries |
onqtam | 36e3745 | 2019-03-02 20:10:05 +0200 | [diff] [blame] | 76 | doctest_add_test(NAME version COMMAND $<TARGET_FILE:all_features> -v) |
onqtam | 5dbcb1e | 2017-05-02 23:07:56 +0300 | [diff] [blame] | 77 | doctest_add_test(NAME help ${common_args} -h) |
onqtam | 2377a0c | 2019-03-20 21:04:24 +0200 | [diff] [blame] | 78 | doctest_add_test(NO_OUTPUT NAME outfile ${common_args} -c -out=temp) # just to exercise the output option |
onqtam | 5dbcb1e | 2017-05-02 23:07:56 +0300 | [diff] [blame] | 79 | doctest_add_test(NAME count ${common_args} -c -sf=*coverage*) |
| 80 | doctest_add_test(NAME list_test_cases ${common_args} -ltc -sf=*coverage*) |
| 81 | doctest_add_test(NAME list_test_suites ${common_args} -lts -sf=*coverage*) |
onqtam | 3ac4c3f | 2018-06-01 15:31:06 +0300 | [diff] [blame] | 82 | doctest_add_test(NAME list_reporters ${common_args} -lr -sf=*coverage*) |
onqtam | 321f270 | 2017-05-01 19:14:58 +0300 | [diff] [blame] | 83 | |
onqtam | 89da654 | 2017-05-02 21:10:42 +0300 | [diff] [blame] | 84 | # options |
onqtam | 5dbcb1e | 2017-05-02 23:07:56 +0300 | [diff] [blame] | 85 | doctest_add_test(NAME all_binary ${common_args} -tc=all?binary* -s) # print all binary asserts - for getAssertString() |
| 86 | doctest_add_test(NAME abort_after ${common_args} -aa=2 -e=off -sf=*coverage*) # abort after 2 assert fails and parse a negative |
| 87 | doctest_add_test(NAME first_last ${common_args} -f=2 -l=4 -sf=*coverage*) # run a range |
onqtam | 14ddb1e | 2017-05-02 23:19:09 +0300 | [diff] [blame] | 88 | doctest_add_test(NAME filter_1 ${common_args} -ts=none) # should filter out all |
onqtam | 8ee3545 | 2021-12-15 15:42:40 +0200 | [diff] [blame] | 89 | # -order-by=name to avoid different output depending on the compiler used. See https://github.com/doctest/doctest/issues/287 |
Stefan | 8f63ba4 | 2021-12-09 16:01:47 +0100 | [diff] [blame] | 90 | doctest_add_test(NAME filter_2 COMMAND $<TARGET_FILE:all_features> -tse=* -nv -order-by=name) # should filter out all + print skipped |
| 91 | doctest_add_test(NAME filter_3 ${common_args} -sc=from*,sc* -sce=sc2 -sf=*subcases*) # enter a specific subcase - sc1 |
Egor Suvorov | bef1965 | 2022-03-05 15:36:58 +0300 | [diff] [blame] | 92 | doctest_add_test(NAME filter_4 ${common_args} -ts=*\\, -tc=*\\: -sc=*\\\\\\,,*:) # escape stuff |
Stefan | 8f63ba4 | 2021-12-09 16:01:47 +0100 | [diff] [blame] | 93 | doctest_add_test(NAME order_1 ${common_args} -ob=suite -ns -sf=*test_cases_and_suites*) |
| 94 | doctest_add_test(NAME order_2 ${common_args} -ob=name -sf=*test_cases_and_suites*) |
| 95 | doctest_add_test(NAME order_3 ${common_args} -ob=rand -sfe=*) # exclude everything for no output |
| 96 | doctest_add_test(NO_OUTPUT NAME quiet ${common_args} -q -sf=*test_cases_and_suites*) # quiet |
| 97 | doctest_add_test(NAME minimal ${common_args} -m -sf=*test_cases_and_suites*) # minimal with summary |
| 98 | doctest_add_test(NAME minimal_no_fail ${common_args} -m -sf=*no_failures.cpp) # minimal |
onqtam | e0f1880 | 2017-04-16 23:38:33 +0300 | [diff] [blame] | 99 | |
Salvage | 860904d | 2022-01-12 00:52:38 +0100 | [diff] [blame] | 100 | add_executable(disabled_but_evaluated assert_returns_disabled.cpp assert_returns_disabled_evaluate.cpp) |
| 101 | target_compile_definitions(disabled_but_evaluated PRIVATE DOCTEST_CONFIG_DISABLE) |
| 102 | target_link_libraries(disabled_but_evaluated doctest ${CMAKE_THREAD_LIBS_INIT}) |
| 103 | |
Stefan | 0fc371e | 2022-03-19 17:50:37 +0100 | [diff] [blame^] | 104 | doctest_add_test_impl(NO_OUTPUT NAME disabled_but_evaluated COMMAND $<TARGET_FILE:disabled_but_evaluated>) |
Salvage | 860904d | 2022-01-12 00:52:38 +0100 | [diff] [blame] | 105 | |
Salvage | e798deb | 2022-01-12 02:44:57 +0100 | [diff] [blame] | 106 | if(MSVC) |
| 107 | target_compile_options(disabled_but_evaluated PRIVATE /wd4702) # unreachable code |
| 108 | endif() |
| 109 | |
| 110 | if(CMAKE_CXX_COMPILER_ID MATCHES "Clang") |
| 111 | target_compile_options(disabled_but_evaluated PRIVATE -Wno-global-constructors) |
| 112 | target_compile_options(disabled_but_evaluated PRIVATE -Wno-unused-variable) |
| 113 | elseif(CMAKE_CXX_COMPILER_ID MATCHES "GNU") |
| 114 | target_compile_options(disabled_but_evaluated PRIVATE -Wno-unused-variable) |
| 115 | endif() |
| 116 | |
Salvage | 860904d | 2022-01-12 00:52:38 +0100 | [diff] [blame] | 117 | ################################################################################ |
Stefan | 0fc371e | 2022-03-19 17:50:37 +0100 | [diff] [blame^] | 118 | ## CONFIG TESTS - TESTS WITH VARIOUS CONFIGURATION OPTIONS |
onqtam | 7cc0e96 | 2017-04-17 23:30:36 +0300 | [diff] [blame] | 119 | ################################################################################ |
| 120 | |
Stefan | 0fc371e | 2022-03-19 17:50:37 +0100 | [diff] [blame^] | 121 | function(add_test_all_features test_name flags) |
| 122 | add_executable(${test_name} ${files_with_output}) |
| 123 | target_compile_definitions(${test_name} PRIVATE ${flags}) |
| 124 | target_link_libraries(${test_name} doctest ${CMAKE_THREAD_LIBS_INIT}) |
onqtam | 7cc0e96 | 2017-04-17 23:30:36 +0300 | [diff] [blame] | 125 | |
Stefan | 0fc371e | 2022-03-19 17:50:37 +0100 | [diff] [blame^] | 126 | doctest_add_test_impl(NAME ${test_name} COMMAND $<TARGET_FILE:${test_name}> --no-skipped-summary --no-version -ob=name) |
| 127 | endfunction() |
| 128 | |
| 129 | add_test_all_features(no_multithreading DOCTEST_CONFIG_NO_MULTITHREADING) |
| 130 | add_test_all_features(no_multi_lane_atomics DOCTEST_CONFIG_NO_MULTI_LANE_ATOMICS) |
| 131 | add_test_all_features(disabled DOCTEST_CONFIG_DISABLE) |
onqtam | 7cc0e96 | 2017-04-17 23:30:36 +0300 | [diff] [blame] | 132 | |
onqtam | d320ac2 | 2017-04-17 11:44:32 +0300 | [diff] [blame] | 133 | # TODO: think about fixing these in a different way! - see issue #61 or commit 6b61e8aa3818c5ea100cedc1bb48a60ea10df6e8 |
Martin Moene | d8a7edc | 2017-08-01 17:08:08 +0200 | [diff] [blame] | 134 | if(MSVC) |
onqtam | d320ac2 | 2017-04-17 11:44:32 +0300 | [diff] [blame] | 135 | target_compile_options(disabled PRIVATE /wd4505) # unreferenced local function has been removed |
onqtam | cb7bad6 | 2017-04-19 11:19:57 +0300 | [diff] [blame] | 136 | target_compile_options(disabled PRIVATE /wd4100) # unreferenced formal parameter |
onqtam | af07cbb | 2017-04-19 19:40:43 +0300 | [diff] [blame] | 137 | target_compile_options(disabled PRIVATE /wd4189) # local variable is initialized but not referenced |
Daan De Meyer | 3c6834b | 2019-09-10 15:40:53 +0200 | [diff] [blame] | 138 | endif() |
| 139 | |
| 140 | if(CMAKE_CXX_COMPILER_ID MATCHES "Clang") |
onqtam | 135a50e | 2017-04-18 11:48:20 +0300 | [diff] [blame] | 141 | target_compile_options(disabled PRIVATE -Wno-unknown-warning-option) |
onqtam | d320ac2 | 2017-04-17 11:44:32 +0300 | [diff] [blame] | 142 | target_compile_options(disabled PRIVATE -Wno-unneeded-internal-declaration) |
onqtam | a82c1e4 | 2017-05-07 17:36:41 +0300 | [diff] [blame] | 143 | target_compile_options(disabled PRIVATE -Wno-unused-function) |
onqtam | cb7bad6 | 2017-04-19 11:19:57 +0300 | [diff] [blame] | 144 | target_compile_options(disabled PRIVATE -Wno-unused-parameter) |
onqtam | c79b754 | 2017-04-19 20:47:13 +0300 | [diff] [blame] | 145 | target_compile_options(disabled PRIVATE -Wno-unused-variable) |
onqtam | eb96d16 | 2017-09-11 14:26:32 +0300 | [diff] [blame] | 146 | target_compile_options(disabled PRIVATE -Wno-unused-template) |
onqtam | c79b754 | 2017-04-19 20:47:13 +0300 | [diff] [blame] | 147 | elseif(CMAKE_CXX_COMPILER_ID MATCHES "GNU") |
onqtam | cb7bad6 | 2017-04-19 11:19:57 +0300 | [diff] [blame] | 148 | target_compile_options(disabled PRIVATE -Wno-unused-function) |
onqtam | c79b754 | 2017-04-19 20:47:13 +0300 | [diff] [blame] | 149 | target_compile_options(disabled PRIVATE -Wno-unused-parameter) |
onqtam | af07cbb | 2017-04-19 19:40:43 +0300 | [diff] [blame] | 150 | target_compile_options(disabled PRIVATE -Wno-unused-variable) |
onqtam | d320ac2 | 2017-04-17 11:44:32 +0300 | [diff] [blame] | 151 | endif() |