Skip to content
Snippets Groups Projects
Commit 3f813cd3 authored by Thomas Vierjahn's avatar Thomas Vierjahn
Browse files

Extract library removal for mocks

parent 35e3a467
Branches
Tags
1 merge request!128Feature/#251 make sure tests cpp is compiled once
......@@ -28,6 +28,11 @@ include(WarningLevels)
conan_or_find_package(catch REQUIRED)
conan_or_find_package(trompeloeil REQUIRED)
define_property(TARGET
PROPERTY testing__removes_libraries
BRIEF_DOCS "Libraries to be removed for mocking"
FULL_DOCS "Libraries to be removed for mocking")
set_property(GLOBAL PROPERTY USE_FOLDERS ON)
set_property(GLOBAL PROPERTY ADDED_TESTS "")
......@@ -185,7 +190,7 @@ endfunction()
macro(ADD_MOCK)
set(options )
set(oneValueArgs NAME)
set(multiValueArgs SOURCES HEADERS INCLUDE_DIRECTORIES COMPILE_OPTIONS)
set(multiValueArgs SOURCES HEADERS INCLUDE_DIRECTORIES COMPILE_OPTIONS REMOVES_LIBRARIES)
cmake_parse_arguments(ADD_MOCK_
"${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN})
......@@ -215,6 +220,10 @@ macro(ADD_MOCK)
)
set_property(TARGET ${ADD_MOCK__NAME} PROPERTY FOLDER "Tests")
if (ADD_MOCK__REMOVES_LIBRARIES)
set_target_properties(${ADD_MOCK__NAME}
PROPERTIES testing__removes_libraries "${ADD_MOCK__REMOVES_LIBRARIES}")
endif()
generate_export_header(${ADD_MOCK__NAME}
EXPORT_FILE_NAME ${CMAKE_CURRENT_BINARY_DIR}/mocks/${ADD_MOCK__NAME_LOWER}_export.hpp
......
......@@ -82,35 +82,6 @@ if( NOT EXISTS ${OPENGL_MOCK_SOURCE}/opengl_mock.cpp OR
-t "${CMAKE_CURRENT_SOURCE_DIR}/src/mocks/generation/")
endif()
add_mock(
NAME opengl_mock
SOURCES ${CMAKE_CURRENT_BINARY_DIR}/mocks/opengl_mock.cpp
HEADERS ${CMAKE_CURRENT_BINARY_DIR}/mocks/opengl_mock.hpp
INCLUDE_DIRECTORIES
${OPENGL_MOCK_SOURCE}
${glew_include_directories}
COMPILE_OPTIONS $<$<CXX_COMPILER_ID:MSVC>:"/bigobj">
)
add_mock(
NAME openvr_mock
SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/src/mocks/openvr_mock.cpp
HEADERS ${CMAKE_CURRENT_SOURCE_DIR}/src/mocks/openvr_mock.hpp
INCLUDE_DIRECTORIES
${CMAKE_CURRENT_SOURCE_DIR}/src
${CMAKE_CURRENT_BINARY_DIR}/mocks
${openvr_include_directories}
)
add_mock(
NAME sdl_mock
SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/src/mocks/sdl_mock.cpp
HEADERS ${CMAKE_CURRENT_SOURCE_DIR}/src/mocks/sdl_mock.hpp
INCLUDE_DIRECTORIES
${CMAKE_CURRENT_SOURCE_DIR}/src
${sdl2_include_directories}
)
# generate test_utilities
add_library(test_utilities STATIC
......@@ -142,6 +113,45 @@ endif()
add_mock(
NAME opengl_mock
SOURCES ${CMAKE_CURRENT_BINARY_DIR}/mocks/opengl_mock.cpp
HEADERS ${CMAKE_CURRENT_BINARY_DIR}/mocks/opengl_mock.hpp
INCLUDE_DIRECTORIES
${OPENGL_MOCK_SOURCE}
${glew_include_directories}
COMPILE_OPTIONS $<$<CXX_COMPILER_ID:MSVC>:"/bigobj">
REMOVES_LIBRARIES
${CONAN_OR_CMAKE_gl}
${CONAN_OR_CMAKE_glew}
${CONAN_OR_CMAKE_sdl2}
${OPENGL_LIBRARIES}
)
add_mock(
NAME openvr_mock
SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/src/mocks/openvr_mock.cpp
HEADERS ${CMAKE_CURRENT_SOURCE_DIR}/src/mocks/openvr_mock.hpp
INCLUDE_DIRECTORIES
${CMAKE_CURRENT_SOURCE_DIR}/src
${CMAKE_CURRENT_BINARY_DIR}/mocks
${openvr_include_directories}
REMOVES_LIBRARIES ${CONAN_OR_CMAKE_openvr}
)
add_mock(
NAME sdl_mock
SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/src/mocks/sdl_mock.cpp
HEADERS ${CMAKE_CURRENT_SOURCE_DIR}/src/mocks/sdl_mock.hpp
INCLUDE_DIRECTORIES
${CMAKE_CURRENT_SOURCE_DIR}/src
${sdl2_include_directories}
REMOVES_LIBRARIES ${CONAN_OR_CMAKE_sdl2}
)
macro(add_mocked_test cpp_file)
set(options MOCK_GLEW MOCK_SDL MOCK_OPENVR)
set(oneValueArgs )
......@@ -171,22 +181,27 @@ macro(add_mocked_test cpp_file)
get_target_property(phoenix_link_libraries phoenix LINK_LIBRARIES)
if(${ADD_MOCKED_TEST_MOCK_GLEW})
list(REMOVE_ITEM phoenix_link_libraries ${CONAN_OR_CMAKE_gl})
list(REMOVE_ITEM phoenix_link_libraries ${CONAN_OR_CMAKE_glew})
#SDL has also to be removed since it contains OpenGL
list(REMOVE_ITEM phoenix_link_libraries ${CONAN_OR_CMAKE_sdl2})
list(REMOVE_ITEM phoenix_link_libraries ${OPENGL_LIBRARIES})
get_target_property(LIBRARIES_TO_BE_REMOVED opengl_mock testing__removes_libraries)
foreach(LIBRARY_TO_BE_REMOVED ${LIBRARIES_TO_BE_REMOVED})
list(REMOVE_ITEM phoenix_link_libraries ${LIBRARY_TO_BE_REMOVED})
endforeach()
list(APPEND phoenix_link_libraries opengl_mock)
list(APPEND phoenix_link_libraries ${gl_link_library})
endif(${ADD_MOCKED_TEST_MOCK_GLEW})
if(${ADD_MOCKED_TEST_MOCK_SDL})
list(REMOVE_ITEM phoenix_link_libraries ${CONAN_OR_CMAKE_sdl2})
get_target_property(LIBRARIES_TO_BE_REMOVED sdl_mock testing__removes_libraries)
foreach(LIBRARY_TO_BE_REMOVED ${LIBRARIES_TO_BE_REMOVED})
list(REMOVE_ITEM phoenix_link_libraries ${LIBRARY_TO_BE_REMOVED})
endforeach()
list(APPEND phoenix_link_libraries sdl_mock)
endif(${ADD_MOCKED_TEST_MOCK_SDL})
if(${ADD_MOCKED_TEST_MOCK_OPENVR})
list(REMOVE_ITEM phoenix_link_libraries ${CONAN_OR_CMAKE_openvr})
get_target_property(LIBRARIES_TO_BE_REMOVED openvr_mock testing__removes_libraries)
foreach(LIBRARY_TO_BE_REMOVED ${LIBRARIES_TO_BE_REMOVED})
list(REMOVE_ITEM phoenix_link_libraries ${LIBRARY_TO_BE_REMOVED})
endforeach()
list(APPEND phoenix_link_libraries openvr_mock)
endif(${ADD_MOCKED_TEST_MOCK_OPENVR})
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment