返回 DeepSeek-Reasonix
pinned_trash_lifecycle_test.go
根目录 / desktop / pinned_trash_lifecycle_test.go
1 package main
2
3 import (
4 "os"
5 "path/filepath"
6 "testing"
7
8 "reasonix/internal/store"
9 )
10
11 func TestPinnedContextSidecarMovesThroughTrashAndRestore(t *testing.T) {
12 dir := t.TempDir()
13 sessionPath := filepath.Join(dir, "session.jsonl")
14 if err := os.WriteFile(sessionPath, []byte(`{"role":"user","content":"hello"}`+"\n"), 0o600); err != nil {
15 t.Fatal(err)
16 }
17 if err := savePinnedContextState(sessionPath, []string{"README.md"}); err != nil {
18 t.Fatal(err)
19 }
20 pinnedPath := store.SessionPinnedContext(sessionPath)
21 if err := deleteSessionFile(dir, sessionPath); err != nil {
22 t.Fatal(err)
23 }
24 if _, err := os.Stat(pinnedPath); !os.IsNotExist(err) {
25 t.Fatalf("live pinned sidecar survived trash: %v", err)
26 }
27 trashPath := filepath.Join(dir, sessionTrashDir, "session.jsonl", "session.jsonl")
28 trashPinned := filepath.Join(filepath.Dir(trashPath), "session.pinned-context.json")
29 if _, err := os.Stat(trashPinned); err != nil {
30 t.Fatalf("pinned sidecar missing from trash: %v", err)
31 }
32 if err := restoreTrashedSessionFile(dir, trashPath); err != nil {
33 t.Fatal(err)
34 }
35 state, err := loadPinnedContextState(sessionPath)
36 if err != nil || len(state.Files) != 1 || state.Files[0] != "README.md" {
37 t.Fatalf("restored pinned state = %+v, err=%v", state, err)
38 }
39 if _, err := os.Stat(trashPinned); !os.IsNotExist(err) {
40 t.Fatalf("trash pinned sidecar survived restore: %v", err)
41 }
42 }
43
44 func TestRemoveDesktopSessionArtifactsRemovesPinnedContext(t *testing.T) {
45 sessionPath := filepath.Join(t.TempDir(), "session.jsonl")
46 if err := os.WriteFile(sessionPath, nil, 0o600); err != nil {
47 t.Fatal(err)
48 }
49 if err := savePinnedContextState(sessionPath, []string{"README.md"}); err != nil {
50 t.Fatal(err)
51 }
52 if err := removeDesktopSessionArtifacts(sessionPath); err != nil {
53 t.Fatal(err)
54 }
55 if _, err := os.Stat(store.SessionPinnedContext(sessionPath)); !os.IsNotExist(err) {
56 t.Fatalf("pinned sidecar survived permanent removal: %v", err)
57 }
58 }
59
59 lines GO