Files
anonymous_github/backend/scripts/test-integration.sh
T

21 lines
927 B
Bash
Executable File

#!/usr/bin/env bash
set -euo pipefail
cd "$(dirname "$0")/.."
go_binary=${GO_BINARY:-go}
project="anonymous-go-test-$$"
artifacts=$(mktemp -d)
cleanup() {
docker compose -p "$project" -f compose.test.yml down --volumes >/dev/null 2>&1 || true
rm -rf "$artifacts"
}
trap cleanup EXIT
"$go_binary" build -o "$artifacts/server" ./cmd/server
docker compose -p "$project" -f compose.test.yml up -d
mongo_address=$(docker compose -p "$project" -f compose.test.yml port mongo 27017)
redis_address=$(docker compose -p "$project" -f compose.test.yml port redis 6379)
for attempt in {1..30}; do
if docker compose -p "$project" -f compose.test.yml exec -T mongo mongosh --quiet --eval 'db.adminCommand({ping:1}).ok' >/dev/null 2>&1; then break; fi
sleep 1
done
GO_TEST_MONGODB_URI="mongodb://$mongo_address" GO_TEST_REDIS_ADDR="$redis_address" GO_TEST_SERVER_BINARY="$artifacts/server" "$go_binary" test -race -count=1 ./... "$@"