返回 DeepSeek-Reasonix
subagent_cleanup_test.go
根目录 / internal / agent / subagent_cleanup_test.go
1 package agent
2
3 import (
4 "encoding/json"
5 "os"
6 "path/filepath"
7 "testing"
8
9 "reasonix/internal/store"
10 )
11
12 func TestDeleteSubagentsByParentSweepsEventLogLeftovers(t *testing.T) {
13 sessionDir := t.TempDir()
14 subDir := filepath.Join(sessionDir, "subagents")
15 if err := os.MkdirAll(subDir, 0o755); err != nil {
16 t.Fatal(err)
17 }
18 ref := "sa_cleanup_test"
19 sessionPath := filepath.Join(subDir, ref+".jsonl")
20 meta := SubagentMeta{Ref: ref, ParentSession: "parent-1", Status: SubagentCompleted}
21 metaBytes, err := json.Marshal(meta)
22 if err != nil {
23 t.Fatal(err)
24 }
25 files := []string{
26 sessionPath,
27 filepath.Join(subDir, ref+".meta.json"),
28 // Leftovers from builds where sub-agent saves bootstrapped event logs.
29 store.SessionEventLog(sessionPath),
30 store.SessionEventIndex(sessionPath),
31 }
32 for _, p := range files {
33 content := []byte("{}\n")
34 if filepath.Base(p) == ref+".meta.json" {
35 content = metaBytes
36 }
37 if err := os.WriteFile(p, content, 0o644); err != nil {
38 t.Fatalf("write %s: %v", p, err)
39 }
40 }
41
42 if err := DeleteSubagentsByParent(sessionDir, "parent-1"); err != nil {
43 t.Fatalf("DeleteSubagentsByParent: %v", err)
44 }
45 for _, p := range files {
46 if _, err := os.Stat(p); !os.IsNotExist(err) {
47 t.Errorf("subagent artifact survived delete: %s (err=%v)", p, err)
48 }
49 }
50 }
51
52 func TestSubagentForceSaveStaysSingleFile(t *testing.T) {
53 sessionDir := t.TempDir()
54 subDir := filepath.Join(sessionDir, "subagents")
55 if err := os.MkdirAll(subDir, 0o755); err != nil {
56 t.Fatal(err)
57 }
58 path := filepath.Join(subDir, "sa_force.jsonl")
59 s := NewSession("sub")
60 if err := s.Save(path); err != nil {
61 t.Fatalf("Save: %v", err)
62 }
63 if err := s.Save(path); err != nil {
64 t.Fatalf("second Save: %v", err)
65 }
66 if _, err := os.Stat(store.SessionEventLog(path)); !os.IsNotExist(err) {
67 t.Fatalf("repeated force saves created an event log (err=%v)", err)
68 }
69 }
70
70 lines GO