#!/bin/sh
set -eu

# build covsrv binary
make -C deps/covsrv

# not super fantastic but most likely good enough
export COVSRV_SOCKET=$(mktemp -u)

# server program should always be killed at the end of a test run
cleanup() {
	./deps/covsrv/build/covsrv quit
}

# kill server program even if user interrupted us or something else exceptional
# happened
trap interrupt INT HUP TERM QUIT EXIT
interrupt () {
	cleanup
	exit 1
}

# start coverage server, should create a unix socket at COVSRV_SOCKET that test
# programs can connect to
./deps/covsrv/build/covsrv &

# run tests, pass any flags like -j to make
make COVERAGEFLAGS="--coverage -DCOVERAGE=1" check "$@"

mkdir -p coverage
lcov --capture --directory . --out coverage/covsrv.info
genhtml --ignore-errors range coverage/covsrv.info --out coverage

exit 0
