Přeskočit na obsah

Tato stránka byla automaticky přeložena z angličtiny, jediného jazyka, ve kterém se tento web píše. Číst originál.

Veřejný povrch příkazů je deklarován a srovnáván s dispatcherem

Existuje jeden soubor, který říká, jaké jsou veřejné příkazy a co který znamená:

deklarovaný stavdeklarovaný stav: zaručeno Deklarováno jako deterministické a blokující, implementováno a s uvedeným behaviorálním testem, který to má dokázat. Zda to zaznamenaný běh podporuje, říká verdikt důkazů zobrazený vedle.

zaznamenané důkazyzaznamenané důkazy: nespuštěno Deklarováno jako zaručené, ale nepodložené zaznamenaným během: test je pojmenován, ale žádný úspěšný běh nad současnými vstupy zaznamenán není. jak se zaznamenávají důkazy

Registr je autorita pro to, co příkaz znamená; bin/majordomus zůstává autoritou pro to, co běží. Příkaz předaný bez záznamu i záznam, který nic nepředává, oba selhávají. Příkaz je veřejný právě tehdy, když ho uvádí text použití, kontrolováno oběma směry.

Co to znamená

Existuje jediný soubor, který říká, jaké jsou veřejné příkazy a co každý znamená: share/commands.yaml. Nese kategorii každého příkazu, jeho fázi životního cyklu, zda mění stav, zda potřebuje aktivní úlohu, co čte, co zapisuje, jaké kódy ukončení může vydat a demonstraci, která jej reprezentuje na webu.

Není autoritou pro to, co běží. To rozhoduje bin/majordomus a obě jsou drženy vůči sobě, místo aby jedno bylo odvozeno z druhého: příkaz dispečovaný bez záznamu i záznam pro příkaz, který nic nedispečuje, jsou selhání.

Princip

test/cases/30_command_registry.sh čte dispatch tabulku z binárky a povrch z registru a porovnává je v obou směrech. Kontroluje také to, co sám registr nedokáže: že id jsou jedinečná, že class, visibility a requires_task zůstávají ve svých slovnících, že každé stage, které příkaz jmenuje, registr deklaruje, a že každá konstanta MJ_EX_*, na kterou modul příkazu odkazuje, je uvedena v deklarovaných exit kódech toho příkazu.

„Interní“ je definováno, ne tvrzeno. Příkaz je veřejný přesně tehdy, když jej uvádí text nápovědy, a to se kontroluje v obou směrech, takže označení příkazu za interní se nemůže stát způsobem, jak ho udržet mimo nápovědu a uniknout povinnostem veřejného příkazu. Interní je dnes jen help.

Jak to vidět

bash test/run.sh 30_command_registry
sed -n '/^commands:/,$p' share/commands.yaml | grep '^  - id:'
grep -oE '^  [a-z|]+\)$' bin/majordomus | tr -d ' )' | tr '|' '\n' | sort

Co nepokrývá

Registr popisuje povrch; negeneruje ho. Dispatch je stále case v bin/majordomus a přidání příkazu znamená úpravu obou souborů — sladění činí z zapomenutí jednoho z nich selhání, ne nemožnost. Prózová pole (summary, note) jsou redakční a nic nekontroluje, zda jsou pravdivá.

Proč existuje

Povrch existoval na čtyřech místech, která nešlo porovnat: dispatch tabulka, text použití, nadpisy ## v docs/CLI.md a parsování zprávy nápovědy generátorem webu. Jejich sladění odhalilo hned při prvním běhu dva defekty. checkpoint bylo zdokumentováno jako neschopné skončit s 10, ačkoli jeho modul zjevně může, a majordomus version --bogus vypsalo verzi a skončilo s 0, zatímco každý jiný příkaz neznámou volbu odmítne s 2, protože version se dispatchuje před parserem voleb a nikdo jej nikdy neporovnal se zbytkem povrchu.

Detail vykreslený z docs/claims/command-surface.md.

Od tvrzení k důkazu

  1. 1 · veřejné tvrzení

    Veřejný povrch příkazů je deklarován a srovnáván s dispatcherem

    Vzniklo na Doctor.

  2. 2 · kanonické tvrzení

    command-surfacedeklarovaný stav: zaručeno v docs/CLAIMS.yaml

    Definováno v číst na tomto webu · docs/DYNAMICITY.md

  3. 3 · implementace

    share/commands.yaml

  4. 4 · test a scénáře

    Test: test/cases/30_command_registry.sh

    Provedeno v Podmínit CI samotným nástrojem, s exit kódem, který je kontraktem.

  5. 5 · zaznamenané běhy

    zaznamenané důkazy: nespuštěno jak se zaznamenávají důkazy

Ověřte si to sami

Test běží v jednorázovém dočasném repozitáři a ověřuje chování, ne řetězec ve zdrojovém kódu.

z klonu repozitáře
bash test/run.sh 30_command_registry

Kde se toto tvrzení používá

pokryté odpovědnosti

Okamžiky, na které to odpovídá

Prohledává názvy a popisy všech stránek, které tento web publikuje.