From bbbc790cfcebff261290d0d0ea50fa74927aea43 Mon Sep 17 00:00:00 2001 From: Gabriel Ebner Date: Fri, 2 Dec 2016 13:54:31 -0500 Subject: [PATCH] feat(.travis.yml): add codecov --- .codecov.yml | 1 + .travis.yml | 30 +++--- README.md | 3 +- src/CMakeLists.txt | 5 +- src/cmake/Modules/CodeCoverage.cmake | 143 --------------------------- 5 files changed, 22 insertions(+), 160 deletions(-) create mode 100644 .codecov.yml delete mode 100644 src/cmake/Modules/CodeCoverage.cmake diff --git a/.codecov.yml b/.codecov.yml new file mode 100644 index 0000000000..db2472009c --- /dev/null +++ b/.codecov.yml @@ -0,0 +1 @@ +comment: off diff --git a/.travis.yml b/.travis.yml index cad2781aa4..9b84e62168 100644 --- a/.travis.yml +++ b/.travis.yml @@ -6,7 +6,8 @@ addons: apt: sources: &apt_sources - ubuntu-toolchain-r-test - - sourceline: 'ppa:kalakris/cmake' + - sourceline: 'ppa:kalakris/cmake' # cmake 2.8 for precise + - sourceline: 'ppa:adrozdoff/cmake' # cmake 3 for trusty - sourceline: 'ppa:h-rayflood/llvm' packages: &default_packages - cmake @@ -15,9 +16,6 @@ addons: - libgoogle-perftools-dev - g++-4.9 - clang-3.4 - - lcov - - valgrind - - python-pip matrix: include: @@ -28,17 +26,25 @@ matrix: TCMALLOC=ON - os: linux - addons: + addons: &gcc6_addons apt: sources: *apt_sources packages: - *default_packages - g++-6 + - gcc-6 env: CMAKE_CXX_COMPILER=g++-6 CMAKE_BUILD_TYPE=Release TCMALLOC=ON + - os: linux + addons: *gcc6_addons + env: + CMAKE_CXX_COMPILER=g++-6 + CMAKE_BUILD_TYPE=Release + TESTCOV=ON + - os: linux env: CMAKE_CXX_COMPILER=clang++-3.4 @@ -77,17 +83,17 @@ script: - if [[ $TCMALLOC != ON ]]; then TCMALLOC=OFF; fi - cmake -DCONSERVE_MEMORY=${CONSERVE_MEMORY} -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} -DTESTCOV=${TESTCOV} -DTCMALLOC=${TCMALLOC} -DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER} ../src - make -j2 - - if [[ $CMAKE_BUILD_TYPE == Release ]]; then yes "C" | ctest -j2 -V; fi + # TODO(gabriel): add smaller test subset for debug and emscripten builds + - if [[ $CMAKE_BUILD_TYPE == Release ]]; then + yes "C" | ctest -j2 -V; + else + yes C | ctest -j2 -I 100,600,10 -V; + fi - if [[ $PACKAGE == TRUE ]]; then make package; fi - cd .. after_script: -# - if [[ $REPO == BLESSED && $TESTCOV == ON ]]; then -# ctest -D ExperimentalCoverage && -# make cov && -# npm install coveralls --save && -# cat coverage.info.cleaned | ./node_modules/coveralls/bin/coveralls.js; -# fi + - if [[ $TESTCOV == ON ]]; then bash <(curl -s https://codecov.io/bash) -x gcov-6; fi notifications: email: diff --git a/README.md b/README.md index eda8b593a3..9675555d54 100644 --- a/README.md +++ b/README.md @@ -1,12 +1,13 @@

logo

- + +
LicenseWindowsUbuntuOS XBuilds/TestsLicenseWindowsLinux / macOSTest Coverage
Codecov
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 166f86ede5..6445689d31 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -171,10 +171,7 @@ endif() # Test coverage if(TESTCOV) - include(CodeCoverage) - message(STATUS "Enable test-coverage") - set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -O0 -fprofile-arcs -ftest-coverage --coverage") - setup_target_for_coverage(cov "${LEAN_SOURCE_DIR}/../script/run_tests.sh" coverage) + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} --coverage") endif() # Compiler-specific C++11 activation. diff --git a/src/cmake/Modules/CodeCoverage.cmake b/src/cmake/Modules/CodeCoverage.cmake deleted file mode 100644 index 9941c3a7d5..0000000000 --- a/src/cmake/Modules/CodeCoverage.cmake +++ /dev/null @@ -1,143 +0,0 @@ -# Copyright Iowa State University 2009-2011 -# Distributed under the Boost Software License, Version 1.0. -# (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -# https://github.com/bilke/cmake-modules - -# -# 2012-01-31, Lars Bilke -# - Enable Code Coverage -# -# 2013-09-17, Joakim Söderberg -# - Added support for Clang. -# - Some additional usage instructions. -# -# USAGE: -# 1. Copy this file into your cmake modules path. -# -# 2. Add the following line to your CMakeLists.txt: -# INCLUDE(CodeCoverage) -# -# 3. Set compiler flags to turn off optimization and enable coverage: -# SET(CMAKE_CXX_FLAGS "-g -O0 -fprofile-arcs -ftest-coverage") -# SET(CMAKE_C_FLAGS "-g -O0 -fprofile-arcs -ftest-coverage") -# -# 3. Use the function SETUP_TARGET_FOR_COVERAGE to create a custom make target -# which runs your test executable and produces a lcov code coverage report: -# Example: -# SETUP_TARGET_FOR_COVERAGE( -# my_coverage_target # Name for custom target. -# test_driver # Name of the test driver executable that runs the tests. -# # NOTE! This should always have a ZERO as exit code -# # otherwise the coverage generation will not complete. -# coverage # Name of output directory. -# ) -# -# 4. Build a Debug build: -# cmake -DCMAKE_BUILD_TYPE=Debug .. -# make -# make my_coverage_target -# -# - -# Check prereqs -FIND_PROGRAM( GCOV_PATH gcov ) -FIND_PROGRAM( LCOV_PATH lcov ) -FIND_PROGRAM( GENHTML_PATH genhtml ) -FIND_PROGRAM( GCOVR_PATH gcovr PATHS ${CMAKE_SOURCE_DIR}/tests) - -IF(NOT GCOV_PATH) - MESSAGE(FATAL_ERROR "gcov not found! Aborting...") -ENDIF() # NOT GCOV_PATH - -IF(NOT CMAKE_COMPILER_IS_GNUCXX) - # Clang version 3.0.0 and greater now supports gcov as well. - MESSAGE(WARNING "Compiler is not GNU gcc! Clang Version 3.0.0 and greater supports gcov as well, but older versions don't.") - - IF(NOT "${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang") - MESSAGE(FATAL_ERROR "Compiler is not GNU gcc! Aborting...") - ENDIF() -ENDIF() # NOT CMAKE_COMPILER_IS_GNUCXX - -IF ( NOT CMAKE_BUILD_TYPE STREQUAL "Debug" ) - MESSAGE( WARNING "Code coverage results with an optimized (non-Debug) build may be misleading" ) -ENDIF() # NOT CMAKE_BUILD_TYPE STREQUAL "Debug" - - -# Param _targetname The name of new the custom make target -# Param _testrunner The name of the target which runs the tests. -# MUST return ZERO always, even on errors. -# If not, no coverage report will be created! -# Param _outputname lcov output is generated as _outputname.info -# HTML report is generated in _outputname/index.html -# Optional fourth parameter is passed as arguments to _testrunner -# Pass them in list form, e.g.: "-j;2" for -j 2 -FUNCTION(SETUP_TARGET_FOR_COVERAGE _targetname _testrunner _outputname) - - IF(NOT LCOV_PATH) - MESSAGE(FATAL_ERROR "lcov not found! Aborting...") - ENDIF() # NOT LCOV_PATH - - IF(NOT GENHTML_PATH) - MESSAGE(FATAL_ERROR "genhtml not found! Aborting...") - ENDIF() # NOT GENHTML_PATH - - # Setup target - ADD_CUSTOM_TARGET(${_targetname} - - # Cleanup lcov - ${LCOV_PATH} --directory . --zerocounters - - # Run tests - COMMAND ${_testrunner} ${ARGV3} - - # Capturing lcov counters and generating report - COMMAND ${LCOV_PATH} --directory . --capture --output-file ${_outputname}.info - COMMAND ${LCOV_PATH} --remove ${_outputname}.info 'tests/*' '/usr/*' --output-file ${_outputname}.info.cleaned - COMMAND ${GENHTML_PATH} -o ${_outputname} ${_outputname}.info.cleaned - COMMAND ${CMAKE_COMMAND} -E remove ${_outputname}.info - - WORKING_DIRECTORY ${CMAKE_BINARY_DIR} - COMMENT "Resetting code coverage counters to zero.\nProcessing code coverage counters and generating report." - ) - - # Show info where to find the report - ADD_CUSTOM_COMMAND(TARGET ${_targetname} POST_BUILD - COMMAND ; - COMMENT "Open ./${_outputname}/index.html in your browser to view the coverage report." - ) - -ENDFUNCTION() # SETUP_TARGET_FOR_COVERAGE - -# Param _targetname The name of new the custom make target -# Param _testrunner The name of the target which runs the tests -# Param _outputname cobertura output is generated as _outputname.xml -# Optional fourth parameter is passed as arguments to _testrunner -# Pass them in list form, e.g.: "-j;2" for -j 2 -FUNCTION(SETUP_TARGET_FOR_COVERAGE_COBERTURA _targetname _testrunner _outputname) - - IF(NOT PYTHON_EXECUTABLE) - MESSAGE(FATAL_ERROR "Python not found! Aborting...") - ENDIF() # NOT PYTHON_EXECUTABLE - - IF(NOT GCOVR_PATH) - MESSAGE(FATAL_ERROR "gcovr not found! Aborting...") - ENDIF() # NOT GCOVR_PATH - - ADD_CUSTOM_TARGET(${_targetname} - - # Run tests - ${_testrunner} ${ARGV3} - - # Running gcovr - COMMAND ${GCOVR_PATH} -x -r ${CMAKE_SOURCE_DIR} -e '${CMAKE_SOURCE_DIR}/tests/' -o ${_outputname}.xml - WORKING_DIRECTORY ${CMAKE_BINARY_DIR} - COMMENT "Running gcovr to produce Cobertura code coverage report." - ) - - # Show info where to find the report - ADD_CUSTOM_COMMAND(TARGET ${_targetname} POST_BUILD - COMMAND ; - COMMENT "Cobertura code coverage report saved in ${_outputname}.xml." - ) - -ENDFUNCTION() # SETUP_TARGET_FOR_COVERAGE_COBERTURA \ No newline at end of file