blob: 5d09fa4f688bf354e784130c467f460db9dc4367 [file] [log] [blame]
onqtam98e12af2017-04-16 22:11:21 +03001get_filename_component(PROJECT_NAME ${CMAKE_CURRENT_SOURCE_DIR} NAME)
2project(${PROJECT_NAME})
3
onqtam7cc0e962017-04-17 23:30:36 +03004################################################################################
5## BUILD ALL EXAMPLE SOURCES INTO A SINGLE BINARY AND EXECUTE TESTS ON EACH FILE
6################################################################################
7
onqtam98e12af2017-04-16 22:11:21 +03008set(files
9 main.cpp
onqtam12d55982017-04-16 22:35:27 +030010 doctest_proxy.h
onqtam7cc0e962017-04-17 23:30:36 +030011 header.h
onqtam98e12af2017-04-16 22:11:21 +030012 coverage_maxout.cpp
13 alternative_macros.cpp
14 assertion_macros.cpp
15 stringification.cpp
16 subcases.cpp
onqtam119cfb62017-04-17 10:46:55 +030017 logging.cpp
18 templated_test_cases.cpp
onqtam378d6702017-04-19 11:30:03 +030019 test_cases_and_suites.cpp
onqtam98e12af2017-04-16 22:11:21 +030020)
21
onqtam12d55982017-04-16 22:35:27 +030022doctest_add_executable(${PROJECT_NAME} ${files})
onqtamf0f899b2017-05-02 21:40:41 +030023# easy way to fix test coverage - disable colors and crash handling
24target_compile_definitions(${PROJECT_NAME} PRIVATE
25 DOCTEST_CONFIG_COLORS_NONE
26 DOCTEST_CONFIG_NO_POSIX_SIGNALS
27 DOCTEST_CONFIG_NO_WINDOWS_SEH)
onqtam98e12af2017-04-16 22:11:21 +030028
onqtam89da6542017-05-02 21:10:42 +030029set(common_test_args COMMAND $<TARGET_FILE:${PROJECT_NAME}> --no-skipped-summary --no-version)
onqtam76305352017-05-01 20:25:09 +030030
onqtam98e12af2017-04-16 22:11:21 +030031# add per-file tests
32foreach(f ${files})
onqtam76305352017-05-01 20:25:09 +030033 doctest_add_test(NAME ${f} ${common_test_args} -sf=*${f})
onqtam98e12af2017-04-16 22:11:21 +030034endforeach()
35
onqtam76305352017-05-01 20:25:09 +030036set(common_cov_args ${common_test_args} -sf=*coverage*)
onqtam321f2702017-05-01 19:14:58 +030037
onqtam76305352017-05-01 20:25:09 +030038# queries
onqtam89da6542017-05-02 21:10:42 +030039doctest_add_test(NAME version COMMAND $<TARGET_FILE:${PROJECT_NAME}> -v)
40doctest_add_test(NAME help ${common_cov_args} -h)
41doctest_add_test(NAME count ${common_cov_args} -c)
42doctest_add_test(NAME list_test_cases ${common_cov_args} -ltc)
43doctest_add_test(NAME list_test_suites ${common_cov_args} -lts)
onqtam76305352017-05-01 20:25:09 +030044
onqtam89da6542017-05-02 21:10:42 +030045# get all the binary asserts to be printed - to exercise all cases in getAssertString()
46doctest_add_test(NAME all_binary_success ${common_test_args} -tc=all?binary* -s)
onqtam321f2702017-05-01 19:14:58 +030047
onqtam89da6542017-05-02 21:10:42 +030048# options
49doctest_add_test(NAME abort_after ${common_cov_args} -aa=2 -e=off) # abort after 2 failed asserts (and parse negative)
50doctest_add_test(NAME first_last ${common_cov_args} -f=2 -l=4) # run a range
51doctest_add_test(NAME filter_1 ${common_cov_args} -ts=nonexistent) # should filter out all
52doctest_add_test(NAME filter_2 ${common_cov_args} -tse=*) # should filter out all
53doctest_add_test(NAME order_1 ${common_test_args} -ob=suite -sf=*test_cases_and_suites*)
54doctest_add_test(NAME order_2 ${common_test_args} -ob=name -sf=*test_cases_and_suites*)
55doctest_add_test(NAME order_3 ${common_test_args} -ob=rand -sfe=*) # exclude everything for no output
onqtame0f18802017-04-16 23:38:33 +030056
onqtam7cc0e962017-04-17 23:30:36 +030057################################################################################
58## VARIATION OF THE BUILD WITH DOCTEST DISABLED - SHOULD STILL COMPILE
59################################################################################
60
onqtamf6d1a512017-05-01 13:56:12 +030061return() # temp hack
62
onqtame0f18802017-04-16 23:38:33 +030063doctest_add_executable(disabled ${files})
onqtame0f18802017-04-16 23:38:33 +030064target_compile_definitions(disabled PRIVATE DOCTEST_CONFIG_DISABLE)
onqtam7cc0e962017-04-17 23:30:36 +030065
onqtame0f18802017-04-16 23:38:33 +030066doctest_add_test(NAME disabled COMMAND $<TARGET_FILE:disabled>)
onqtam7cc0e962017-04-17 23:30:36 +030067
onqtamd320ac22017-04-17 11:44:32 +030068# TODO: think about fixing these in a different way! - see issue #61 or commit 6b61e8aa3818c5ea100cedc1bb48a60ea10df6e8
69if(CMAKE_CXX_COMPILER_ID MATCHES "MSVC")
70 target_compile_options(disabled PRIVATE /wd4505) # unreferenced local function has been removed
onqtamcb7bad62017-04-19 11:19:57 +030071 target_compile_options(disabled PRIVATE /wd4100) # unreferenced formal parameter
onqtamaf07cbb2017-04-19 19:40:43 +030072 target_compile_options(disabled PRIVATE /wd4189) # local variable is initialized but not referenced
onqtamd320ac22017-04-17 11:44:32 +030073elseif(CMAKE_CXX_COMPILER_ID MATCHES "Clang")
onqtam135a50e2017-04-18 11:48:20 +030074 target_compile_options(disabled PRIVATE -Wno-unknown-warning-option)
onqtamd320ac22017-04-17 11:44:32 +030075 target_compile_options(disabled PRIVATE -Wno-unneeded-internal-declaration)
onqtamcb7bad62017-04-19 11:19:57 +030076 target_compile_options(disabled PRIVATE -Wno-unused-parameter)
onqtamc79b7542017-04-19 20:47:13 +030077 target_compile_options(disabled PRIVATE -Wno-unused-variable)
78elseif(CMAKE_CXX_COMPILER_ID MATCHES "GNU")
onqtamcb7bad62017-04-19 11:19:57 +030079 target_compile_options(disabled PRIVATE -Wno-unused-function)
onqtamc79b7542017-04-19 20:47:13 +030080 target_compile_options(disabled PRIVATE -Wno-unused-parameter)
onqtamaf07cbb2017-04-19 19:40:43 +030081 target_compile_options(disabled PRIVATE -Wno-unused-variable)
onqtamd320ac22017-04-17 11:44:32 +030082endif()