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.

Návratové kódy jsou kontrakt a žádný kód neznamená "varuj a pokračuj"

Každý příkaz končí jedním z pevné množiny kódů: 0 ok, 2 usage, 10 kontrakt nesplněn, 11 nalezen drift, 12 chybějící artefakt, 13 vnitřní chyba, 15 odmítnuto. Záměrně neexistuje kód, který by znamenal "něco bylo špatně, ale pokračujte". Volající — včetně git hooku — je musí propagovat a doctor skenuje řádky hooků na || true a || exit 0 kolem volání Majordomus.

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

Co to znamená

Každý příkaz končí jedním z pevné sady kódů: 0 v pořádku, 2 chybné použití, 10 nesplněná smlouva, 11 nalezen drift, 12 chybějící artefakt, 13 vnitřní chyba, 15 odmítnuto. Záměrně neexistuje kód, který by znamenal „něco bylo špatně, ale pokračuj“. Volající — včetně git hooku — je musí propagovat a doctor prohledává řádky hooků na || true a || exit 0 kolem volání Majordomus.

Princip

Kódy jsou konstanty v lib/common.sh; každý příkaz končí přes ně. Příkazy jen pro čtení rozlišují selhávající nález (10) od informativního driftu (11), aby hook mohl blokovat na první a skript si druhého všimnout, aniž by je zaměnil. finish --check končí kódem 0, když není aktivní žádná úloha, takže pre-push hook nikdy neblokuje repozitář, který nemá co vynucovat.

Jak to vidět

majordomus doctor; echo $?      # 0 healthy, 10 failures, 12 something missing
majordomus watch;  echo $?      # 0 no drift, 11 drift

Co nepokrývá

Majordomus nemůže přimět volajícího, aby kódy ctil; prohledávání hooku doctor zachytí dva běžné způsoby, jak je ignorovat, ne každý možný.

Proč existuje

Kontrakt vynucování zdrojového prostředí musel písemně vypsat, že neexistuje „varovat a pokračovat“, „měkké selhání“ ani „poradní blok“ — protože hooky se stále psaly s || true a jedna zdokumentovaná oprava nahradila || true explicitním blokem set +e „se stejným chováním a bez označeného vzoru“.

Detail vykreslen z docs/claims/exit-code-contract.md.

Od tvrzení k důkazu

  1. 1 · veřejné tvrzení

    Návratové kódy jsou kontrakt a žádný kód neznamená "varuj a pokračuj"

    Vytvořeno na Kontrakt dokončení.

  2. 2 · kanonické tvrzení

    exit-code-contractdeklarovaný stav: zaručeno v docs/CLAIMS.yaml

    Definováno v přečtěte si to na tomto webu · docs/CLI.md

  3. 3 · implementace

    lib/common.sh

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

    Test: test/cases/03_update.sh

    Provedeno v Důvěra v politiku a profily až po jejich validaci, Kontrola CI samotným nástrojem s exit kódem, který je kontrakt, Kontrola verze před důvěrou v diagnózu.

  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 03_update

Kde se toto tvrzení používá

Související tvrzení stejná implementace

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

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