修复:补充 Makefile 缺失的单元测试规则,清理误跟踪的编译产物

- 新增 test_http3 编译规则(Makefile 中缺少,导致单元测试编译失败)
- 修正 test_sse 编译规则位置(从 #HTTP/3 注释下分离)
- 清理误跟踪的 tests/unit/test_sse 编译二进制(git rm --cached)
- 简化 .gitignore:将逐个列出的测试二进制文件替换为 tests/unit/test_* 通配模式
- 合并 SSE 集成测试的 curl || true 修复(防止 set -e 下超时退出)

编译零警告,451 单元测试 + 115 集成测试全部通过 ✓
This commit is contained in:
xfy911 2026-06-12 15:43:39 +08:00
parent fb35fef0db
commit 9258d67c08
4 changed files with 9 additions and 17 deletions

14
.gitignore vendored
View File

@ -3,19 +3,7 @@
cocoon
# 忽略测试二进制文件和上传目录
tests/unit/test_config
tests/unit/test_http
tests/unit/test_log
tests/unit/test_multipart
tests/unit/test_static
tests/unit/test_server
tests/unit/test_websocket
tests/unit/test_healthcheck
tests/unit/test_proxy
tests/unit/test_grpc
tests/unit/test_http3
tests/unit/test_load_balance
tests/unit/test_middleware_ext
tests/unit/test_*
tests/fixtures/uploads/
plugins/*.so
www/uploads/

View File

@ -131,6 +131,10 @@ $(UNIT_TEST_DIR)/test_load_balance: $(UNIT_TEST_DIR)/test_load_balance.c load_ba
$(CC) $(CFLAGS) -I. -I$(UNIT_TEST_DIR)/../unity -o $@ $(UNIT_TEST_DIR)/test_load_balance.c load_balance.c proxy.c proxy_tls.c http.c log.c platform.c $(UNITY_SRC) $(LDFLAGS)
# HTTP/3 测试
$(UNIT_TEST_DIR)/test_http3: $(UNIT_TEST_DIR)/test_http3.c http3.c http.c log.c platform.c $(UNITY_SRC)
$(CC) $(CFLAGS) -I. -I$(UNIT_TEST_DIR)/../unity -o $@ $(UNIT_TEST_DIR)/test_http3.c http3.c http.c log.c platform.c $(UNITY_SRC) $(LDFLAGS)
# SSE 测试
$(UNIT_TEST_DIR)/test_sse: $(UNIT_TEST_DIR)/test_sse.c sse.c log.c $(UNITY_SRC)
$(CC) $(CFLAGS) -I. -I$(UNIT_TEST_DIR)/../unity -o $@ $(UNIT_TEST_DIR)/test_sse.c sse.c log.c $(UNITY_SRC) $(LDFLAGS)

View File

@ -1358,7 +1358,7 @@ echo ""
echo "=== SSE 测试 ==="
# 测试 SSE 端点基本响应
sse_status=$(curl -s -o /dev/null -w "%{http_code}" --max-time 2 "$BASE/_sse")
sse_status=$(curl -s -o /dev/null -w "%{http_code}" --max-time 2 "$BASE/_sse" || true)
if [[ "$sse_status" == "200" ]]; then
echo " ✓ /_sse 状态码 — HTTP 200"
pass
@ -1368,7 +1368,7 @@ else
fi
# 测试 SSE 内容类型
sse_ct=$(curl -s -o /dev/null -w "%{content_type}" --max-time 2 "$BASE/_sse")
sse_ct=$(curl -s -o /dev/null -w "%{content_type}" --max-time 2 "$BASE/_sse" || true)
if echo "$sse_ct" | grep -q "text/event-stream"; then
echo " ✓ /_sse Content-Type — text/event-stream"
pass
@ -1378,7 +1378,7 @@ else
fi
# 测试 SSE 事件流格式(读取前几行验证)
sse_body=$(curl -s --max-time 3 "$BASE/_sse" | head -20)
sse_body=$(curl -s --max-time 3 "$BASE/_sse" | head -20 || true)
if echo "$sse_body" | grep -q "event: connected"; then
echo " ✓ /_sse 事件流 — 包含 connected 事件"
pass
@ -1404,7 +1404,7 @@ else
fi
# 测试 SSE 不接受 POST应该返回 405 或不被 SSE 处理)
sse_post_status=$(curl -s -o /dev/null -w "%{http_code}" --max-time 1 -X POST "$BASE/_sse")
sse_post_status=$(curl -s -o /dev/null -w "%{http_code}" --max-time 1 -X POST "$BASE/_sse" || true)
if [[ "$sse_post_status" == "405" ]]; then
echo " ✓ /_sse POST 请求 — HTTP 405 Method Not Allowed"
pass

Binary file not shown.