Warning, /graphics/glaxnimate/cmake/testing.cmake is written in an unsupported language. File is not indexed.
0001 # Copyright 2015-2019 Mattia Basaglia
0002 #
0003 # This program is free software: you can redistribute it and/or modify
0004 # it under the terms of the GNU General Public License as published by
0005 # the Free Software Foundation, either version 3 of the License, or
0006 # (at your option) any later version.
0007 #
0008 # This program is distributed in the hope that it will be useful,
0009 # but WITHOUT ANY WARRANTY; without even the implied warranty of
0010 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
0011 # GNU General Public License for more details.
0012 #
0013 # You should have received a copy of the GNU General Public License
0014 # along with this program. If not, see <http://www.gnu.org/licenses/>.
0015
0016
0017 # Variables:
0018 # COVERAGE_TOOL - (lcov or gcovr) Which coverage reporting tool to use
0019 # COVERAGE_SOURCE_BASE_DIR - Base dir to extract the sources from for coverage
0020 # COVERAGE_REMOVE_PATTERNS - Patterns to remove from the trace file
0021 # COVERAGE_FILTER_PATTERNS - Patterns to keep in the trace file
0022 #
0023
0024 if(NOT DEFINED COVERAGE_TARGET_PREFIX)
0025 set(COVERAGE_TARGET_PREFIX tests_)
0026 endif()
0027
0028 enable_testing()
0029 add_custom_target(${COVERAGE_TARGET_PREFIX}compile
0030 COMMENT "Building all tests"
0031 )
0032
0033 add_custom_target(${COVERAGE_TARGET_PREFIX}run
0034 COMMAND ctest -V
0035 DEPENDS ${COVERAGE_TARGET_PREFIX}compile
0036 COMMENT "Running all tests"
0037 )
0038
0039 set(TRACEFILE "${CMAKE_BINARY_DIR}/coverage.info")
0040 set(COVERAGE_DIR "${CMAKE_BINARY_DIR}/coverage")
0041
0042 if(NOT COVERAGE_SOURCE_BASE_DIR)
0043 set(COVERAGE_SOURCE_BASE_DIR "${CMAKE_SOURCE_DIR}")
0044 endif()
0045
0046 if (NOT COVERAGE_TOOL)
0047 set(COVERAGE_TOOL "lcov")
0048 endif()
0049
0050 message(STATUS "Coverage tool is ${COVERAGE_TOOL}")
0051
0052 if (${COVERAGE_TOOL} STREQUAL lcov)
0053 add_custom_target(${COVERAGE_TARGET_PREFIX}coverage
0054 COMMAND cd ${CMAKE_BINARY_DIR}
0055 COMMAND lcov -c -d "${CMAKE_CURRENT_BINARY_DIR}" -b "${COVERAGE_SOURCE_BASE_DIR}" -o ${TRACEFILE} --no-external --rc lcov_branch_coverage=1
0056 COMMAND lcov --remove ${TRACEFILE} ${COVERAGE_REMOVE_PATTERNS} -o ${TRACEFILE} --rc lcov_branch_coverage=1
0057 COMMAND genhtml ${TRACEFILE} -o ${COVERAGE_DIR} -p "${COVERAGE_SOURCE_BASE_DIR}" --demangle-cpp --branch-coverage --rc genhtml_hi_limit=80
0058 DEPENDS ${COVERAGE_TARGET_PREFIX}run
0059 )
0060 elseif(${COVERAGE_TOOL} STREQUAL gcovr)
0061 set(GCOVR_CMD
0062 gcovr --root ${COVERAGE_SOURCE_BASE_DIR} --object-directory ${CMAKE_BINARY_DIR}
0063 -s --branches --exclude-throw-branches
0064 --html --html-details "${COVERAGE_DIR}/index.html"
0065 )
0066
0067 foreach(remove IN ITEMS ${COVERAGE_REMOVE_PATTERNS})
0068 list(APPEND GCOVR_CMD -e ${remove})
0069 endforeach()
0070
0071 foreach(filter IN ITEMS ${COVERAGE_FILTER_PATTERNS})
0072 list(APPEND GCOVR_CMD -f ${filter})
0073 endforeach()
0074
0075 add_custom_target(${COVERAGE_TARGET_PREFIX}coverage
0076 COMMAND cd ${CMAKE_BINARY_DIR}
0077 COMMAND mkdir -p ${COVERAGE_DIR}
0078 COMMAND ${GCOVR_CMD}
0079 DEPENDS ${COVERAGE_TARGET_PREFIX}run
0080 )
0081 else()
0082 endif()
0083
0084 add_custom_target(${COVERAGE_TARGET_PREFIX}coverage_view
0085 COMMAND xdg-open "${COVERAGE_DIR}/index.html"
0086 )