#!/usr/bin/env bash set -euo pipefail # Test core component # Usage: ./test-core.sh # Setup Go workspace for CI source "$(dirname "$0")/setup-go-workspace.sh" echo "๐Ÿงช Running core tests..." # Build MCP test servers for STDIO tests echo "๐Ÿ”ง Building MCP test servers..." for mcp_dir in examples/mcps/*/; do if [ -d "$mcp_dir" ]; then mcp_name=$(basename "$mcp_dir") if [ -f "$mcp_dir/go.mod" ]; then echo " Building $mcp_name (Go)..." mkdir -p "$mcp_dir/bin" pushd "$mcp_dir" > /dev/null GOWORK=off go build -o "bin/$mcp_name" . popd > /dev/null elif [ -f "$mcp_dir/package.json" ]; then echo " Building $mcp_name (TypeScript)..." pushd "$mcp_dir" > /dev/null npm install --silent && npm run build popd > /dev/null fi fi done echo "โœ… MCP test servers built" # Validate core build echo "๐Ÿ”จ Validating core build..." cd core go mod download go build ./... echo "โœ… Core build validation successful" # Run core tests with coverage echo "๐Ÿงช Running core tests with coverage..." go test -race -timeout 20m -coverprofile=coverage.txt -coverpkg=./... ./... # Upload coverage to Codecov if [ -n "${CODECOV_TOKEN:-}" ]; then echo "๐Ÿ“Š Uploading coverage to Codecov..." curl -Os https://uploader.codecov.io/latest/linux/codecov chmod +x codecov ./codecov -t "$CODECOV_TOKEN" -f coverage.txt -F core rm -f codecov coverage.txt else echo "โ„น๏ธ CODECOV_TOKEN not set, skipping coverage upload" rm -f coverage.txt fi cd .. echo "โœ… Core tests completed successfully"