Merge release-4-6 into master
[alexxy/gromacs.git] / src / testutils / TestMacros.cmake
1 function (add_gtest_test NAME EXENAME)
2     if (GMX_USE_GTEST AND BUILD_TESTING)
3         include_directories(${GTEST_INCLUDE_DIRS})
4         add_executable(${EXENAME} ${ARGN} ${TESTUTILS_DIR}/test_main_gtest.cpp)
5         target_link_libraries(${EXENAME} libgromacs ${TESTUTILS_LIBS} ${GTEST_LIBRARIES})
6         get_target_property(DEFS ${EXENAME} COMPILE_DEFINITIONS)
7         if (NOT DEFS)
8             set(DEFS)
9         endif ()
10         list(APPEND DEFS TEST_DATA_PATH="${CMAKE_CURRENT_SOURCE_DIR}")
11         set_target_properties(${EXENAME} PROPERTIES COMPILE_DEFINITIONS ${DEFS})
12         add_test(NAME ${NAME}
13                  COMMAND ${EXENAME} --gtest_output=xml:${CMAKE_BINARY_DIR}/Testing/Temporary/${EXENAME}.xml)
14         set_tests_properties(${NAME} PROPERTIES LABELS "GTest")
15         add_dependencies(tests ${EXENAME})
16     endif ()
17 endfunction ()
18
19 function (add_gmock_test NAME EXENAME)
20     if (GMX_USE_GMOCK AND BUILD_TESTING)
21         include_directories(${GMOCK_INCLUDE_DIRS})
22         add_executable(${EXENAME} ${ARGN} ${TESTUTILS_DIR}/test_main_gmock.cpp)
23         target_link_libraries(${EXENAME} libgromacs ${TESTUTILS_LIBS} ${GMOCK_LIBRARIES})
24         get_target_property(DEFS ${EXENAME} COMPILE_DEFINITIONS)
25         if (NOT DEFS)
26             set(DEFS)
27         endif ()
28         list(APPEND DEFS TEST_DATA_PATH="${CMAKE_CURRENT_SOURCE_DIR}")
29         set_target_properties(${EXENAME} PROPERTIES COMPILE_DEFINITIONS ${DEFS})
30         add_test(NAME ${NAME}
31                  COMMAND ${EXENAME} --gtest_output=xml:${CMAKE_BINARY_DIR}/Testing/Temporary/${EXENAME}.xml)
32         set_tests_properties(${NAME} PROPERTIES LABELS "GTest")
33         add_dependencies(tests ${EXENAME})
34     endif ()
35 endfunction ()
36
37 function (add_gtest_or_gmock_test NAME EXENAME)
38     if (GMX_USE_GTEST AND BUILD_TESTING)
39         set(_outvar GTEST_SOURCES)
40         foreach(_source IN ITEMS ${ARGN})
41             if (_source STREQUAL GMOCK_ONLY)
42                 set(_outvar GMOCK_SOURCES)
43             else ()
44                 list(APPEND ${_outvar} ${_source})
45             endif ()
46         endforeach()
47         if (GMX_USE_GMOCK)
48             set(SOURCES ${GTEST_SOURCES} ${GMOCK_SOURCES})
49             add_gmock_test(${NAME} ${EXENAME} ${SOURCES})
50         else ()
51             add_gtest_test(${NAME} ${EXENAME} ${GTEST_SOURCES})
52         endif ()
53     endif ()
54 endfunction ()