Files
Alicho/tests/scripts/run_regression_tests.bat
2025-10-28 10:27:49 +08:00

169 lines
6.1 KiB
Batchfile

@echo off
REM ================================================================================================
REM Audio Backend - 回归测试运行脚本 (Windows)
REM ================================================================================================
REM 描述: 运行关键测试案例以验证基本功能,适用于快速验证和持续集成环境
REM ================================================================================================
setlocal EnableDelayedExpansion
REM 设置颜色输出
set "GREEN=[92m"
set "RED=[91m"
set "YELLOW=[93m"
set "BLUE=[94m"
set "NC=[0m"
REM 脚本所在的目录路径
set "SCRIPT_DIR=%~dp0"
REM 项目根目录
for %%i in ("%SCRIPT_DIR%\..\..\..\") do set "ROOT_DIR=%%~fi"
REM 构建目录
set "BUILD_DIR=%ROOT_DIR%\build"
REM 测试结果目录
set "TEST_RESULTS_DIR=%ROOT_DIR%\test-results"
REM 回归测试结果目录
set "REGRESSION_TEST_RESULTS_DIR=%TEST_RESULTS_DIR%\regression"
REM 测试可执行文件目录
set "TEST_BIN_DIR=%BUILD_DIR%\bin\tests"
REM 打印脚本信息
echo %BLUE%=========================================================%NC%
echo %BLUE% 音频后端回归测试运行脚本 %NC%
echo %BLUE%=========================================================%NC%
echo %YELLOW%项目根目录: %ROOT_DIR%%NC%
echo %YELLOW%测试结果目录: %REGRESSION_TEST_RESULTS_DIR%%NC%
echo.
REM 确保测试结果目录存在
if not exist "%REGRESSION_TEST_RESULTS_DIR%" mkdir "%REGRESSION_TEST_RESULTS_DIR%"
REM 检查测试目录是否存在
if not exist "%TEST_BIN_DIR%" (
echo %RED%错误: 测试可执行文件目录不存在。请先构建项目。%NC%
exit /b 1
)
REM 回归测试配置 - 指定关键测试案例
REM 设置测试列表(格式: 类型:可执行文件:过滤器)
set REGRESSION_TESTS[0]=unit:engine/audio_buffer_test:*
set REGRESSION_TESTS[1]=unit:engine/audio_format_test:*
set REGRESSION_TESTS[2]=unit:communication/message_test:*
set REGRESSION_TESTS[3]=unit:communication/zmq_transport_test:BasicCommunication
set REGRESSION_TESTS[4]=unit:frontend/transport_layer_test:BasicConnection
set REGRESSION_TESTS[5]=unit:frontend/frontend_manager_test:BasicConnection
set REGRESSION_TESTS[6]=integration:engine_communication_test:BasicCommunication
set REGRESSION_TESTS[7]=integration:frontend_engine_test:BasicConnection
REM 计算测试数量
set "TEST_COUNT=8"
echo %BLUE%回归测试将运行 %TEST_COUNT% 个关键测试案例%NC%
echo.
REM 准备测试环境
echo %BLUE%准备回归测试环境...%NC%
call "%SCRIPT_DIR%\prepare_test_env.bat"
if %ERRORLEVEL% neq 0 (
echo %RED%准备测试环境失败%NC%
exit /b 1
)
echo %GREEN%回归测试环境准备完成%NC%
echo.
REM 运行回归测试
set "PASSED_TESTS=0"
set "FAILED_TESTS=0"
set "TOTAL_TESTS=0"
REM 创建回归测试报告
set "REPORT_FILE=%REGRESSION_TEST_RESULTS_DIR%\regression_results.txt"
echo 音频后端回归测试结果 (%DATE% %TIME%) > "%REPORT_FILE%"
echo ================================= >> "%REPORT_FILE%"
echo. >> "%REPORT_FILE%"
REM 循环执行测试
for /l %%i in (0,1,%TEST_COUNT%-1) do (
REM 解析测试规格
for /f "tokens=1-3 delims=:" %%a in ("!REGRESSION_TESTS[%%i]!") do (
set "test_type=%%a"
set "test_executable=%%b"
set "test_filter=%%c"
REM 确定测试路径
set "TEST_PATH="
if "!test_type!"=="unit" (
set "TEST_PATH=%TEST_BIN_DIR%\unit\!test_executable!.exe"
) else if "!test_type!"=="integration" (
set "TEST_PATH=%TEST_BIN_DIR%\integration\!test_executable!.exe"
) else (
echo %YELLOW%警告: 未知的测试类型 '!test_type!',跳过...%NC%
echo 跳过 - 测试不存在: !test_type!/!test_executable!:!test_filter! >> "%REPORT_FILE%"
goto :continue
)
if not exist "!TEST_PATH!" (
echo %YELLOW%警告: 测试可执行文件不存在: !TEST_PATH!,跳过...%NC%
echo 跳过 - 测试不存在: !test_type!/!test_executable!:!test_filter! >> "%REPORT_FILE%"
goto :continue
)
echo %BLUE%运行回归测试: !test_type!/!test_executable!:!test_filter!%NC%
REM 准备过滤器参数
set "FILTER_PARAM="
if not "!test_filter!"=="*" (
set "FILTER_PARAM=--gtest_filter=!test_filter!"
)
REM 运行测试
set "TEST_OUTPUT_NAME=!test_type!_!test_executable:.=_!_!test_filter:*=all!"
set "TEST_OUTPUT=%REGRESSION_TEST_RESULTS_DIR%\!TEST_OUTPUT_NAME!.txt"
"!TEST_PATH!" !FILTER_PARAM! > "!TEST_OUTPUT!" 2>&1
REM 检查测试结果
if !ERRORLEVEL! equ 0 (
echo %GREEN%通过: !test_type!/!test_executable!:!test_filter!%NC%
echo 通过 - !test_type!/!test_executable!:!test_filter! >> "%REPORT_FILE%"
set /a PASSED_TESTS+=1
) else (
echo %RED%失败: !test_type!/!test_executable!:!test_filter!%NC%
echo 失败 - !test_type!/!test_executable!:!test_filter! >> "%REPORT_FILE%"
set /a FAILED_TESTS+=1
)
set /a TOTAL_TESTS+=1
echo. >> "%REPORT_FILE%"
)
:continue
)
REM 生成结果统计
echo. >> "%REPORT_FILE%"
echo ================================= >> "%REPORT_FILE%"
echo 总计: %TOTAL_TESTS% 个测试 >> "%REPORT_FILE%"
echo 通过: %PASSED_TESTS% >> "%REPORT_FILE%"
echo 失败: %FAILED_TESTS% >> "%REPORT_FILE%"
echo 完成时间: %DATE% %TIME% >> "%REPORT_FILE%"
REM 打印结果汇总
echo %BLUE%=========================================================%NC%
echo %BLUE% 回归测试结果汇总 %NC%
echo %BLUE%=========================================================%NC%
echo 总测试数: %TOTAL_TESTS%
echo 通过: %GREEN%%PASSED_TESTS%%NC%
echo 失败: %RED%%FAILED_TESTS%%NC%
echo.
echo 详细报告已生成到: %YELLOW%%REPORT_FILE%%NC%
echo.
REM 返回测试结果
if %FAILED_TESTS% equ 0 (
echo %GREEN%所有回归测试通过!%NC%
exit /b 0
) else (
echo %RED%有回归测试失败!%NC%
exit /b 1
)