#!/usr/bin/env bash

set -euo pipefail

# Directory above this script
NODE_PATH=$( cd "$( dirname "${BASH_SOURCE[0]}" )"; cd .. && pwd )
# Load the constants
source "$NODE_PATH"/scripts/constants.sh

EXCLUDED_TARGETS="| grep -v /mocks | grep -v proto | grep -v tests/e2e | grep -v tests/load/c | grep -v tests/upgrade | grep -v tests/fixture/bootstrapmonitor/e2e"

if [[ "$(go env GOOS)" == "windows" ]]; then
  # Test discovery for the antithesis test setups is broken due to
  # their dependence on the linux-only Antithesis SDK.
  EXCLUDED_TARGETS="${EXCLUDED_TARGETS} | grep -v tests/antithesis"
fi

# Get test targets
TEST_TARGETS="$(eval "go list ./... ${EXCLUDED_TARGETS}")"

# Run tests (with race detection if CGO is enabled)
# -short flag skips long-running integration tests (MPC protocol execution, etc.)
RACE_FLAG=""
if [[ "${CGO_ENABLED:-1}" != "0" ]]; then
  RACE_FLAG="-race"
fi
# shellcheck disable=SC2086
go test -tags test -shuffle=on ${RACE_FLAG} -short -timeout="${TIMEOUT:-120s}" -coverprofile="coverage.out" -covermode="atomic" ${TEST_TARGETS}