116 lines
2.5 KiB
Batchfile
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 |