coverage: use kcov to get coverage for our cc script
This commit is contained in:
parent
51cbc278aa
commit
19b7b15929
5 changed files with 32 additions and 7 deletions
|
@ -29,7 +29,6 @@ coverage:
|
||||||
|
|
||||||
ignore:
|
ignore:
|
||||||
- lib/spack/spack/test/.*
|
- lib/spack/spack/test/.*
|
||||||
- lib/spack/env/.*
|
|
||||||
- lib/spack/docs/.*
|
- lib/spack/docs/.*
|
||||||
- lib/spack/external/.*
|
- lib/spack/external/.*
|
||||||
|
|
||||||
|
|
|
@ -7,7 +7,6 @@ branch = True
|
||||||
source = lib
|
source = lib
|
||||||
omit =
|
omit =
|
||||||
lib/spack/spack/test/*
|
lib/spack/spack/test/*
|
||||||
lib/spack/env/*
|
|
||||||
lib/spack/docs/*
|
lib/spack/docs/*
|
||||||
lib/spack/external/*
|
lib/spack/external/*
|
||||||
|
|
||||||
|
|
10
.travis.yml
10
.travis.yml
|
@ -133,17 +133,19 @@ addons:
|
||||||
apt:
|
apt:
|
||||||
packages:
|
packages:
|
||||||
- ccache
|
- ccache
|
||||||
|
- cmake
|
||||||
- gfortran
|
- gfortran
|
||||||
- mercurial
|
|
||||||
- graphviz
|
- graphviz
|
||||||
- gnupg2
|
- gnupg2
|
||||||
- cmake
|
- kcov
|
||||||
|
- mercurial
|
||||||
- ninja-build
|
- ninja-build
|
||||||
|
- perl
|
||||||
|
- perl-base
|
||||||
|
- realpath
|
||||||
- r-base
|
- r-base
|
||||||
- r-base-core
|
- r-base-core
|
||||||
- r-base-dev
|
- r-base-dev
|
||||||
- perl
|
|
||||||
- perl-base
|
|
||||||
# for Mac builds, we use Homebrew
|
# for Mac builds, we use Homebrew
|
||||||
homebrew:
|
homebrew:
|
||||||
packages:
|
packages:
|
||||||
|
|
12
share/spack/qa/bashcov
Executable file
12
share/spack/qa/bashcov
Executable file
|
@ -0,0 +1,12 @@
|
||||||
|
#!/bin/bash
|
||||||
|
#
|
||||||
|
# This script acts like bash but runs kcov on the input script. We use it
|
||||||
|
# to get coverage for Spack's bash scripts.
|
||||||
|
#
|
||||||
|
|
||||||
|
if [ -z "$SPACK_ROOT" ]; then
|
||||||
|
echo "ERROR: SPACK_ROOT was not set!"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
kcov "$SPACK_ROOT/coverage" "$@"
|
|
@ -11,15 +11,28 @@
|
||||||
#
|
#
|
||||||
|
|
||||||
QA_DIR="$(dirname ${BASH_SOURCE[0]})"
|
QA_DIR="$(dirname ${BASH_SOURCE[0]})"
|
||||||
SPACK_ROOT="$QA_DIR/../../.."
|
export SPACK_ROOT=$(realpath "$QA_DIR/../../..")
|
||||||
|
|
||||||
# Source the setup script
|
# Source the setup script
|
||||||
. "$SPACK_ROOT/share/spack/setup-env.sh"
|
. "$SPACK_ROOT/share/spack/setup-env.sh"
|
||||||
|
|
||||||
# Set up some variables for running coverage tests.
|
# Set up some variables for running coverage tests.
|
||||||
if [[ "$TEST_SUITE" == "unit" || "$TEST_SUITE" == "build" ]]; then
|
if [[ "$TEST_SUITE" == "unit" || "$TEST_SUITE" == "build" ]]; then
|
||||||
|
# these set up coverage for Python
|
||||||
coverage=coverage
|
coverage=coverage
|
||||||
coverage_run="coverage run"
|
coverage_run="coverage run"
|
||||||
|
|
||||||
|
# make a coverage directory for kcov, and patch cc to use our bashcov
|
||||||
|
# script instead of plain bash
|
||||||
|
if [[ $TEST_SUITE == unit && # kcov segfaults for the MPICH build test
|
||||||
|
$TRAVIS_OS_NAME == linux &&
|
||||||
|
$TRAVIS_PYTHON_VERSION != 2.6 ]];
|
||||||
|
then
|
||||||
|
mkdir -p coverage
|
||||||
|
cc_script="$SPACK_ROOT/lib/spack/env/cc"
|
||||||
|
bashcov=$(realpath ${QA_DIR}/bashcov)
|
||||||
|
sed -i~ "s@#\!/bin/bash@#\!${bashcov}@" "$cc_script"
|
||||||
|
fi
|
||||||
else
|
else
|
||||||
coverage=""
|
coverage=""
|
||||||
coverage_run=""
|
coverage_run=""
|
||||||
|
|
Loading…
Reference in a new issue