127 lines
3.3 KiB
Bash
Executable File
127 lines
3.3 KiB
Bash
Executable File
#!/bin/bash
|
||
|
||
# Test runner script for LatticeLM Gateway
|
||
# Usage: ./run-tests.sh [option]
|
||
#
|
||
# Options:
|
||
# all - Run all tests (default)
|
||
# coverage - Run tests with coverage report
|
||
# verbose - Run tests with verbose output
|
||
# config - Run config tests only
|
||
# providers - Run provider tests only
|
||
# conv - Run conversation tests only
|
||
# watch - Watch mode (requires entr)
|
||
|
||
set -e
|
||
|
||
COLOR_GREEN='\033[0;32m'
|
||
COLOR_BLUE='\033[0;34m'
|
||
COLOR_YELLOW='\033[1;33m'
|
||
COLOR_RED='\033[0;31m'
|
||
COLOR_RESET='\033[0m'
|
||
|
||
print_header() {
|
||
echo -e "${COLOR_BLUE}========================================${COLOR_RESET}"
|
||
echo -e "${COLOR_BLUE}$1${COLOR_RESET}"
|
||
echo -e "${COLOR_BLUE}========================================${COLOR_RESET}"
|
||
}
|
||
|
||
print_success() {
|
||
echo -e "${COLOR_GREEN}✓ $1${COLOR_RESET}"
|
||
}
|
||
|
||
print_error() {
|
||
echo -e "${COLOR_RED}✗ $1${COLOR_RESET}"
|
||
}
|
||
|
||
print_info() {
|
||
echo -e "${COLOR_YELLOW}ℹ $1${COLOR_RESET}"
|
||
}
|
||
|
||
run_all_tests() {
|
||
print_header "Running All Tests"
|
||
go test ./internal/... || exit 1
|
||
print_success "All tests passed!"
|
||
}
|
||
|
||
run_verbose_tests() {
|
||
print_header "Running Tests (Verbose)"
|
||
go test ./internal/... -v || exit 1
|
||
print_success "All tests passed!"
|
||
}
|
||
|
||
run_coverage_tests() {
|
||
print_header "Running Tests with Coverage"
|
||
go test ./internal/... -cover -coverprofile=coverage.out || exit 1
|
||
print_success "Tests passed! Generating HTML report..."
|
||
go tool cover -html=coverage.out -o coverage.html
|
||
print_success "Coverage report generated: coverage.html"
|
||
print_info "Open coverage.html in your browser to view detailed coverage"
|
||
}
|
||
|
||
run_config_tests() {
|
||
print_header "Running Config Tests"
|
||
go test ./internal/config -v -cover || exit 1
|
||
print_success "Config tests passed!"
|
||
}
|
||
|
||
run_provider_tests() {
|
||
print_header "Running Provider Tests"
|
||
go test ./internal/providers/... -v -cover || exit 1
|
||
print_success "Provider tests passed!"
|
||
}
|
||
|
||
run_conversation_tests() {
|
||
print_header "Running Conversation Tests"
|
||
go test ./internal/conversation -v -cover || exit 1
|
||
print_success "Conversation tests passed!"
|
||
}
|
||
|
||
run_watch_mode() {
|
||
if ! command -v entr &> /dev/null; then
|
||
print_error "entr is not installed. Install it with: apt-get install entr"
|
||
exit 1
|
||
fi
|
||
print_header "Running Tests in Watch Mode"
|
||
print_info "Watching for file changes... (Press Ctrl+C to stop)"
|
||
find ./internal -name '*.go' | entr -c sh -c 'go test ./internal/... || true'
|
||
}
|
||
|
||
# Main script
|
||
case "${1:-all}" in
|
||
all)
|
||
run_all_tests
|
||
;;
|
||
coverage)
|
||
run_coverage_tests
|
||
;;
|
||
verbose)
|
||
run_verbose_tests
|
||
;;
|
||
config)
|
||
run_config_tests
|
||
;;
|
||
providers)
|
||
run_provider_tests
|
||
;;
|
||
conv)
|
||
run_conversation_tests
|
||
;;
|
||
watch)
|
||
run_watch_mode
|
||
;;
|
||
*)
|
||
echo "Usage: $0 {all|coverage|verbose|config|providers|conv|watch}"
|
||
echo ""
|
||
echo "Options:"
|
||
echo " all - Run all tests (default)"
|
||
echo " coverage - Run tests with coverage report"
|
||
echo " verbose - Run tests with verbose output"
|
||
echo " config - Run config tests only"
|
||
echo " providers - Run provider tests only"
|
||
echo " conv - Run conversation tests only"
|
||
echo " watch - Watch mode (requires entr)"
|
||
exit 1
|
||
;;
|
||
esac
|