#!/bin/bash

set -eux -o pipefail

GOCOVERDIR=$(mktemp -d)
export GOCOVERDIR

# Run tests
go test -v -timeout 2m -coverprofile=coverage.out ./...
go build -cover
bats -r test

# Merge and analyze coverage data
mkdir -p coverage
go tool covdata merge -i="$GOCOVERDIR" -o=coverage
go tool covdata textfmt -i=coverage -o=coverage/coverage.out

# Generate reports
go tool cover -func=coverage/coverage.out
go tool cover -html=coverage/coverage.out -o coverage/coverage.html

# Create a copy specifically for Codecov
cp coverage/coverage.out codecov.out

# Cleanup
rm -rf "$GOCOVERDIR"
