Co to znamená
Případ ve své hlavičce říká, které veřejné příkazy procvičuje a které vyvrací: # majordomus-covers: <commands> a # majordomus-negative: <commands>. Tyto hlavičky čte několik programů a index subjektů je dalším. Toto tvrzení říká, že se index a stránky příkazů nikdy neshodnou v tom, které případy příkaz dokazují: behaviorální a negativní testy, které index jmenuje pro command:<name>, jsou přesně testy, které uvádí stránka toho příkazu.
Princip
Hlavičky mají několik čtenářů, každého ve vlastním souboru:
- stránky příkazů, které
scripts/generate-site-datazapisuje dosite/data/generated/commands.json, čtou řádek first covers a první negativní řádek každého případu; - doktrína pokrytí příkazů, v
lib/commands.sh, čte stejné první řádky a odmítne slovo, které není veřejným příkazem; - kontrola
command-furnishedvscripts/ci/command-furnisheda trasa dopadu případů užití vlib/usecase.shčtou jakýkoli řádek hlavičky.
Index předmětů čte první řádek slovo od slova, stejně jako stránka, a none nejmenuje nic. Čtenáři kteréhokoli řádku se od něj liší ve dvou ohledech. Čtou druhou hlavičku téhož druhu, kterou čtenáři prvního řádku ignorují. A shodují příkaz mezi hranicemi slov, ne jako celé slovo, takže slovo v hlavičce s příkazem uvnitř se jim počítá jako pokrytí tohoto příkazu, zatímco indexu ani stránce ne: slovo capability:commit.plan obsahuje plan. Případ proto drží každý případ tohoto repozitáře nejvýše u jednoho řádku covers a nejvýše jednoho negativního řádku a drží jeho řádek covers u toho, aby slovo od slova jmenoval přesně veřejné příkazy, které drží mezi hranicemi slov. Dokud kontrolní slice nepřesune tyto čtenáře na index, právě tato ochrana drží čtení shodná.
Dvě další shellová odvození se k testům dostanou přes deklarace místo hlaviček a stejný případ drží každé z nich proti indexu:
- stránky schopností z
scripts/lib/executable-site.jqdávají každé schopnosti tvrzení implementovaná v souboru, ve kterém je její modul složen, a vypisují testy těchto tvrzení; index dávácapability:<id>přesně tato tvrzení jako členy a případ porovnává tvrzení i testy; - stránky doktrín,
site/data/generated/doctrines.json, pojmenovávají první test bloku vynucování každého pravidla, kterýlib/doctrine.shčte; případ drží každý takový test u routy nebo mechanismurule:<id>.
Jak to vidět
bash test/run.sh 507_evidence_subjects_are_derived
jq '.commands[] | {name, tests}' site/data/generated/commands.json
jq '.subjects["command:plan"].routes' site/data/registry/evidence-subjects.jsonCo nepokrývá
Doktrína pokrytí příkazů a kontroly ještě nejsou přesunuty na index; stále čtou hlavičky samy a stráž výše je drží v souladu. Tento přesun provede řez kontrol.
Tvrzení, která stránky schopností připojují k celému povrchu — program, jeho příkazový řádek, MCP, HTTP a měření výkonu — nemají předmět, protože žádný druh předmětu není povrch. Index je neodvozuje ani neporovnává.
Proč existuje
Stránka příkazu a stránka důkazů, které by pro jeden příkaz jmenovaly různé testy, by každá věrně promítala jiné čtení týchž hlaviček a čtenář by nepoznal, která je odpověď. Několik čtenářů jedné deklarace je způsob, jak se to stane; držet je shodné a jmenovat každého je způsob, jak to přestane, dokud nezůstane jediný čtenář.