#!/bin/bash
set -e -o pipefail
workdir=.cover
profile="$workdir/cover.out"
html="$workdir/cover.html"
mode=atomic
dir=$(dirname $0)
report="$workdir/report.out"
exclude_files=(gen hack)
join() { local IFS="$1"; shift; echo "$*"; }
excludes=$(join "|" ${exclude_files[@]} | sed -e 's/\./\\./g')
generate_cover_data() {
rm -rf "$workdir"
mkdir "$workdir"
for pkg in "$@"; do
f="$workdir/$(echo $pkg | tr / -).cover"
if [[ ${UPDATE_COVERAGE} == "true" ]]; then
go test -covermode="$mode" -coverprofile="$f" "$pkg" >> "$report"
else
go test -v -covermode="$mode" -coverprofile="$f" "$pkg"
fi
done
echo "mode: $mode" >"$profile"
grep -h -v "^mode:" "$workdir"/*.cover | $dir/exclude_ignore.py | egrep -v "$excludes" >>"$profile"
}
generate_cover_data $(go list ./... | grep -v /vendor/ | grep -v integration )
go tool cover -html="$profile" -o="$html"
if [[ ${UPDATE_COVERAGE} == "true" ]]; then
report_data=$($dir/parse_coverage_report.py)
if [[ -n "$report_data" ]]; then
curl -X POST "http://${DASHBOARD_HOST}/post-coverage" -d ''"$report_data"''
fi
fi