返回 DeepSeek-Reasonix
topic_legacy_recovery_test.go
根目录 / desktop / topic_legacy_recovery_test.go
1 package main
2
3 import (
4 "os"
5 "path/filepath"
6 "testing"
7 "time"
8
9 "reasonix/internal/agent"
10 "reasonix/internal/config"
11 )
12
13 func TestLegacyRecoveryMigrationWaitsForParentRemoval(t *testing.T) {
14 isolateDesktopUserDirs(t)
15 dir := config.SessionDir()
16 if err := os.MkdirAll(dir, 0o755); err != nil {
17 t.Fatal(err)
18 }
19 parent := writeLegacySession(t, dir, "normal.jsonl", "parent prompt", time.Now().Add(-2*time.Hour))
20 recovery := writeLegacySession(t, dir, "normal-recovery-0123456789abcdef.jsonl", "recovery prompt", time.Now().Add(-time.Hour))
21
22 migrated, paths := forceMigrateLegacySessionsIntoGlobalTopicsWithPaths(dir)
23 if len(migrated) != 1 || migrated[0] != legacySessionTopicID(parent) || len(paths) != 1 || !sameDesktopPath(paths[0], parent) {
24 t.Fatalf("migration with parent present = topics:%v paths:%v", migrated, paths)
25 }
26 if _, ok, err := agent.LoadBranchMeta(recovery); err != nil || ok {
27 t.Fatalf("recovery meta with parent present: ok=%v err=%v", ok, err)
28 }
29
30 if err := os.Remove(parent); err != nil {
31 t.Fatal(err)
32 }
33 migrated, paths = forceMigrateLegacySessionsIntoGlobalTopicsWithPaths(dir)
34 if len(migrated) != 1 || migrated[0] != legacySessionTopicID(recovery) || len(paths) != 1 || !sameDesktopPath(paths[0], recovery) {
35 t.Fatalf("migration after parent removal = topics:%v paths:%v", migrated, paths)
36 }
37 if meta, ok, err := agent.LoadBranchMeta(recovery); err != nil || !ok || meta.TopicID != legacySessionTopicID(recovery) {
38 t.Fatalf("recovery meta after parent removal: meta=%+v ok=%v err=%v", meta, ok, err)
39 }
40 if got := filepath.Base(recovery); got != "normal-recovery-0123456789abcdef.jsonl" {
41 t.Fatalf("recovery transcript moved: %q", got)
42 }
43 }
44
44 lines GO