mirror of
https://github.com/Ed1s0nZ/CyberStrikeAI.git
synced 2026-06-11 00:27:53 +02:00
58 lines
1.5 KiB
Go
58 lines
1.5 KiB
Go
package database
|
|
|
|
import (
|
|
"os"
|
|
"path/filepath"
|
|
"testing"
|
|
|
|
"go.uber.org/zap"
|
|
)
|
|
|
|
func TestDeleteConversationRemovesEinoScopedDirs(t *testing.T) {
|
|
tmp := t.TempDir()
|
|
dbPath := filepath.Join(tmp, "conversations.db")
|
|
db, err := NewDB(dbPath, zap.NewNop())
|
|
if err != nil {
|
|
t.Fatalf("NewDB: %v", err)
|
|
}
|
|
defer db.Close()
|
|
|
|
plantaskBase := filepath.Join(tmp, "skills", ".eino", "plantask")
|
|
checkpointBase := filepath.Join(tmp, "eino-checkpoints")
|
|
db.SetEinoConversationDirs(plantaskBase, checkpointBase)
|
|
|
|
conv, err := db.CreateConversation("cleanup test", ConversationCreateMeta{})
|
|
if err != nil {
|
|
t.Fatalf("CreateConversation: %v", err)
|
|
}
|
|
convID := conv.ID
|
|
seg := sanitizeConversationPathSegment(convID)
|
|
for _, base := range []struct {
|
|
root string
|
|
file string
|
|
}{
|
|
{db.conversationArtifactsDir, "transcript.txt"},
|
|
{plantaskBase, "task-1.json"},
|
|
{checkpointBase, "runner-deep.ckpt"},
|
|
} {
|
|
dir := filepath.Join(base.root, seg)
|
|
if err := os.MkdirAll(dir, 0o755); err != nil {
|
|
t.Fatalf("mkdir %s: %v", dir, err)
|
|
}
|
|
if err := os.WriteFile(filepath.Join(dir, base.file), []byte("x"), 0o644); err != nil {
|
|
t.Fatalf("write %s: %v", base.file, err)
|
|
}
|
|
}
|
|
|
|
if err := db.DeleteConversation(convID); err != nil {
|
|
t.Fatalf("DeleteConversation: %v", err)
|
|
}
|
|
|
|
for _, base := range []string{db.conversationArtifactsDir, plantaskBase, checkpointBase} {
|
|
dir := filepath.Join(base, seg)
|
|
if _, statErr := os.Stat(dir); !os.IsNotExist(statErr) {
|
|
t.Fatalf("expected removed dir %s, stat err=%v", dir, statErr)
|
|
}
|
|
}
|
|
}
|