#!/bin/bash
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
RAVA="$SCRIPT_DIR/../rava"
TESTS_DIR="$SCRIPT_DIR/tests"
EXAMPLES_DIR="$SCRIPT_DIR/examples"
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
NC='\033[0m'
passed=0
failed=0
run_test() {
local file="$1"
local name=$(basename "$file" .txt)
echo -n " $name ... "
if timeout 30 "$RAVA" < "$file" > /tmp/repl_test_output.txt 2>&1; then
echo -e "${GREEN}ok${NC}"
((passed++))
else
echo -e "${RED}FAIL${NC}"
echo " Output:"
head -20 /tmp/repl_test_output.txt | sed 's/^/ /'
((failed++))
fi
}
echo "========================================"
echo "REPL Test Suite"
echo "========================================"
echo ""
echo "Running tests..."
for test_file in "$TESTS_DIR"/*.txt; do
if [ -f "$test_file" ]; then
run_test "$test_file"
fi
done
echo ""
echo "Running examples..."
for example_file in "$EXAMPLES_DIR"/*.txt; do
if [ -f "$example_file" ]; then
run_test "$example_file"
fi
done
echo ""
echo "========================================"
echo "Results: $passed passed, $failed failed"
echo "========================================"
if [ $failed -gt 0 ]; then
exit 1
fi
exit 0