From cb8655746637ac07dcf63af9ed4e292c0a75d8f6 Mon Sep 17 00:00:00 2001 From: HomeDash Bot Date: Sat, 12 Sep 2026 09:20:35 +0800 Subject: [PATCH] =?UTF-8?q?test(gateway):=20root=20=E5=8E=BB=E9=87=8D?= =?UTF-8?q?=E6=96=AD=E8=A8=80=E6=94=B9=E4=B8=BA=E6=8C=89=20server=20?= =?UTF-8?q?=E6=AE=B5=E8=AE=A1=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 上一版断言用全局计数,而默认段与门户段各有一个 root(合法),因此必然失败; 真正要防的是同一段内重复。改为取门户段后再计数。 --- admin-server/gateway_test.go | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/admin-server/gateway_test.go b/admin-server/gateway_test.go index e41e5b6..612a746 100644 --- a/admin-server/gateway_test.go +++ b/admin-server/gateway_test.go @@ -374,13 +374,18 @@ func TestPortalKindUsesRenderer(t *testing.T) { } } -// nginx 不允许同一 server 段内重复的 root 指令(实测报 emerg)。 +// nginx 不允许**同一个 server 段**内出现重复的 root 指令(实测 emerg)。 +// 注意:不同 server 段各有一个 root 是正常的,所以必须按段计数。 func TestPortalKindNoDuplicateRoot(t *testing.T) { out, err := RenderGatewayConf(&GatewayConfig{ListenPort: 8081, Routes: []Route{{Host: "p.com", Kind: "portal"}}}) if err != nil { t.Fatalf("渲染失败: %v", err) } - if strings.Count(out, "root /app/portal;") != 1 { - t.Fatalf("root 指令重复(应恰好 1 次):\n%s", out) + block := section(out, "server_name p.com;") + if block == "" { + t.Fatalf("未找到门户段:\n%s", out) + } + if n := strings.Count(block, "root "); n != 1 { + t.Fatalf("门户段内 root 指令应恰好 1 次,实际 %d 次:\n%s", n, block) } }