From d11d637ea29b48161c216f45b15f494c26ee0844 Mon Sep 17 00:00:00 2001 From: Stephane Del Pino <stephane.delpino44@gmail.com> Date: Tue, 29 May 2018 11:24:57 +0200 Subject: [PATCH] Now builds coverage using gcovr. Produces both text output and html report in ${CMAKE_BINARY_DIR}/coverage --- CMakeLists.txt | 30 +++++++++++++++++++++++++++++- 1 file changed, 29 insertions(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 8fa0c9444..3a444de3a 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -132,7 +132,6 @@ include_directories(src/scheme) include_directories(src/experimental) - # Pastis tests set(CATCH_MODULE_PATH "${PASTIS_SOURCE_DIR}/packages/Catch2") @@ -144,6 +143,35 @@ add_subdirectory("${CATCH_MODULE_PATH}") add_subdirectory(tests) enable_testing() +# unit tests coverage + +if("${CMAKE_BUILD_TYPE}" STREQUAL "Coverage") + find_program(GCOVR gcovr) + if(NOT GCOVR) + message(FATAL_ERROR "gcovr not found, cannot perform coverage.") + endif() + + set(GCOVR_OPTIONS --object-directory="${PASTIS_BINARY_DIR}" -r "${PASTIS_SOURCE_DIR}/src" -e "${PASTIS_SOURCE_DIR}/src/experimental" -e "${PASTIS_SOURCE_DIR}/src/main.cpp") + add_custom_target(coverage + ALL + # COMMAND ${unit_test_EXECUTABLE} + COMMAND ${GCOVR} ${GCOVR_OPTIONS} + DEPENDS unit_tests pastis + COMMENT "Running gcovr to build coverage report." + ) + + add_custom_target(coverage-report + ALL + COMMAND ${CMAKE_COMMAND} -E remove_directory "${PASTIS_BINARY_DIR}/coverage" + COMMAND ${CMAKE_COMMAND} -E make_directory "${PASTIS_BINARY_DIR}/coverage" + COMMAND ${GCOVR} ${GCOVR_OPTIONS} --html --html-details -o "${PASTIS_BINARY_DIR}/coverage/coverage.html" + DEPENDS coverage + COMMENT "Building coverage html report." + WORKING_DIRECTORY "${PASTIS_BINARY_DIR}" + ) + +endif() + # ----------------------------------------------------- link_libraries("-rdynamic") -- GitLab