Files
arcrun-collector/cardloop_vs_existing_wiki_test.go

69 lines
3.6 KiB
Go
Raw Permalink Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
// cardloop_vs_existing_wiki_test.go — `#134`(別把自己的卡當原稿)與 `#180`(現成的卡要收)
// 在同一個路徑上要求相反答案,這一支把**分界線本身**釘住。
//
// 🔴 這不是普通的迴歸網,是一條**有爭議的分界**:兩張票的驗收條件互斥——
//
// #134 cardloop_test.go `system-dev/wiki/cards/arcrun-換柱.md`        **不准收**
// #180 template_not_knowledge_test.go `system-dev/wiki/cards/arcrun-火星座標_短片劇本_v1.md` **必須收**
//
// 同一個目錄、同一個前綴 ⇒ **靠名字分不開**。現行分界是「**模式**」:
// curated-wiki(接一個開發 repo`cardsRelDir` 與他的 wiki 結構性重疊)擋;
// 其餘(一般資料夾/筆記庫)收。理由與出處寫在 `ingestplan.go` 的 KeepsFile。
//
// ⚠️ 這條分界是收工方的假設,**leo 還沒裁**。要改分界,連這支一起改,
// 並在 `inkstone/Arcrun#180` 留言說明改成什麼、為什麼——不要只改 code。
package collector
import "testing"
func TestKeepsFile_機器產的卡在哪一種模式下才擋(t *testing.T) {
const machineCard = "system-dev/wiki/cards/" + MachineMark + "火星座標_短片劇本_v1.md"
const userCard = "system-dev/wiki/cards/我自己寫的.md"
const liveProduct = "system-dev/wiki/cards/.wiki/換柱.md"
// ① 接開發 repocurated-wiki):舊版 daemon 寫在他 wiki 裡的卡不當原稿(#134)
repo := IngestPlan{Mode: IngestCuratedWiki, WikiRelDir: "system-dev/wiki"}
if repo.KeepsFile(machineCard) {
t.Errorf("curated-wiki 仍該擋 %s#134 第③環)", machineCard)
}
if !repo.KeepsFile(userCard) {
t.Errorf("使用者自己寫的卡被擋了:%s", userCard)
}
// ② 一般資料夾/筆記庫:leo 的 youlinhsieh-test1 就是這一種,那 9 張卡要收(#180)
for _, m := range []IngestMode{IngestAll, ""} {
plain := IngestPlan{Mode: m}
if !plain.KeepsFile(machineCard) {
t.Errorf("mode=%q 沒收 %s——#180 驗收第 3 條(那 9 張卡的內容要進得了雲端)就不成立",
string(m), machineCard)
}
}
// ②之二 `arcrun-` 是人也會用的命名習慣:**卡片產物區以外的檔一律照收**。
// 實測 leo 的 youlinhsieh-test1 根層就有三個他自己寫的(其中一個檔名裡寫著「請勿刪」),
// 只看前綴的話它們會被排進「下架」——不是不收而已,是把雲端已經有的撤掉。
// curated-wiki 只讀那份 wiki,所以根層的檔本來就不收——那是模式的範圍,
// 不是前綴造成的;這裡分別用兩種模式各檢一格,才不會把兩件事混在一起。)
plainAll := IngestPlan{Mode: IngestAll}
for _, rel := range []string{
MachineMark + "複驗用-請勿刪-20260827c.md",
MachineMark + "1457驗收-20260827.md",
} {
if !plainAll.KeepsFile(rel) {
t.Errorf("mode=all 把使用者自己命名的根層檔擋掉了:%s", rel)
}
}
if !repo.KeepsFile("system-dev/wiki/" + MachineMark + "我放在wiki根的筆記.md") {
t.Error("curated-wiki 把卡片產物區**以外**、帶前綴的檔擋掉了")
}
// ③ 不管哪一種模式,**這一版正在維護的產物**(住在 `.wiki/`)永遠不是原稿。
// 這一條才是關掉「卡片的卡片」迴圈的那道閘,前綴不是。
for _, m := range []IngestMode{IngestCuratedWiki, IngestDocsOnly, IngestAll, ""} {
p := IngestPlan{Mode: m, WikiRelDir: "system-dev/wiki"}
if p.KeepsFile(liveProduct) {
t.Errorf("mode=%q 把 `.wiki/` 裡的產物當原稿收了:%s", string(m), liveProduct)
}
}
}