81 lines
3.3 KiB
CMake
81 lines
3.3 KiB
CMake
###############################################################################
|
|
# Coverage
|
|
#
|
|
# Requires latest gcovr (for GCC 8.1 support):#
|
|
# pip install git+https://github.com/gcovr/gcovr.git
|
|
#
|
|
# For Python coverage the coverage package needs to be installed
|
|
###############################################################################
|
|
if(ENABLE_COVERAGE)
|
|
find_program(GCOVR_BINARY gcovr)
|
|
find_package_handle_standard_args(GCOVR DEFAULT_MSG GCOVR_BINARY)
|
|
|
|
find_program(COVERAGE_BINARY coverage)
|
|
find_package_handle_standard_args(COVERAGE DEFAULT_MSG COVERAGE_BINARY)
|
|
|
|
if(GCOVR_FOUND)
|
|
get_filename_component(ABSOLUTE_LAMMPS_SOURCE_DIR ${LAMMPS_SOURCE_DIR} ABSOLUTE)
|
|
|
|
add_custom_target(
|
|
gen_coverage_xml
|
|
COMMAND ${GCOVR_BINARY} -s -x -r ${ABSOLUTE_LAMMPS_SOURCE_DIR} --object-directory=${CMAKE_BINARY_DIR} -o coverage.xml
|
|
WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
|
|
COMMENT "Generating XML coverage report..."
|
|
)
|
|
|
|
set(COVERAGE_HTML_DIR ${CMAKE_BINARY_DIR}/coverage_html)
|
|
|
|
add_custom_target(coverage_html_folder
|
|
COMMAND ${CMAKE_COMMAND} -E make_directory ${COVERAGE_HTML_DIR})
|
|
|
|
add_custom_target(
|
|
gen_coverage_html
|
|
COMMAND ${GCOVR_BINARY} -s --html --html-details -r ${ABSOLUTE_LAMMPS_SOURCE_DIR} --object-directory=${CMAKE_BINARY_DIR} -o ${COVERAGE_HTML_DIR}/index.html
|
|
WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
|
|
COMMENT "Generating HTML coverage report..."
|
|
)
|
|
add_dependencies(gen_coverage_html coverage_html_folder)
|
|
|
|
add_custom_target(clean_coverage_html
|
|
${CMAKE_COMMAND} -E remove_directory ${COVERAGE_HTML_DIR}
|
|
COMMENT "Deleting HTML coverage report..."
|
|
)
|
|
|
|
add_custom_target(reset_coverage
|
|
${CMAKE_COMMAND} -E remove -f */*.gcda */*/*.gcda */*/*/*.gcda
|
|
*/*/*/*/*.gcda */*/*/*/*/*.gcda */*/*/*/*/*/*.gcda
|
|
*/*/*/*/*/*/*/*.gcda */*/*/*/*/*/*/*/*.gcda
|
|
*/*/*/*/*/*/*/*/*/*.gcda */*/*/*/*/*/*/*/*/*/*.gcda
|
|
WORKIND_DIRECTORY ${CMAKE_BINARY_DIR}
|
|
COMMENT "Deleting coverage data files..."
|
|
)
|
|
add_dependencies(reset_coverage clean_coverage_html)
|
|
endif()
|
|
|
|
if(COVERAGE_FOUND)
|
|
set(PYTHON_COVERAGE_HTML_DIR ${CMAKE_BINARY_DIR}/python_coverage_html)
|
|
add_custom_command(
|
|
OUTPUT ${CMAKE_BINARY_DIR}/unittest/python/.coverage
|
|
COMMAND ${COVERAGE_BINARY} combine
|
|
WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/unittest/python
|
|
COMMENT "Combine Python coverage files..."
|
|
)
|
|
|
|
add_custom_target(
|
|
gen_python_coverage_html
|
|
COMMAND ${COVERAGE_BINARY} html -d ${PYTHON_COVERAGE_HTML_DIR}
|
|
DEPENDS ${CMAKE_BINARY_DIR}/unittest/python/.coverage
|
|
WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/unittest/python
|
|
COMMENT "Generating HTML Python coverage report..."
|
|
)
|
|
|
|
add_custom_target(
|
|
gen_python_coverage_xml
|
|
COMMAND ${COVERAGE_BINARY} xml -o ${CMAKE_BINARY_DIR}/python_coverage.xml
|
|
DEPENDS ${CMAKE_BINARY_DIR}/unittest/python/.coverage
|
|
WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/unittest/python
|
|
COMMENT "Generating XML Python coverage report..."
|
|
)
|
|
endif()
|
|
endif()
|