Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
22 changes: 17 additions & 5 deletions cmake/Modules/CodeCoverage.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,9 @@
# 2018-06-12, Michael Ferguson
# - Forked for ROS support
#
# 2020-10-28, Stefan Fabian
# - Added python3-coverage support
#

include(CMakeParseArguments)

Expand All @@ -54,11 +57,20 @@ find_program( LCOV_PATH NAMES lcov lcov.bat lcov.exe lcov.perl)
find_program( GENHTML_PATH NAMES genhtml genhtml.perl genhtml.bat )
find_program( GCOVR_PATH gcovr PATHS ${CMAKE_SOURCE_DIR}/scripts/test)
find_program( SIMPLE_PYTHON_EXECUTABLE python )
find_program( PYTHON_COVERAGE_PATH python-coverage )

if (NOT PYTHON_COVERAGE_PATH)
find_program( PYTHON_COVERAGE_PATH python3-coverage )
endif()

if(NOT GCOV_PATH)
message(FATAL_ERROR "gcov not found! Aborting...")
endif() # NOT GCOV_PATH

if (NOT PYTHON_COVERAGE_PATH)
message(FATAL_ERROR "Neither python3-coverage nor python-coverage not found! Aborting...")
endif()

if("${CMAKE_CXX_COMPILER_ID}" MATCHES "(Apple)?[Cc]lang")
if("${CMAKE_CXX_COMPILER_VERSION}" VERSION_LESS 3)
message(FATAL_ERROR "Clang version must be 3.0.0 or greater! Aborting...")
Expand Down Expand Up @@ -145,7 +157,7 @@ function(ADD_CODE_COVERAGE)

# Cleanup python counters
add_custom_target(${Coverage_NAME}_cleanup_py
COMMAND python-coverage erase
COMMAND ${PYTHON_COVERAGE_PATH} erase
WORKING_DIRECTORY ${COVERAGE_DIR}
COMMENT "Resetting PYTHON code coverage counters to zero."
)
Expand Down Expand Up @@ -173,10 +185,10 @@ function(ADD_CODE_COVERAGE)
# Rename .coverage file generated by nosetests to avoid overwriting during combine step
COMMAND if [ -f ${PROJECT_BINARY_DIR}/.coverage ]\; then mv ${PROJECT_BINARY_DIR}/.coverage ${PROJECT_BINARY_DIR}/.coverage.nosetests\; fi
COMMAND cp ${PROJECT_BINARY_DIR}/.coverage* ${COVERAGE_DIR}/ || echo "WARNING: No python coverage!"
COMMAND python-coverage combine || echo "WARNING: No python coverage to combine!"
COMMAND python-coverage report --include "*${PROJECT_SOURCE_DIR}*" --omit ${COVERAGE_EXCLUDES} || echo "WARNING: no python report to output"
COMMAND python-coverage xml --include "*${PROJECT_SOURCE_DIR}*" --omit ${COVERAGE_EXCLUDES} || echo "WARNING: No python xml to output"
COMMAND python-coverage html --include "*${PROJECT_SOURCE_DIR}*" --omit ${COVERAGE_EXCLUDES} || echo "WARNING: No python html to output"
COMMAND ${PYTHON_COVERAGE_PATH} combine || echo "WARNING: No python coverage to combine!"
COMMAND ${PYTHON_COVERAGE_PATH} report --include "*${PROJECT_SOURCE_DIR}*" --omit ${COVERAGE_EXCLUDES} || echo "WARNING: no python report to output"
COMMAND ${PYTHON_COVERAGE_PATH} xml --include "*${PROJECT_SOURCE_DIR}*" --omit ${COVERAGE_EXCLUDES} || echo "WARNING: No python xml to output"
COMMAND ${PYTHON_COVERAGE_PATH} html --include "*${PROJECT_SOURCE_DIR}*" --omit ${COVERAGE_EXCLUDES} || echo "WARNING: No python html to output"
WORKING_DIRECTORY ${COVERAGE_DIR}
DEPENDS _run_tests_${PROJECT_NAME}
)
Expand Down