package lua import "testing" // hidden=true 的适配器:不被任何源引用时从 ListAdapters 消失;被引用时保持可见。 // 这个行为支撑"内部适配器默认隐藏"的约定(opencodezen 是第一个使用者)。 func TestAdapterHiddenFlag(t *testing.T) { vm := NewVM(freshAdapterDir(t)) if err := vm.Start(); err != nil { t.Fatalf("start: %v", err) } defer vm.Stop() const src = ` local adapter = {} adapter.name = "secretone" adapter.version = "1.0.0" adapter.endpoint = "/chat/completions" adapter.hidden = true function adapter.transform_request(raw) return raw end function adapter.transform_response(raw) return raw end return adapter ` if err := vm.LoadAdapterSource("secretone", src); err != nil { t.Fatal(err) } // 未被引用 → 隐藏 vm.SetHiddenRefs(nil) for _, a := range vm.ListAdapters() { if a.Name == "secretone" { t.Fatal("hidden adapter must not be listed when unreferenced") } } // 被引用 → 可见 vm.SetHiddenRefs([]string{"secretone"}) found := false for _, a := range vm.ListAdapters() { if a.Name == "secretone" { found = true } } if !found { t.Fatal("hidden adapter must stay listed while referenced by a source") } // transform 路径不受 hidden 影响:隐藏 ≠ 禁用 out, err := vm.Transform("secretone", "transform_response", `{"x":1}`) if err != nil || out == "" { t.Fatalf("hidden adapter must still transform: %v %q", err, out) } }