#!/bin/bash # Script to run all test suites for veza-backend-api # Usage: ./scripts/test_all.sh [unit|integration|race|all] set -e SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" PROJECT_ROOT="$(cd "$SCRIPT_DIR/.." && pwd)" cd "$PROJECT_ROOT" # Colors for output RED='\033[0;31m' GREEN='\033[0;32m' YELLOW='\033[1;33m' NC='\033[0m' # No Color # Function to print status print_status() { echo -e "${GREEN}[INFO]${NC} $1" } print_error() { echo -e "${RED}[ERROR]${NC} $1" } print_warning() { echo -e "${YELLOW}[WARN]${NC} $1" } # Parse arguments MODE="${1:-all}" case "$MODE" in unit) print_status "Running unit tests..." go test ./... -count=1 -v ;; integration) print_status "Running integration tests..." go test ./... -tags=integration -count=1 -v ;; race) print_status "Running race detector tests..." go test ./... -race -count=1 -v ;; all) print_status "Running all test suites..." print_status "1/3: Unit tests" if go test ./... -count=1; then print_status "✓ Unit tests passed" else print_error "✗ Unit tests failed" exit 1 fi print_status "2/3: Integration tests" if go test ./... -tags=integration -count=1; then print_status "✓ Integration tests passed" else print_warning "⚠ Integration tests failed (may require external services)" fi print_status "3/3: Race detector tests" if go test ./... -race -count=1; then print_status "✓ Race detector tests passed" else print_warning "⚠ Race detector tests failed" fi print_status "All test suites completed" ;; *) echo "Usage: $0 [unit|integration|race|all]" exit 1 ;; esac