Files
skelly/run_tests.bat

116 lines
2.5 KiB
Batchfile

@echo off
setlocal enabledelayedexpansion
echo ================================
echo GDScript Test Runner
echo ================================
echo.
REM Check if Godot is available
godot --version >nul 2>&1
if !errorlevel! neq 0 (
echo ERROR: Godot is not installed or not in PATH
echo.
echo Installation instructions:
echo 1. Download Godot from https://godotengine.org/download
echo 2. Add Godot executable to your PATH environment variable
echo 3. Or place godot.exe in this project directory
echo 4. Restart your command prompt
echo 5. Run this script again
echo.
pause
exit /b 1
)
echo Scanning for test files in tests\ directory...
set total_tests=0
set failed_tests=0
echo.
echo Discovered test files:
call :discover_tests "tests" ""
call :discover_tests "tests\unit" "Unit: "
call :discover_tests "tests\integration" "Integration: "
echo.
echo Starting test execution...
echo.
call :run_tests "tests" ""
call :run_tests "tests\unit" "Unit: "
call :run_tests "tests\integration" "Integration: "
set /a passed_tests=total_tests-failed_tests
echo ================================
echo Test Execution Summary
echo ================================
echo Total Tests Run: !total_tests!
echo Tests Passed: !passed_tests!
echo Tests Failed: !failed_tests!
if !failed_tests! equ 0 (
echo ✅ ALL TESTS PASSED!
) else (
echo!failed_tests! TEST(S) FAILED
)
pause
goto :eof
:discover_tests
set "test_dir=%~1"
set "prefix=%~2"
if exist "%test_dir%\" (
for %%f in ("%test_dir%\test_*.gd") do (
call :format_test_name "%%~nf" test_name
echo %prefix%!test_name!: %%f
)
)
goto :eof
:run_tests
set "test_dir=%~1"
set "prefix=%~2"
if exist "%test_dir%\" (
for %%f in ("%test_dir%\test_*.gd") do (
call :format_test_name "%%~nf" test_name
call :run_single_test "%%f" "%prefix%!test_name!"
)
)
goto :eof
:format_test_name
set "filename=%~1"
set "result=%filename:test_=%"
set "%~2=%result:_= %"
goto :eof
:run_single_test
set "test_file=%~1"
set "test_name=%~2"
echo.
echo === %test_name% ===
echo Running: %test_file%
REM Run the test and capture the exit code
godot --headless --script "%test_file%" >temp_test_output.txt 2>&1
set test_exit_code=!errorlevel!
REM Display results based on exit code
if !test_exit_code! equ 0 (
echo PASSED: %test_name%
) else (
echo FAILED: %test_name%
set /a failed_tests+=1
)
set /a total_tests+=1
REM Clean up temporary file
if exist temp_test_output.txt del temp_test_output.txt
echo.
goto :eof