Co to znamená
Verdikt je vždy verdikt o něčem. Čtenář se ptá „je funkce evidence prokázána?“, „je majordomus commit plan testováno?“, „co dokazuje pravidlo project.scope-is-declared?“ — a každá z těchto otázek se týká subjektu: jedné deklarace, kterou repozitář už činí, pojmenované klíčem tvaru <kind>:<id>, například feature:evidence, command:commit plan nebo rule:project.scope-is-declared.
Index předmětů odpovídá na tu polovinu otázky, která nevyžaduje běh: které testy předmět zasahuje, přímo svými trasami a nepřímo předměty, z nichž se skládá. Nic neuvádí předmět, člena ani trasu ručně. Přidání tvrzení, pravidla, funkce, případu užití, příkazu, zdokumentovaného příkladu, schopnosti nebo hlavičky případu přidá do indexu to, co deklaruje; odebrání to odebere.
Commitnutá kopie, site/data/registry/evidence-subjects.json, je to, k čemu se web a shellové nástroje připojují. majordomus generate --check odmítne kopii, která se liší od odvození, takže ruční úprava — předmět, o kterém si někdo přál, aby byl testovaný, trasa, kterou někdo přidal, aby stránka vypadala pokrytá — je selhání, ne fakt.
Princip
majordomus generate site odvozuje index ve spustitelném souboru z deklarací, které jejich vlastníci už čtou:
- tvrzení pochází ze spojení důkazů nad
docs/CLAIMS.yamls prázdným ledgerem, takže jeho identita testu sleduje jedinou gramatiku, kterou ledger používá; jeho jedinou trasou je test, který pojmenovává, přičemž zdroj tvrzení, implementace a zdroj testu jsou vstupy, podle kterých se běh posuzuje; - pravidlo pochází z definic v reportu pravidel; každá cesta, kterou blok vynucování pravidla uvádí a kterou řídí runner, je trasa, a každá další cesta je vypsána jako mechanismus;
- funkce pochází z modelu produktu a skládá se z tvrzení, pravidel, příkazů a případů užití, které pojmenovává;
- případ užití pochází z indexu a skládá se z příkazů, které spouští, pravidel, která zkouší, tvrzení, která dokládá, a nástrojů MCP, které volá — hran, které graf už kreslí ze stejných polí; jeho vlastní trasou je jeho scénář;
- příkaz je veřejný příkaz shellového nástroje, dokumentovaná cesta příkladu příkazového řádku programu nebo cesta příkazového řádku schopnosti: slova grafu příkazů, jehož spustitelné příkazy programu nesou každý dokumentovaný příklad, takže skupina, která drží jen příkazy, například
evidence, není slovem programu. Jeho chování a negativní trasy jsou případy, jejichž první řádek# majordomus-covers:a první řádek# majordomus-negative:jej pojmenovávají; pozdější řádek téhož druhu nepojmenovává nic anonenepojmenovává nic. Dokumentovaná cesta příkladu dosahuje i binárky, která spouští každý příklad, ale jen tam, kde ta binárka existuje; - schopnost je vestavěná schopnost registru. Skládá se z cesty příkazového řádku a ze všech tvrzení implementovaných v souboru, v němž je její modul složen, což je pravidlo, které už stránky schopností uplatňují;
- nástroj MCP je alias schopnosti, která jej deklaruje, bez vlastní stránky.
Členové tvoří orientovaný graf bez cyklů: funkce se skládá z tvrzení, pravidel, příkazů a případů užití; případ užití z příkazů, pravidel, tvrzení a nástrojů MCP; nástroj MCP ze své schopnosti; schopnost ze svého příkazu a svých tvrzení. Případ užití nikdy nezahrnuje funkce, které ho jmenují, a nic nezahrnuje funkci.
Příkazové slovo, na které odpovídá nástroj v shellu i spustitelný soubor, je jeden subjekt, který jmenuje oba programy, s poradním zjištěním, které to říká: jeho trasy v hlavičkách dokazují nástroj v shellu, jeho ukázková trasa dokazuje spustitelný soubor a jedna stránka ukazuje obojí.
Plánované nebo zamítnuté tvrzení nejmenuje žádný test, takže žádného nedosáhne. Scénář případu užití je uveden jako trasa bez testu, protože kniha nemůže zaznamenat běh scénáře. Funkce, jejíž členové nedosáhnou vůbec žádného testu, nese poradní nález feature_without_evidence, chybu pro stabilní funkci a jinak varování.
Soubor nese jen strukturu: žádný řádek ledgeru, žádný commit a žádný čas. Zaznamenání běhu ho nikdy neučiní zastaralým a oba průchody generování derivace zapisují stejné bajty.
Jak to vidět
jq '.pages[:3]' site/data/registry/evidence-subjects.json
jq '.subjects["feature:evidence"]' site/data/registry/evidence-subjects.json
majordomus generate site --check
bash test/run.sh 507_evidence_subjects_are_derived
Případ odvodí index vlastního fixture repozitáře, odstraní funkci, testovací binárku a hlavičku, odvodí jej znovu a ručně upraví commitnutou kopii, aby ukázal, že ji generate site --check odmítne. Nad tímto repozitářem drží index shodný s projekcemi, které už existovaly: matice tvrzení, produktový model, katalog případů užití, registr, stránky příkazů, stránky schopností, stránky doktríny a graf příkazů.
Co nepokrývá
Zda zasažený test prošel. Index říká, které testy subjekt zasahuje, nikdy co řekly; to je verdikt, na který příkaz evidence subject odpoví z ledgeru v předložené revizi.
Nálezy jsou poradní. Nic neodmítne funkci bez důkazu ani příkazové slovo, na které odpovídají dva programy, dokud je neudrží vrstva kontrol.
Proč existuje
Žádný odznak ani stránka nesmí nést ručně psaný seznam toho, co ji dokládá. Seznam, který někdo udržuje, je seznam, který se rozejde: test se přejmenuje a stránka jej stále jmenuje, funkce získá případ užití a žádná stránka se to nedozví. Odvozování subjektů z deklarací, které repozitář už činí, znamená, že jediný způsob, jak změnit, co stránka říká o důkazu subjektu, je změnit, co repozitář deklaruje, a každý jiný způsob generate --check odmítne.