返回 DeepSeek-Reasonix
tagged_formal_session_test.go
根目录 / desktop / tagged_formal_session_test.go
1 package main
2
3 import (
4 "encoding/json"
5 "path/filepath"
6 "testing"
7
8 "reasonix/internal/provider"
9 "reasonix/internal/session"
10 )
11
12 func TestTaggedFormalSessionsKeepHeaderAndProviderHistory(t *testing.T) {
13 for _, version := range []string{"1.38.9", "1.38.10", "1.38.11"} {
14 t.Run(version, func(t *testing.T) {
15 fixture := taggedHistoryFixture(t, version)
16 root := filepath.Join(t.TempDir(), "by-id")
17 copyTaggedDirectory(t, filepath.Join(fixture, "formal"), root)
18 var want []provider.Message
19 readTaggedJSON(t, filepath.Join(fixture, "canonical-expected.json"), &want)
20 ref := session.SessionRef{HostID: "desktop", SessionID: "formal-session"}
21 for restart := range 2 {
22 service, err := session.NewService("desktop", session.NewFilesystemPersistence(root))
23 if err != nil {
24 t.Fatal(err)
25 }
26 t.Cleanup(func() { _ = service.Shutdown(t.Context()) })
27 info, err := service.Query().Stat(t.Context(), ref)
28 if err != nil || info.CWD != "/synthetic/workspace" || info.SessionID != ref.SessionID {
29 t.Fatalf("formal header changed: %+v %v", info, err)
30 }
31 snapshot, err := service.Query().Snapshot(t.Context(), ref)
32 if err != nil {
33 t.Fatal(err)
34 }
35 assertTaggedMessages(t, snapshot.Projection.Messages, want)
36 if restart == 0 {
37 binding, err := service.Open(t.Context(), ref)
38 if err != nil {
39 t.Fatal(err)
40 }
41 message := provider.Message{ID: "after-upgrade", Role: provider.RoleUser, Content: "New input after direct formal upgrade"}
42 payload, err := json.Marshal(map[string]any{"message": message})
43 if err != nil {
44 t.Fatal(err)
45 }
46 _, err = binding.Runtime().Session().AppendBatch(t.Context(), "after-upgrade", []session.Event{{Kind: "message/complete", Payload: payload}})
47 if err != nil {
48 t.Fatal(err)
49 }
50 if err := binding.Release(t.Context()); err != nil {
51 t.Fatal(err)
52 }
53 want = append(want, message)
54 }
55 if err := service.Shutdown(t.Context()); err != nil {
56 t.Fatal(err)
57 }
58 }
59 })
60 }
61 }
62
62 lines GO