onqtam | 8cd8b3b | 2017-05-15 00:50:03 +0300 | [diff] [blame] | 1 | cmake_minimum_required(VERSION 3.0) |
| 2 | |
| 3 | project(all_features) |
| 4 | |
| 5 | include(../../scripts/cmake/common.cmake) |
| 6 | |
| 7 | include_directories(../../doctest/) |
| 8 | |
onqtam | 7cc0e96 | 2017-04-17 23:30:36 +0300 | [diff] [blame] | 9 | ################################################################################ |
| 10 | ## BUILD ALL EXAMPLE SOURCES INTO A SINGLE BINARY AND EXECUTE TESTS ON EACH FILE |
| 11 | ################################################################################ |
| 12 | |
onqtam | 98e12af | 2017-04-16 22:11:21 +0300 | [diff] [blame] | 13 | set(files |
| 14 | main.cpp |
onqtam | 12d5598 | 2017-04-16 22:35:27 +0300 | [diff] [blame] | 15 | doctest_proxy.h |
onqtam | 7cc0e96 | 2017-04-17 23:30:36 +0300 | [diff] [blame] | 16 | header.h |
onqtam | 98e12af | 2017-04-16 22:11:21 +0300 | [diff] [blame] | 17 | alternative_macros.cpp |
| 18 | assertion_macros.cpp |
| 19 | stringification.cpp |
| 20 | subcases.cpp |
onqtam | 119cfb6 | 2017-04-17 10:46:55 +0300 | [diff] [blame] | 21 | logging.cpp |
| 22 | templated_test_cases.cpp |
onqtam | 378d670 | 2017-04-19 11:30:03 +0300 | [diff] [blame] | 23 | test_cases_and_suites.cpp |
onqtam | 8171c48 | 2018-07-03 20:31:18 +0300 | [diff] [blame] | 24 | asserts_used_outside_of_tests.cpp |
onqtam | 98e12af | 2017-04-16 22:11:21 +0300 | [diff] [blame] | 25 | ) |
| 26 | |
onqtam | 3ac4c3f | 2018-06-01 15:31:06 +0300 | [diff] [blame] | 27 | # add the executable |
| 28 | doctest_add_executable(${PROJECT_NAME} ${files} ../../scripts/coverage_maxout.cpp) |
| 29 | |
onqtam | f0f899b | 2017-05-02 21:40:41 +0300 | [diff] [blame] | 30 | # easy way to fix test coverage - disable colors and crash handling |
| 31 | target_compile_definitions(${PROJECT_NAME} PRIVATE |
| 32 | DOCTEST_CONFIG_COLORS_NONE |
| 33 | DOCTEST_CONFIG_NO_POSIX_SIGNALS |
| 34 | DOCTEST_CONFIG_NO_WINDOWS_SEH) |
onqtam | 98e12af | 2017-04-16 22:11:21 +0300 | [diff] [blame] | 35 | |
onqtam | 3ac4c3f | 2018-06-01 15:31:06 +0300 | [diff] [blame] | 36 | # omit the version and the num test cases skipped from the summary - this way the output will change less often |
| 37 | set(common_args COMMAND $<TARGET_FILE:${PROJECT_NAME}> --no-skipped-summary --no-version --reporters=console) |
onqtam | 7630535 | 2017-05-01 20:25:09 +0300 | [diff] [blame] | 38 | |
onqtam | 98e12af | 2017-04-16 22:11:21 +0300 | [diff] [blame] | 39 | # add per-file tests |
| 40 | foreach(f ${files}) |
onqtam | 5dbcb1e | 2017-05-02 23:07:56 +0300 | [diff] [blame] | 41 | doctest_add_test(NAME ${f} ${common_args} -sf=*${f}) |
onqtam | 98e12af | 2017-04-16 22:11:21 +0300 | [diff] [blame] | 42 | endforeach() |
| 43 | |
onqtam | 3ac4c3f | 2018-06-01 15:31:06 +0300 | [diff] [blame] | 44 | # add this separately since the file has a non-straightforward path |
| 45 | doctest_add_test(NAME coverage_maxout.cpp ${common_args} -sf=*coverage_maxout.cpp) |
| 46 | |
onqtam | 7630535 | 2017-05-01 20:25:09 +0300 | [diff] [blame] | 47 | # queries |
onqtam | f6370e2 | 2017-05-03 06:38:27 +0300 | [diff] [blame] | 48 | doctest_add_test(NAME version COMMAND $<TARGET_FILE:${PROJECT_NAME}> -v) |
onqtam | 5dbcb1e | 2017-05-02 23:07:56 +0300 | [diff] [blame] | 49 | doctest_add_test(NAME help ${common_args} -h) |
| 50 | doctest_add_test(NAME count ${common_args} -c -sf=*coverage*) |
| 51 | doctest_add_test(NAME list_test_cases ${common_args} -ltc -sf=*coverage*) |
| 52 | doctest_add_test(NAME list_test_suites ${common_args} -lts -sf=*coverage*) |
onqtam | 3ac4c3f | 2018-06-01 15:31:06 +0300 | [diff] [blame] | 53 | doctest_add_test(NAME list_reporters ${common_args} -lr -sf=*coverage*) |
onqtam | 321f270 | 2017-05-01 19:14:58 +0300 | [diff] [blame] | 54 | |
onqtam | 89da654 | 2017-05-02 21:10:42 +0300 | [diff] [blame] | 55 | # options |
onqtam | 5dbcb1e | 2017-05-02 23:07:56 +0300 | [diff] [blame] | 56 | doctest_add_test(NAME all_binary ${common_args} -tc=all?binary* -s) # print all binary asserts - for getAssertString() |
| 57 | doctest_add_test(NAME abort_after ${common_args} -aa=2 -e=off -sf=*coverage*) # abort after 2 assert fails and parse a negative |
| 58 | 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] | 59 | doctest_add_test(NAME filter_1 ${common_args} -ts=none) # should filter out all |
onqtam | f6370e2 | 2017-05-03 06:38:27 +0300 | [diff] [blame] | 60 | doctest_add_test(NAME filter_2 COMMAND $<TARGET_FILE:${PROJECT_NAME}> -tse=* -nv) # should filter out all + print skipped |
onqtam | 14ddb1e | 2017-05-02 23:19:09 +0300 | [diff] [blame] | 61 | doctest_add_test(NAME filter_3 ${common_args} -sc=from*,sc* -sce=sc2 -sf=*subcases*) # enter a specific subcase - sc1 |
onqtam | e6412e1 | 2017-05-07 16:21:36 +0300 | [diff] [blame] | 62 | doctest_add_test(NAME order_1 ${common_args} -ob=suite -ns -sf=*test_cases_and_suites*) |
onqtam | 14ddb1e | 2017-05-02 23:19:09 +0300 | [diff] [blame] | 63 | doctest_add_test(NAME order_2 ${common_args} -ob=name -sf=*test_cases_and_suites*) |
| 64 | doctest_add_test(NAME order_3 ${common_args} -ob=rand -sfe=*) # exclude everything for no output |
onqtam | e0f1880 | 2017-04-16 23:38:33 +0300 | [diff] [blame] | 65 | |
onqtam | 7cc0e96 | 2017-04-17 23:30:36 +0300 | [diff] [blame] | 66 | ################################################################################ |
| 67 | ## VARIATION OF THE BUILD WITH DOCTEST DISABLED - SHOULD STILL COMPILE |
| 68 | ################################################################################ |
| 69 | |
onqtam | aec53d2 | 2017-05-03 06:29:47 +0300 | [diff] [blame] | 70 | if(DEFINED ENV{CODE_COVERAGE}) |
| 71 | return() # do not continue with the disabled example |
| 72 | endif() |
onqtam | f6d1a51 | 2017-05-01 13:56:12 +0300 | [diff] [blame] | 73 | |
onqtam | e0f1880 | 2017-04-16 23:38:33 +0300 | [diff] [blame] | 74 | doctest_add_executable(disabled ${files}) |
onqtam | e0f1880 | 2017-04-16 23:38:33 +0300 | [diff] [blame] | 75 | target_compile_definitions(disabled PRIVATE DOCTEST_CONFIG_DISABLE) |
onqtam | 7cc0e96 | 2017-04-17 23:30:36 +0300 | [diff] [blame] | 76 | |
onqtam | e0f1880 | 2017-04-16 23:38:33 +0300 | [diff] [blame] | 77 | doctest_add_test(NAME disabled COMMAND $<TARGET_FILE:disabled>) |
onqtam | 7cc0e96 | 2017-04-17 23:30:36 +0300 | [diff] [blame] | 78 | |
onqtam | d320ac2 | 2017-04-17 11:44:32 +0300 | [diff] [blame] | 79 | # 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] | 80 | if(MSVC) |
onqtam | d320ac2 | 2017-04-17 11:44:32 +0300 | [diff] [blame] | 81 | target_compile_options(disabled PRIVATE /wd4505) # unreferenced local function has been removed |
onqtam | cb7bad6 | 2017-04-19 11:19:57 +0300 | [diff] [blame] | 82 | target_compile_options(disabled PRIVATE /wd4100) # unreferenced formal parameter |
onqtam | af07cbb | 2017-04-19 19:40:43 +0300 | [diff] [blame] | 83 | target_compile_options(disabled PRIVATE /wd4189) # local variable is initialized but not referenced |
onqtam | d320ac2 | 2017-04-17 11:44:32 +0300 | [diff] [blame] | 84 | elseif(CMAKE_CXX_COMPILER_ID MATCHES "Clang") |
onqtam | 135a50e | 2017-04-18 11:48:20 +0300 | [diff] [blame] | 85 | target_compile_options(disabled PRIVATE -Wno-unknown-warning-option) |
onqtam | d320ac2 | 2017-04-17 11:44:32 +0300 | [diff] [blame] | 86 | target_compile_options(disabled PRIVATE -Wno-unneeded-internal-declaration) |
onqtam | a82c1e4 | 2017-05-07 17:36:41 +0300 | [diff] [blame] | 87 | target_compile_options(disabled PRIVATE -Wno-unused-function) |
onqtam | cb7bad6 | 2017-04-19 11:19:57 +0300 | [diff] [blame] | 88 | target_compile_options(disabled PRIVATE -Wno-unused-parameter) |
onqtam | c79b754 | 2017-04-19 20:47:13 +0300 | [diff] [blame] | 89 | target_compile_options(disabled PRIVATE -Wno-unused-variable) |
onqtam | eb96d16 | 2017-09-11 14:26:32 +0300 | [diff] [blame] | 90 | target_compile_options(disabled PRIVATE -Wno-unused-template) |
onqtam | c79b754 | 2017-04-19 20:47:13 +0300 | [diff] [blame] | 91 | elseif(CMAKE_CXX_COMPILER_ID MATCHES "GNU") |
onqtam | cb7bad6 | 2017-04-19 11:19:57 +0300 | [diff] [blame] | 92 | target_compile_options(disabled PRIVATE -Wno-unused-function) |
onqtam | c79b754 | 2017-04-19 20:47:13 +0300 | [diff] [blame] | 93 | target_compile_options(disabled PRIVATE -Wno-unused-parameter) |
onqtam | af07cbb | 2017-04-19 19:40:43 +0300 | [diff] [blame] | 94 | target_compile_options(disabled PRIVATE -Wno-unused-variable) |
onqtam | d320ac2 | 2017-04-17 11:44:32 +0300 | [diff] [blame] | 95 | endif() |