1
0

unit tests: coverage, settings

This commit is contained in:
2026-02-21 14:15:08 +02:00
parent ad55b1109d
commit 753a6e0e1d
7 changed files with 305 additions and 3 deletions

View File

@@ -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()