File: CMakeLists.txt

package info (click to toggle)
tango 10.0.2%2Bdfsg1-1~bpo12%2B1
  • links: PTS, VCS
  • area: main
  • in suites: bookworm-backports
  • size: 89,480 kB
  • sloc: cpp: 201,245; sh: 1,645; python: 953; java: 800; perl: 467; javascript: 447; xml: 325; makefile: 269; sql: 72; ruby: 24
file content (38 lines) | stat: -rw-r--r-- 1,395 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
if(NOT BUILD_TESTING)
  return()
endif()

# Inspired by https://eb2.co/blog/2015/06/driving-boost.test-with-cmake
function(gather_boost_tests SOURCE_FILE_NAME)

    file(READ "${SOURCE_FILE_NAME}" SOURCE_FILE_CONTENTS)
    string(REGEX MATCHALL "BOOST_(AUTO|FIXTURE)_TEST_CASE\\([^,\\)]+"
           FOUND_TESTS ${SOURCE_FILE_CONTENTS})

    list(TRANSFORM FOUND_TESTS REPLACE ".*\\(([^,\\)]+).*" "\\1")

    set(ALL_TEST_CASES ${FOUND_TESTS} PARENT_SCOPE)
endfunction()

find_package(Boost REQUIRED unit_test_framework)

add_executable(db_test test/test.cpp)

target_include_directories(db_test PUBLIC ${Boost_INCLUDE_DIRS})
target_compile_options(db_test PUBLIC -Wall -Wextra -pedantic)
target_link_libraries(db_test ${Boost_UNIT_TEST_FRAMEWORK_LIBRARY} Tango::Tango)

configure_file(test/start_tdb.sh.in start_tdb.sh @ONLY)
configure_file(test/stop_tdb.sh.in stop_tdb.sh @ONLY)

gather_boost_tests("test/test.cpp")

# not using cmake FIXTURES_SETUP/FIXTURES_CLEANUP as these are not called per test case

message(STATUS "Found test cases: ${ALL_TEST_CASES}")

foreach(TEST_CASE IN LISTS ALL_TEST_CASES)
  add_test(NAME ${TEST_CASE} COMMAND db_test --log_level=all --logger=JUNIT,message,JU_${TEST_CASE}.xml:HRF,message,stdout --run_test=*/${TEST_CASE} --catch_system_error=yes)
  # don't allow parallel runs
  set_tests_properties(${TEST_CASE} PROPERTIES RESOURCE_LOCK Database)
endforeach()