1
0
mirror of https://blitiri.com.ar/repos/chasquid synced 2026-01-07 17:47:14 +00:00

test: Add tools to generate test coverage information

This patch adds some tooling and scripts to generate test coverage
information.

Unfortunately, this involves some hacks as Go does not have support for
generating coverage-enabled binaries, or merging coverage reports; but
overall it's not very intrusive.
This commit is contained in:
Alberto Bertogli
2018-02-25 01:24:00 +00:00
parent 751fbd4b55
commit bb90274edd
11 changed files with 221 additions and 0 deletions

48
test/cover.sh Executable file
View File

@@ -0,0 +1,48 @@
#!/bin/bash
# Runs tests (both go and integration) in coverage-generation mode.
# Generates an HTML report with the results.
#
# The .coverage directory is used to store the data, it will be erased and
# recreated on each run.
#
# This is not very tidy, and relies on some hacky tricks (see
# coverage_test.go), but works for now.
set -e
. $(dirname ${0})/util/lib.sh
init
cd "${TBASE}/.."
# Recreate the coverage output directory, to avoid including stale results
# from previous runs.
rm -rf .coverage
mkdir -p .coverage
export COVER_DIR="$PWD/.coverage"
# Normal go tests.
go test -tags coverage \
-covermode=count \
-coverprofile="$COVER_DIR/pkg-tests.out"\
-coverpkg=./... ./...
# Integration tests.
# Will run in coverage mode due to $COVER_DIR being set.
setsid -w ./test/run.sh
# Merge all coverage output into a single file.
# Ignore protocol buffer-generated files, as they are not relevant.
go run "${UTILDIR}/gocovcat.go" .coverage/*.out \
| grep -v ".pb.go:" \
> .coverage/all.out
# Generate reports based on the merged output.
go tool cover -func="$COVER_DIR/all.out" | sort -k 3 -n > "$COVER_DIR/func.txt"
go tool cover -html="$COVER_DIR/all.out" -o "$COVER_DIR/chasquid.html"
echo
echo "Coverage report can be found in:"
echo file://$COVER_DIR/chasquid.html