aboutsummaryrefslogtreecommitdiff
path: root/cmake/Modules/CUTE.cmake
blob: 77dd95b7449be00a87f90c6a1ca32de4ee0c82dc (plain)
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
if(NOT EXISTS "${PROJECT_SOURCE_DIR}/lib/cute/cute/cute.h")
  message(STATUS "CUTE: Submodule 'lib/cute' not checked out. Disabling tests.")
  set(CUTE_FOUND OFF)
else()
  message(STATUS "CUTE: Found submodule 'lib/cute'. Enabling tests.")
  include("CTest")
  enable_testing()
  add_library("LIB::CUTE" INTERFACE IMPORTED)
  set_property(TARGET "LIB::CUTE" PROPERTY INTERFACE_INCLUDE_DIRECTORIES "${PROJECT_SOURCE_DIR}/lib/cute")
  set(CUTE_FOUND ON)

  add_library("${PROJECT_NAME}_test_driver" OBJECT
    "tests/${PROJECT_NAME}/driver.cpp"
  )
  target_include_directories("${PROJECT_NAME}_test_driver" SYSTEM
    PUBLIC "${PROJECT_SOURCE_DIR}/lib/cute"
  )

  function("cute_test" SUITE_NAME)
    if(NOT SUITE_NAME)
      message(FATAL_ERROR "Missing argument 'SUITE_NAME'!")
    endif()

    add_executable("${PROJECT_NAME}_${SUITE_NAME}_tests"
      "tests/${PROJECT_NAME}/test_suite_${SUITE_NAME}.cpp"
    )
    target_link_libraries("${PROJECT_NAME}_${SUITE_NAME}_tests"
      "${PROJECT_NAME}_test_driver"
      "${PROJECT_NAME}"
    )
    add_test(NAME "${SUITE_NAME}_tests"
      COMMAND "${PROJECT_NAME}_${SUITE_NAME}_tests"
    )
  endfunction()
endif()