#!/bin/bash # Batch 2 测试运行脚本 echo "======================================" echo "GoMog Batch 2 单元测试" echo "======================================" echo "" # 设置颜色 RED='\033[0;31m' GREEN='\033[0;32m' YELLOW='\033[1;33m' NC='\033[0m' # No Color # 计数器 TOTAL_TESTS=0 PASSED_TESTS=0 FAILED_TESTS=0 # 测试函数 run_test() { local test_name=$1 local test_path=$2 echo -e "${YELLOW}运行测试:${test_name}${NC}" # 检查 Go 是否安装 if ! command -v go &> /dev/null; then echo -e "${RED}错误:Go 未安装,跳过测试${NC}" return 2 fi cd /home/kingecg/code/gomog # 运行测试 output=$(go test -v ${test_path} -run "${test_name}" 2>&1) exit_code=$? TOTAL_TESTS=$((TOTAL_TESTS + 1)) if [ $exit_code -eq 0 ]; then echo -e "${GREEN}✓ 通过${NC}" PASSED_TESTS=$((PASSED_TESTS + 1)) else echo -e "${RED}✗ 失败${NC}" echo "$output" | tail -20 FAILED_TESTS=$((FAILED_TESTS + 1)) fi echo "" } # 运行所有 Batch 2 相关测试 echo "1. 测试 \$expr 操作符..." run_test "TestExpr" "./internal/engine/... -run TestExpr" echo "2. 测试 \$jsonSchema 验证..." run_test "TestJSONSchema" "./internal/engine/... -run TestJSONSchema" echo "3. 测试投影操作符..." run_test "TestProjection" "./internal/engine/... -run TestProjection" echo "4. 测试 \$switch 条件表达式..." run_test "TestSwitch" "./internal/engine/... -run TestSwitch" echo "5. 测试 \$setOnInsert 更新..." run_test "TestApplyUpdateSetOnInsert" "./internal/engine/... -run TestApplyUpdateSetOnInsert" echo "6. 测试数组位置操作符..." run_test "TestArrayPositional" "./internal/engine/... -run TestArrayPositional" echo "7. 测试 MemoryStore upsert..." run_test "TestMemoryStoreUpdateWithUpsert" "./internal/engine/... -run TestMemoryStoreUpdateWithUpsert" echo "8. 测试 MemoryStore arrayFilters..." run_test "TestMemoryStoreUpdateWithArrayFilters" "./internal/engine/... -run TestMemoryStoreUpdateWithArrayFilters" echo "9. 测试 HTTP API upsert..." run_test "TestHTTPUpdateWithUpsert" "./internal/protocol/http/... -run TestHTTPUpdateWithUpsert" echo "10. 测试 HTTP API 投影..." run_test "TestHTTPFindWithProjection" "./internal/protocol/http/... -run TestHTTPFindWithProjection" echo "11. 测试聚合管道集成..." run_test "TestAggregationPipelineIntegration" "./internal/engine/... -run TestAggregationPipelineIntegration" echo "12. 测试复杂查询组合..." run_test "TestQueryWithExprAndJsonSchema" "./internal/engine/... -run TestQueryWithExprAndJsonSchema" # 汇总结果 echo "======================================" echo "测试结果汇总" echo "======================================" echo -e "总测试数:${TOTAL_TESTS}" echo -e "${GREEN}通过:${PASSED_TESTS}${NC}" echo -e "${RED}失败:${FAILED_TESTS}${NC}" if [ $FAILED_TESTS -eq 0 ]; then echo -e "${GREEN}所有测试通过!${NC}" exit 0 else echo -e "${RED}部分测试失败,请检查输出${NC}" exit 1 fi