ceremonyclient/pebble/scripts/pr-codecov-run-tests.sh

45 lines
1.0 KiB
Bash
Raw Permalink Normal View History

2024-01-03 07:31:42 +00:00
#!/usr/bin/env bash
# This script runs unit tests with coverage enabled for a specific list of
# package paths and outputs the coverage to a json file.
#
# Package paths that are not valid in this tree are tolerated.
set -xeuo pipefail
output_json_file="$1"
packages="$2"
# Find the targets. We need to convert from, e.g.
# . objstorage objstorage/objstorageprovider
# to
# . ./objstorage ./objstorage/objstorageprovider
paths=""
sep=""
for p in ${packages}; do
# Check that the path exists and contains Go files.
if ls "${p}"/*.go >/dev/null 2>&1; then
if [[ $p != "." ]]; then
p="./$p"
fi
paths="${paths}${sep}${p}"
sep=" "
fi
done
if [ -z "${paths}" ]; then
echo "Skipping"
touch "${output_json_file}"
exit 0
fi
tmpfile=$(mktemp --suffix -coverprofile)
trap 'rm -f "${tmpfile}"' EXIT
make testcoverage COVER_PROFILE="${tmpfile}" PKG="$paths"
go run github.com/cockroachdb/code-cov-utils/gocover2json@v1.0.0 \
--trim-prefix github.com/cockroachdb/pebble/ \
"${tmpfile}" "${output_json_file}"