Co to znamená
Pro každý příkaz v share/commands.yaml označený jako veřejný musí sada obsahovat případ, který procvičuje jeho běžnou cestu, a případ, který tvrdí pojmenovaný režim selhání. Sada musí také nést jeden workflow, který provede úlohu až k přijatému finish, a jeden, který poruší kontrakt, je odmítnut, opraven a poté přijat.
Nic z toho se nezapisuje po jednotlivých příkazech. Požadavek se počítá z registru, takže příkaz přidaný zítra dluží pokrytí od té chvíle a správce se dozví, která vrstva chybí, místo aby to zjistil později.
Princip
test/cases/31_command_coverage.sh čte veřejný povrch z registru a pokrytí z metadat, která každý případ o sobě deklaruje, ve třech komentářových hlavičkách:
# majordomus-covers: handover start the normal path
# majordomus-negative: handover a named failure mode
# majordomus-lifecycle: refused a multi-command workflow
Pokrytí se deklaruje, ne odvozuje, protože ho nelze ze zdroje spolehlivě přečíst. Negativní tvrzení pro handover a checkpoint jsou zapsána jako bash -c "... | '$MJ' cmd", protože tyto příkazy čtou stdin, a případ povrchu ověřuje selhání každého příkazu přes proměnnou smyčky. Obojí je neviditelné pro jakékoli skenování a název souboru říká méně než jedno i druhé. Hlavička jmenující neexistující příkaz je rozbitý odkaz a selže.
Každý případ v této sadě je z konstrukce end-to-end: test/run.sh vytvoří v dočasném adresáři nový git repozitář a uvnitř spustí skutečný binární soubor. Není třeba deklarovat samostatnou end-to-end vrstvu ani udržovat druhý runner v souladu.
Jak to vidět
bash test/run.sh 31_command_coverage # prints the matrix it computed
grep -rn 'majordomus-covers' test/cases/Co nepokrývá
Počítá vrstvy, ne kvalitu. Případ, který deklaruje negativ pro příkaz, splňuje požadavek bez ohledu na to, co tvrdí, a nic zde neměří, jak velkou část chování příkazu případ pokrývá. Brání se veřejnému příkazu bez jediného případu, což je selhání, které se skutečně děje.
Proč existuje
Pokrytí, které si musí maintainer pamatovat, je pokrytí, které vyprší v prvním rušném týdnu. Pravidlo „přidej i test“ je přesně ten druh sekundárního registračního kroku, na který se tento repozitář odmítá spoléhat, že si ho někdo pamatuje.