#!/bin/sh # script/test: run the backend test suite on the host with the race # detector and coverage. The root make test runs the same in the test # phase of the root Dockerfile. Go's own -timeout bounds the tests and # not their compile, so a cold build cache cannot fail it. -count=1 # keeps Go's test result cache out of both runs, so neither can report # a stored pass. The race detector needs cgo, and so a C compiler. If # the tests fail, they run again with -v for the details, and the # script fails even if that run passes. set -eu ROOT="$(cd "$(dirname "$0")/.." && pwd -P)" main() { cd "$ROOT" go test -count=1 -timeout 90s -race -cover ./... || { echo "--- Rerunning with -v for details ---" go test -count=1 -timeout 90s -race -v ./... exit 1 } } main "$@"