From ecffb8a7de256324f446b33698a4aa652338355b Mon Sep 17 00:00:00 2001 From: JianFeeeee Date: Sun, 18 Oct 2026 18:30:04 +0800 Subject: [PATCH] =?UTF-8?q?test(plugin):=20InjectOptions=20=E5=90=AB=20map?= =?UTF-8?q?=20=E5=90=8E=E4=B8=8D=E5=8F=AF=E6=AF=94=E8=BE=83=EF=BC=8C?= =?UTF-8?q?=E6=94=B9=E9=80=90=E5=AD=97=E6=AE=B5=E9=AA=8C=E9=9B=B6=E5=80=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Payload 字段(map[string]interface{})加进 InjectOptions 后, 结构体不再可比 ⇒ `z != sdk.InjectOptions{}` 直接编译失败 (invalid operation: struct containing map cannot be compared)。 --- internal/plugin/lua_surface_test.go | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/internal/plugin/lua_surface_test.go b/internal/plugin/lua_surface_test.go index 69a3283b..8544a649 100644 --- a/internal/plugin/lua_surface_test.go +++ b/internal/plugin/lua_surface_test.go @@ -107,7 +107,14 @@ func TestLuaParseInjectOptions(t *testing.T) { } // 缺省/非表 = 零值(记入记忆 + 不裁剪),与旧三参数注入等价。 - if z := parseInjectOptions(L, 99); z != (sdk.InjectOptions{}) { + // + // ★ 不能用 `z != sdk.InjectOptions{}` 比较:InjectOptions 现在含 + // `Payload map[string]interface{}`(插件业务字段扩展口),结构体含 map + // 就**不可比较**,编译直接报 invalid operation。 + // 逐字段验证,顺便把「哪些字段应为空」写清楚。 + if z := parseInjectOptions(L, 99); z.NoMemory || z.ContextPolicy != "" || + z.RecallPolicy != "" || z.ScenePolicy != "" || z.CleanerName != "" || + z.Priority != "" || len(z.Payload) != 0 { t.Errorf("missing opts should be zero value, got %#v", z) } }