diff --git a/.jenkins b/.jenkins index 1a12b6c..21cce49 100755 --- a/.jenkins +++ b/.jenkins @@ -2,6 +2,9 @@ set -e source .jenkins.d/util.sh +if has Linux $NODE_LABELS; then + export PATH="~/.local/bin${PATH:+:}${PATH}" +fi export CACHE_DIR=${CACHE_DIR:-/tmp} export WAF_JOBS=${WAF_JOBS:-1} [[ $JOB_NAME == *"code-coverage" ]] && export DISABLE_ASAN=yes diff --git a/.jenkins.d/00-deps.sh b/.jenkins.d/00-deps.sh index 3faaf09..304a19a 100755 --- a/.jenkins.d/00-deps.sh +++ b/.jenkins.d/00-deps.sh @@ -35,7 +35,8 @@ elif has Ubuntu $NODE_LABELS; then case $JOB_NAME in *code-coverage) - sudo apt-get -qy install gcovr lcov + sudo apt-get -qy install lcov python3-pip + pip3 install --user --upgrade --upgrade-strategy=eager 'gcovr~=5.0' ;; *Docs) sudo apt-get -qy install python3-pip diff --git a/.jenkins.d/30-coverage.sh b/.jenkins.d/30-coverage.sh index 7ea2a91..a0e25e5 100755 --- a/.jenkins.d/30-coverage.sh +++ b/.jenkins.d/30-coverage.sh @@ -2,29 +2,30 @@ set -ex if [[ $JOB_NAME == *"code-coverage" ]]; then - gcovr --object-directory=build \ - --output=build/coverage.xml \ - --exclude="$PWD/tests" \ - --root=. \ - --xml + # Generate an XML report (Cobertura format) and a detailed HTML report using gcovr + # Note: trailing slashes are important in the paths below. Do not remove them! + gcovr -j$WAF_JOBS \ + --object-directory build \ + --filter tools/ \ + --exclude-throw-branches \ + --exclude-unreachable-branches \ + --print-summary \ + --html-details build/gcovr/ \ + --xml build/coverage.xml - # Generate also a detailed HTML output, but using lcov (better results) + # Generate a detailed HTML report using lcov lcov --quiet \ --capture \ --directory . \ + --exclude "$PWD/tests/*" \ --no-external \ --rc lcov_branch_coverage=1 \ - --output-file build/coverage-with-tests.info - - lcov --quiet \ - --remove build/coverage-with-tests.info "$PWD/tests/*" \ - --rc lcov_branch_coverage=1 \ --output-file build/coverage.info genhtml --branch-coverage \ --demangle-cpp \ --legend \ - --output-directory build/coverage \ + --output-directory build/lcov \ --title "ndn-tools unit tests" \ build/coverage.info fi