42 lines
1.5 KiB
Bash
Executable file
42 lines
1.5 KiB
Bash
Executable file
#!/bin/bash
|
|
# SPDX-License-Identifier: GPL-3.0-or-later
|
|
|
|
# generate variables for coverage testing
|
|
# $1 = top source directory
|
|
# $2 = coverage data directory path
|
|
# $3 = name of test/new subdirectory name
|
|
# $4 = [optional] --export to generate export commands
|
|
|
|
set -o errexit -o nounset
|
|
shopt -s nullglob
|
|
|
|
test -z "${COVERAGE:-}" && exit 0 # not enabled, do nothing
|
|
test ! -z "${V:-}" && set -o xtrace # verbose mode
|
|
|
|
EXPORT=""
|
|
test "${4:-}" == "--export" && EXPORT="export "
|
|
TOPSRCDIR="$1"
|
|
DATAROOT="$2"
|
|
OUTPATH="$2/$3"
|
|
|
|
# check that output directory is empty
|
|
# beware: Makefile will always call coverage_env.sh for all targets
|
|
# so directories get created but not populated
|
|
# i.e. test -d is not sufficient check
|
|
OUTPATH_FILENAMES=("${OUTPATH}"/*) # filenames in BASH array
|
|
(( ${#OUTPATH_FILENAMES[*]} )) && echo "false" && >&2 echo "fatal: output directory ${OUTPATH} must be empty (or non-existent)" && exit 1
|
|
|
|
mkdir -p "${OUTPATH}"
|
|
# convert paths to absolute
|
|
pushd "${OUTPATH}" &> /dev/null
|
|
touch .topdir_kresd_coverage
|
|
OUTPATH="$(pwd -P)"
|
|
popd &> /dev/null
|
|
|
|
# determine GCOV_PREFIX_STRIP value for current source directory
|
|
TOPSRCDIR_SLASHES="${TOPSRCDIR//[^\/]/}" # remove everything except /
|
|
GCOV_PREFIX_STRIP="${#TOPSRCDIR_SLASHES}" # number of / == number of components
|
|
|
|
KRESD_COVERAGE_STATS="${OUTPATH}/luacov.stats.out"
|
|
GCOV_PREFIX="${OUTPATH}"
|
|
echo "${EXPORT}KRESD_COVERAGE_STATS=\"${KRESD_COVERAGE_STATS}\" ${EXPORT}GCOV_PREFIX=\"${GCOV_PREFIX}\" ${EXPORT}GCOV_PREFIX_STRIP=\"${GCOV_PREFIX_STRIP}\""
|