#!/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 "$@"
