feat(t101): 托盤刪除語意取代看守語意——leo 實測裁定
「沒有看守這件事,只要列入就是看守,不想同步就刪掉」: 子選單「停止看守這個資料夾」→「刪除這個知識庫」(按下從列表剔除、冪等); 「+ 建立新資料夾並看守…」整項刪除。tray go test 綠(總管親跑)。 (實作=子 CC;驗證+commit=總管。此案原被誤擱置害 v0.13 漏裝=mistakes c947e5a)
This commit is contained in:
@@ -246,6 +246,44 @@ func TestSyncNowSignalPath(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
// ── t101:removeWatchFolder 刪除邏輯 ─────────────────────────────────────────
|
||||
|
||||
// TestRemoveWatchFolder_removesEntry:移除後 WatchFolders 不含該路徑,WatchFolder 同步更新。
|
||||
func TestRemoveWatchFolder_removesEntry(t *testing.T) {
|
||||
cfg := &directConfig{
|
||||
WatchFolder: "/a",
|
||||
WatchFolders: []string{"/a", "/b", "/c"},
|
||||
}
|
||||
removeWatchFolder(cfg, "/b")
|
||||
for _, f := range cfg.WatchFolders {
|
||||
if f == "/b" {
|
||||
t.Errorf("移除後 WatchFolders 仍含 /b:%v", cfg.WatchFolders)
|
||||
}
|
||||
}
|
||||
if cfg.WatchFolder == "/b" {
|
||||
t.Errorf("移除後 WatchFolder 不應是 /b")
|
||||
}
|
||||
// 移除中間項不影響剩餘項
|
||||
if len(cfg.WatchFolders) != 2 {
|
||||
t.Errorf("移除一項後應剩 2 項,got %d:%v", len(cfg.WatchFolders), cfg.WatchFolders)
|
||||
}
|
||||
}
|
||||
|
||||
// TestRemoveWatchFolder_idempotent:對不在清單中的路徑呼叫,清單保持不變(冪等)。
|
||||
func TestRemoveWatchFolder_idempotent(t *testing.T) {
|
||||
cfg := &directConfig{
|
||||
WatchFolder: "/a",
|
||||
WatchFolders: []string{"/a", "/b"},
|
||||
}
|
||||
removeWatchFolder(cfg, "/nonexistent")
|
||||
if len(cfg.WatchFolders) != 2 {
|
||||
t.Errorf("重複刪除不存在路徑後清單應不變,got %v", cfg.WatchFolders)
|
||||
}
|
||||
if cfg.WatchFolder != "/a" {
|
||||
t.Errorf("WatchFolder 不應改變,got %q", cfg.WatchFolder)
|
||||
}
|
||||
}
|
||||
|
||||
// TestDirectConfigPreservesClaudeBin:config JSON round-trip 保留 claude_bin 欄位(t92 回寫驗收)。
|
||||
func TestDirectConfigPreservesClaudeBin(t *testing.T) {
|
||||
c := &directConfig{
|
||||
|
||||
Reference in New Issue
Block a user