#!/bin/bash # Run all Rhai tests # This script runs all the Rhai tests in the rhai_tests directory # Set the base directory BASE_DIR="src/rhai_tests" # Define colors for output GREEN='\033[0;32m' RED='\033[0;31m' YELLOW='\033[0;33m' NC='\033[0m' # No Color # Initialize counters TOTAL_MODULES=0 PASSED_MODULES=0 FAILED_MODULES=0 # Function to run tests in a directory run_tests_in_dir() { local dir=$1 local module_name=$(basename $dir) echo -e "${YELLOW}Running tests for module: ${module_name}${NC}" # Check if the directory has a run_all_tests.rhai script if [ -f "${dir}/run_all_tests.rhai" ]; then echo "Using module's run_all_tests.rhai script" herodo --path "${dir}/run_all_tests.rhai" if [ $? -eq 0 ]; then echo -e "${GREEN}✓ All tests passed for module: ${module_name}${NC}" PASSED_MODULES=$((PASSED_MODULES + 1)) else echo -e "${RED}✗ Tests failed for module: ${module_name}${NC}" FAILED_MODULES=$((FAILED_MODULES + 1)) fi else # Run all .rhai files in the directory local test_files=$(find "${dir}" -name "*.rhai" | sort) local all_passed=true for test_file in $test_files; do echo "Running test: $(basename $test_file)" herodo --path "$test_file" if [ $? -ne 0 ]; then all_passed=false fi done if $all_passed; then echo -e "${GREEN}✓ All tests passed for module: ${module_name}${NC}" PASSED_MODULES=$((PASSED_MODULES + 1)) else echo -e "${RED}✗ Tests failed for module: ${module_name}${NC}" FAILED_MODULES=$((FAILED_MODULES + 1)) fi fi TOTAL_MODULES=$((TOTAL_MODULES + 1)) echo "" } # Main function main() { echo "======================================= Running Rhai Tests =======================================" # Find all module directories for dir in $(find "${BASE_DIR}" -mindepth 1 -maxdepth 1 -type d | sort); do run_tests_in_dir "$dir" done # Print summary echo "======================================= Test Summary =======================================" echo "Total modules tested: ${TOTAL_MODULES}" echo "Passed: ${PASSED_MODULES}" echo "Failed: ${FAILED_MODULES}" if [ $FAILED_MODULES -gt 0 ]; then echo -e "${RED}Some tests failed!${NC}" exit 1 else echo -e "${GREEN}All tests passed!${NC}" exit 0 fi } # Run the main function main