unit tests: coverage, settings
This commit is contained in:
@@ -7,5 +7,49 @@ set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
||||
set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "-g -O3")
|
||||
set(CMAKE_CXX_FLAGS "-fno-threadsafe-statics")
|
||||
|
||||
file(GLOB SRC_FILES src/*.cpp)
|
||||
option(ENABLE_COVERAGE "Enable coverage instrumentation for tests" OFF)
|
||||
|
||||
file(GLOB SRC_FILES CONFIGURE_DEPENDS src/*.cpp)
|
||||
|
||||
set(APP_SOURCES ${SRC_FILES})
|
||||
list(REMOVE_ITEM APP_SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/src/main.cpp)
|
||||
|
||||
add_executable(wavefront_parser ${SRC_FILES})
|
||||
target_include_directories(wavefront_parser PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/src)
|
||||
|
||||
find_package(GTest REQUIRED)
|
||||
|
||||
enable_testing()
|
||||
|
||||
add_executable(wavefront_tests
|
||||
tests/trim_test.cpp
|
||||
tests/settings_test.cpp
|
||||
${APP_SOURCES}
|
||||
)
|
||||
target_link_libraries(wavefront_tests PRIVATE
|
||||
GTest::gtest
|
||||
GTest::gmock
|
||||
GTest::gtest_main
|
||||
)
|
||||
target_include_directories(wavefront_tests PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/src)
|
||||
|
||||
if(ENABLE_COVERAGE AND CMAKE_CXX_COMPILER_ID MATCHES "GNU|Clang")
|
||||
target_compile_options(wavefront_tests PRIVATE --coverage -O0 -g)
|
||||
target_link_options(wavefront_tests PRIVATE --coverage)
|
||||
endif()
|
||||
|
||||
include(GoogleTest)
|
||||
gtest_discover_tests(wavefront_tests)
|
||||
|
||||
find_program(LCOV_EXECUTABLE lcov)
|
||||
find_program(GENHTML_EXECUTABLE genhtml)
|
||||
if(LCOV_EXECUTABLE AND GENHTML_EXECUTABLE)
|
||||
add_custom_target(coverage
|
||||
COMMAND ${LCOV_EXECUTABLE} --directory "${CMAKE_BINARY_DIR}" --capture --rc geninfo_unexecuted_blocks=1 --demangle-cpp --ignore-errors inconsistent --keep-going --output-file coverage.info
|
||||
COMMAND ${LCOV_EXECUTABLE} --extract coverage.info "${CMAKE_SOURCE_DIR}/src/*" --output-file coverage.info
|
||||
COMMAND ${GENHTML_EXECUTABLE} coverage.info --output-directory coverage
|
||||
WORKING_DIRECTORY "${CMAKE_BINARY_DIR}"
|
||||
COMMENT "Generating lcov report at \"${CMAKE_BINARY_DIR}/coverage/index.html\""
|
||||
VERBATIM
|
||||
)
|
||||
endif()
|
||||
|
||||
Reference in New Issue
Block a user