#!/usr/bin/env bash set -euo pipefail RED='\033[0;31m' GREEN='\033[0;32m' YELLOW='\033[0;33m' NC='\033[0m' TARGET="${1:-.}" errors=0 echo "=== Test Suite ===" has_python=$(find "$TARGET" -name "test_*.py" -o -name "*_test.py" | head -1) has_go=$(find "$TARGET" -name "*_test.go" | head -1) if [ -z "$has_python" ] && [ -z "$has_go" ]; then printf "${YELLOW}!${NC} No test files found — skipping\n" exit 0 fi if [ -n "$has_python" ]; then if ! command -v pytest &>/dev/null; then printf "${RED}✗${NC} pytest not installed\n" exit 2 fi echo "-- Python (pytest --cov) --" if pytest "$TARGET" --cov --cov-report=term-missing -q 2>/dev/null; then printf "${GREEN}✓${NC} Python tests passed\n" else printf "${RED}✗${NC} Python tests failed\n" errors=$((errors + 1)) fi fi if [ -n "$has_go" ]; then if ! command -v go &>/dev/null; then printf "${RED}✗${NC} go not installed\n" exit 2 fi echo "-- Go (go test -cover) --" if go test -cover ./... 2>/dev/null; then printf "${GREEN}✓${NC} Go tests passed\n" else printf "${RED}✗${NC} Go tests failed\n" errors=$((errors + 1)) fi fi if [ "$errors" -gt 0 ]; then exit 1 else exit 0 fi