From 0f47fe61d1cf9e4703b967622e5ba9dc6fa548aa Mon Sep 17 00:00:00 2001 From: BlackMATov Date: Mon, 24 Dec 2018 12:56:00 +0700 Subject: [PATCH] coverage uploading to codecov.io --- .codecov.yml | 3 +++ .travis.yml | 2 ++ CMakeLists.txt | 30 ++++++++++++++++++++++++++++++ README.md | 13 ++++++++----- scripts/upload_coverage.sh | 17 +++++++++++++++++ 5 files changed, 60 insertions(+), 5 deletions(-) create mode 100644 .codecov.yml create mode 100755 scripts/upload_coverage.sh diff --git a/.codecov.yml b/.codecov.yml new file mode 100644 index 0000000..c1c3711 --- /dev/null +++ b/.codecov.yml @@ -0,0 +1,3 @@ +ignore: + - catch.hpp + - catch_main.hpp diff --git a/.travis.yml b/.travis.yml index ffa348e..18f7714 100644 --- a/.travis.yml +++ b/.travis.yml @@ -62,6 +62,8 @@ matrix: - os: osx osx_image: xcode10 compiler: clang + addons: { homebrew: { packages: ["lcov"] } } + after_success: ./scripts/upload_coverage.sh before_install: - eval "${MATRIX_EVAL}" script: diff --git a/CMakeLists.txt b/CMakeLists.txt index 6e14896..2fa2884 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,6 +1,36 @@ cmake_minimum_required(VERSION 3.5 FATAL_ERROR) project(promise) +# +# coverage mode +# + +option(PROMISE_BUILD_WITH_COVERAGE "Build with coverage" OFF) +if(PROMISE_BUILD_WITH_COVERAGE AND (CMAKE_CXX_COMPILER_ID MATCHES "GNU|Clang")) + add_definitions(-DPROMISE_BUILD_WITH_COVERAGE) + set(PROMISE_COVERAGE_FLAGS "--coverage") + set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} ${PROMISE_COVERAGE_FLAGS}") + set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} ${PROMISE_COVERAGE_FLAGS}") + set(CMAKE_LINKER_FLAGS_DEBUG "${CMAKE_LINKER_FLAGS_DEBUG} ${PROMISE_COVERAGE_FLAGS}") +endif() + +# +# sanitizer mode +# + +option(PROMISE_BUILD_WITH_SANITIZER "Build with sanitizer" OFF) +if(PROMISE_BUILD_WITH_SANITIZER AND (CMAKE_CXX_COMPILER_ID MATCHES "GNU|Clang")) + add_definitions(-DPROMISE_BUILD_WITH_SANITIZER) + set(PROMISE_SANITIZER_FLAGS "-fno-omit-frame-pointer -fsanitize=address") + set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} ${PROMISE_SANITIZER_FLAGS}") + set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} ${PROMISE_SANITIZER_FLAGS}") + set(CMAKE_LINKER_FLAGS_DEBUG "${CMAKE_LINKER_FLAGS_DEBUG} ${PROMISE_SANITIZER_FLAGS}") +endif() + +# +# tests executable +# + find_package(Threads REQUIRED) file(GLOB test_sources "*.cpp" "*.hpp") diff --git a/README.md b/README.md index 0d27b0c..ff5c3d2 100644 --- a/README.md +++ b/README.md @@ -2,18 +2,21 @@ [![travis][badge.travis]][travis] [![appveyor][badge.appveyor]][appveyor] +[![codecov][badge.codecov]][codecov] [![language][badge.language]][language] [![license][badge.license]][license] [![paypal][badge.paypal]][paypal] -[badge.travis]: https://img.shields.io/travis/BlackMATov/promise.hpp/master.svg?logo=travis&style=for-the-badge -[badge.appveyor]: https://img.shields.io/appveyor/ci/BlackMATov/promise-hpp/master.svg?logo=appveyor&style=for-the-badge -[badge.language]: https://img.shields.io/badge/language-C%2B%2B14-red.svg?style=for-the-badge -[badge.license]: https://img.shields.io/badge/license-MIT-blue.svg?style=for-the-badge -[badge.paypal]: https://img.shields.io/badge/donate-PayPal-orange.svg?logo=paypal&colorA=00457C&style=for-the-badge +[badge.travis]: https://img.shields.io/travis/BlackMATov/promise.hpp/master.svg?logo=travis +[badge.appveyor]: https://img.shields.io/appveyor/ci/BlackMATov/promise-hpp/master.svg?logo=appveyor +[badge.codecov]: https://img.shields.io/codecov/c/github/BlackMATov/promise.hpp/master.svg?logo=codecov +[badge.language]: https://img.shields.io/badge/language-C%2B%2B14-red.svg +[badge.license]: https://img.shields.io/badge/license-MIT-blue.svg +[badge.paypal]: https://img.shields.io/badge/donate-PayPal-orange.svg?logo=paypal&colorA=00457C [travis]: https://travis-ci.org/BlackMATov/promise.hpp [appveyor]: https://ci.appveyor.com/project/BlackMATov/promise-hpp +[codecov]: https://codecov.io/gh/BlackMATov/promise.hpp [language]: https://en.wikipedia.org/wiki/C%2B%2B14 [license]: https://en.wikipedia.org/wiki/MIT_License [paypal]: https://www.paypal.me/matov diff --git a/scripts/upload_coverage.sh b/scripts/upload_coverage.sh new file mode 100755 index 0000000..d13a427 --- /dev/null +++ b/scripts/upload_coverage.sh @@ -0,0 +1,17 @@ +#!/bin/bash +set -e + +BUILD_DIR=`dirname "$BASH_SOURCE"`/../build +mkdir -p $BUILD_DIR/coverage +cd $BUILD_DIR/coverage +cmake -DCMAKE_BUILD_TYPE=Debug -DECS_BUILD_WITH_COVERAGE=ON ../.. +cmake --build . -- -j8 + +lcov -d . -z +ctest --verbose + +lcov -d . -c -o "coverage.info" +lcov -r "coverage.info" "*/usr/*" "*/catch.hpp" "*/catch_main.cpp" -o "coverage.info" +lcov -l "coverage.info" + +bash <(curl -s https://codecov.io/bash) || echo "Codecov did not collect coverage reports"