diff options
Diffstat (limited to 'scripts')
-rwxr-xr-x | scripts/coverage | 34 | ||||
-rwxr-xr-x | scripts/run-test | 31 |
2 files changed, 65 insertions, 0 deletions
diff --git a/scripts/coverage b/scripts/coverage new file mode 100755 index 0000000..1c4a279 --- /dev/null +++ b/scripts/coverage @@ -0,0 +1,34 @@ +#!/bin/sh + +# 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 +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 coverage/covsrv.info --out coverage + +cleanup +exit 0 diff --git a/scripts/run-test b/scripts/run-test new file mode 100755 index 0000000..05ddfe1 --- /dev/null +++ b/scripts/run-test @@ -0,0 +1,31 @@ +#!/bin/sh + +TEST="$1" +NAME=$(basename "$TEST") + +mkdir -p "reports/$NAME" + +I=0 +while :; do + # if no error happened, consider it a pass + if valgrind -q --leak-check=full --error-exitcode=1 \ + "./$TEST" > "reports/$NAME/run-$I" 2>&1 + then + echo "$NAME: PASSED" + exit 0 + fi + + if grep 'loss record' "reports/$NAME/run-$I" >/dev/null; then + echo "$NAME: MEM FAILED" + exit 1 + fi + + # an error occured, was it handled properly? + if grep 'COVSRV: EXIT' "reports/$NAME/run-$I" >/dev/null; then + I=$((I+1)) + continue + fi + + echo "$NAME: FAILED" + exit 1 +done |