add unit tests
saveload fixes
This commit is contained in:
122
run_tests.sh
Normal file
122
run_tests.sh
Normal file
@@ -0,0 +1,122 @@
|
||||
#!/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
|
||||
Reference in New Issue
Block a user