Files
AutoZero/session/jobmark_test.go
T
Sakurasan d5dac5a6fc feat: AutoZero 通用 Agent 框架(从 AutoGo 五阶段拆分完成)
llm(三协议 Provider)/ session(JSONL 持久化)/ tools(Registry、围栏、
builtin、computer)/ cdp(browser)/ skills / mcp / agent(循环、两级压缩、
编排、审批门控)+ 底座 jsonl/textx/execx/diag/scratch/spill/imagecache。

产品装配代码(config 桥接、schedule 工具、memory/plan/retro/prompt)
留在 AutoGo,宿主接入方式见 MIGRATION.md。
2026-10-26 00:54:46 +08:00

53 lines
1.4 KiB
Go

package session
import (
"os"
"path/filepath"
"testing"
"time"
)
// TestJobMarkerRoundtrip:任务会话标记的写入与读取。
func TestJobMarkerRoundtrip(t *testing.T) {
t.Setenv("HOME", t.TempDir())
at := time.Date(2026, 9, 30, 9, 0, 0, 0, time.Local)
if err := SaveJobMarkerAt("sess-1", "cron-喝水提醒", "喝水提醒", at); err != nil {
t.Fatal(err)
}
m, ok := LoadJobMarker("sess-1")
if !ok {
t.Fatal("标记写入后读不到")
}
if m.JobID != "cron-喝水提醒" || m.JobName != "喝水提醒" || !m.At.Equal(at) {
t.Fatalf("标记内容不符: %+v", m)
}
if _, err := os.Stat(filepath.Join(Dir(), "sess-1.job.json")); err != nil {
t.Fatalf("sidecar 文件不存在: %v", err)
}
// 未标记的会话读不到;Remove 后同样读不到。
if _, ok := LoadJobMarker("sess-other"); ok {
t.Fatal("未标记会话不该有标记")
}
if err := RemoveJobMarker("sess-1"); err != nil {
t.Fatal(err)
}
if _, ok := LoadJobMarker("sess-1"); ok {
t.Fatal("Remove 后仍能读到标记")
}
// Remove 幂等(不存在不报错)。
if err := RemoveJobMarker("sess-1"); err != nil {
t.Fatalf("重复 Remove 报错: %v", err)
}
// 空参数不写文件。
if err := SaveJobMarker("", "j", "n"); err != nil {
t.Fatal(err)
}
if err := SaveJobMarker("sess-2", "", "n"); err != nil {
t.Fatal(err)
}
if _, ok := LoadJobMarker("sess-2"); ok {
t.Fatal("空 jobID 不该写出标记")
}
}