#!/bin/sh # script/test: run the test suite (vet first, then the tests with the race # detector; a verbose rerun on failure). set -eu ROOT="$(cd "$(dirname "$0")/.." && pwd -P)" main() { cd "$ROOT" # CGO is required (Makefile exports this too) export CGO_ENABLED=1 go vet ./... # -count=1: run every test, never take a result from Go's test cache, # which the Dockerfile keeps between builds. The rerun only prints # details: `exit 1` keeps the script failing even if a flaky test # passes on the second attempt. go test -count=1 -timeout 30s -race -cover ./... || \ { echo "--- Rerunning with -v for details ---"; \ go test -count=1 -timeout 30s -race -v ./...; exit 1; } } main "$@"