diff --git a/cmake/Modules/CodeCoverage.cmake b/cmake/Modules/CodeCoverage.cmake index 7ac0675..e5992dd 100644 --- a/cmake/Modules/CodeCoverage.cmake +++ b/cmake/Modules/CodeCoverage.cmake @@ -45,6 +45,9 @@ # 2018-06-12, Michael Ferguson # - Forked for ROS support # +# 2020-10-28, Stefan Fabian +# - Added python3-coverage support +# include(CMakeParseArguments) @@ -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...") @@ -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." ) @@ -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} )