122 lines
3.3 KiB
Bash
122 lines
3.3 KiB
Bash
#!/usr/bin/env bash
|
|
|
|
echo "Automated Test Suite Runner"
|
|
echo "==========================="
|
|
echo ""
|
|
echo "Scanning for test files in tests/ directory..."
|
|
|
|
# Function to run a single test file
|
|
run_test() {
|
|
local test_file="$1"
|
|
local test_name="$2"
|
|
|
|
echo ""
|
|
echo "=== $test_name ==="
|
|
echo "Running: $test_file"
|
|
|
|
if godot --headless --script "$test_file"; then
|
|
echo "✅ PASSED: $test_name"
|
|
else
|
|
echo "❌ FAILED: $test_name"
|
|
((failed_tests++))
|
|
fi
|
|
|
|
((total_tests++))
|
|
echo ""
|
|
}
|
|
|
|
# Initialize counters
|
|
total_tests=0
|
|
failed_tests=0
|
|
start_time=$(date +%s)
|
|
|
|
# Find and run all test files
|
|
echo "Discovered test files:"
|
|
|
|
# Core test files in tests/ directory
|
|
for test_file in tests/test_*.gd; do
|
|
if [ -f "$test_file" ]; then
|
|
# Extract descriptive name from filename
|
|
filename=$(basename "$test_file" .gd)
|
|
test_name=$(echo "$filename" | sed 's/test_//' | sed 's/_/ /g' | sed 's/\b\w/\U&/g')
|
|
|
|
echo " 📄 $test_file -> $test_name"
|
|
fi
|
|
done
|
|
|
|
# Additional test directories
|
|
if [ -d "tests/unit" ]; then
|
|
for test_file in tests/unit/test_*.gd; do
|
|
if [ -f "$test_file" ]; then
|
|
filename=$(basename "$test_file" .gd)
|
|
test_name="Unit: $(echo "$filename" | sed 's/test_//' | sed 's/_/ /g' | sed 's/\b\w/\U&/g')"
|
|
echo " 📄 $test_file -> $test_name"
|
|
fi
|
|
done
|
|
fi
|
|
|
|
if [ -d "tests/integration" ]; then
|
|
for test_file in tests/integration/test_*.gd; do
|
|
if [ -f "$test_file" ]; then
|
|
filename=$(basename "$test_file" .gd)
|
|
test_name="Integration: $(echo "$filename" | sed 's/test_//' | sed 's/_/ /g' | sed 's/\b\w/\U&/g')"
|
|
echo " 📄 $test_file -> $test_name"
|
|
fi
|
|
done
|
|
fi
|
|
|
|
echo ""
|
|
echo "Starting test execution..."
|
|
echo ""
|
|
|
|
# Run core tests
|
|
for test_file in tests/test_*.gd; do
|
|
if [ -f "$test_file" ]; then
|
|
filename=$(basename "$test_file" .gd)
|
|
test_name=$(echo "$filename" | sed 's/test_//' | sed 's/_/ /g' | sed 's/\b\w/\U&/g')
|
|
run_test "$test_file" "$test_name"
|
|
fi
|
|
done
|
|
|
|
# Run unit tests
|
|
if [ -d "tests/unit" ]; then
|
|
for test_file in tests/unit/test_*.gd; do
|
|
if [ -f "$test_file" ]; then
|
|
filename=$(basename "$test_file" .gd)
|
|
test_name="Unit: $(echo "$filename" | sed 's/test_//' | sed 's/_/ /g' | sed 's/\b\w/\U&/g')"
|
|
run_test "$test_file" "$test_name"
|
|
fi
|
|
done
|
|
fi
|
|
|
|
# Run integration tests
|
|
if [ -d "tests/integration" ]; then
|
|
for test_file in tests/integration/test_*.gd; do
|
|
if [ -f "$test_file" ]; then
|
|
filename=$(basename "$test_file" .gd)
|
|
test_name="Integration: $(echo "$filename" | sed 's/test_//' | sed 's/_/ /g' | sed 's/\b\w/\U&/g')"
|
|
run_test "$test_file" "$test_name"
|
|
fi
|
|
done
|
|
fi
|
|
|
|
# Calculate execution time
|
|
end_time=$(date +%s)
|
|
execution_time=$((end_time - start_time))
|
|
|
|
# Print summary
|
|
echo "================================"
|
|
echo "📊 Test Execution Summary"
|
|
echo "================================"
|
|
echo "Total Tests Run: $total_tests"
|
|
echo "Tests Passed: $((total_tests - failed_tests))"
|
|
echo "Tests Failed: $failed_tests"
|
|
echo "Execution Time: ${execution_time}s"
|
|
|
|
if [ $failed_tests -eq 0 ]; then
|
|
echo "✅ ALL TESTS PASSED!"
|
|
exit 0
|
|
else
|
|
echo "❌ $failed_tests TEST(S) FAILED"
|
|
exit 1
|
|
fi |