返回 DeepSeek-Reasonix
gateway_shared_service_test.go
根目录 / internal / bot / gateway_shared_service_test.go
1 package bot
2
3 import (
4 "context"
5 "io"
6 "log/slog"
7 "path/filepath"
8 "testing"
9
10 "reasonix/internal/session"
11 )
12
13 func TestEmbeddedBotUsesHostSessionServiceWithoutClosingIt(t *testing.T) {
14 root := filepath.Join(t.TempDir(), "sessions-v4")
15 host, err := session.NewService("local", session.NewFilesystemPersistence(root))
16 if err != nil {
17 t.Fatal(err)
18 }
19 t.Cleanup(func() { _ = host.Shutdown(context.Background()) })
20 gw := &BotGateway{
21 cfg: GatewayConfig{SessionServiceForRoot: func(got string) (*session.Service, error) {
22 if got != root {
23 t.Fatalf("store root = %q, want %q", got, root)
24 }
25 return host, nil
26 }},
27 logger: slog.New(slog.NewTextHandler(io.Discard, nil)),
28 }
29 service, err := gw.botSessionService(filepath.Join(filepath.Dir(root), "sessions"))
30 if err != nil || service != host {
31 t.Fatalf("bot service = %p, %v; want host %p", service, err, host)
32 }
33 gw.closeSessionServices()
34 if _, err := host.Create(t.Context(), session.CreateOptions{SessionID: "still-open", CWD: t.TempDir(), Origin: session.SessionOriginNew}); err != nil {
35 t.Fatalf("gateway closed host-owned service: %v", err)
36 }
37 }
38
38 lines GO