○zaručeno
Začínáme a převzetízákladníoperátorpřispěvateljen pro čtení
Diagnóza z jednoho stroje se porovnává s repozitářem na jiném a nikdo neví, zda oba spustily tentýž nástroj.
setup: bare
given:
- 'an empty repository; nothing installed'
steps:
- id: print
run: ['version']
note: 'the one string the projections, the ledger and the site derive their version from'
expect:
exit: 0
stdout_contains: ['^majordomus [0-9]+\.[0-9]+\.[0-9]+(-(alpha|beta|rc)\.[0-9]+)?$']
- id: refuse
run: ['version', '--no-such-option']
note: 'an argument the command does not know is a usage error, never ignored'
expect:
exit: 2
stdout_contains: ['unknown option --no-such-option']
then:
- 'the version needs no repository and no installation'
- 'a usage error exits 2, as the exit-code contract says'
version vypíše verzi a nic jiného, odkudkoli, a odmítne argument, kterému nerozumí, místo aby předstíral, že rozumí.
Scénář
Provedeno proti skutečnému nástroji v repozitáři připraveném pomocí bare, při každém generování tohoto webu. To, co následuje, není popis toho, co by se mělo stát; je to to, co se stalo.
dáno
- ·prázdný repozitář; nic nenainstalováno
kdy
- 1
majordomus version - 2
majordomus version --no-such-option
pak
- ·verze nepotřebuje repozitář ani instalaci
- ·chyba použití končí kódem 2, jak říká kontrakt návratových kódů
Co nástroj udělal
Důkaz běhu, ze kterého byla tato stránka vygenerována: pass, 2 kroky. Výstup je normalizován: cesta repozitáře, časová razítka, id a doby trvání jsou zástupné hodnoty; nic dalšího se neupravuje.
Testováno v test/cases/94_use_cases.sh, který spouští každý scénář a odmítne krok, jehož zaznamenaný výstup není tím, co vyprodukoval.
-
jediný řetězec, ze kterého projekce, ledger a web odvozují svou verzi
majordomus 1.0.0-alpha.4
- exit 0
- stdout_contains /^majordomus [0-9]+\.[0-9]+\.[0-9]+(-(alpha|beta|rc)\.[0-9]+)?$/
-
argument, který příkaz nezná, je chyba použití, nikdy se neignoruje
majordomus: version: unknown option --no-such-option
- exit 2
- stdout_contains /unknown option --no-such-option/
Proč to nástroj ví
Řetězec od této stránky ke kódu: případ užití jmenuje příkazy, pravidla a tvrzení; každé pravidlo se dispatchuje z registru a každé tvrzení jmenuje test, který ho dokazuje; scénář výše provedl příkazy. Nic v tomto řetězci není text o záměru.
Uplatněné záruky
Související případy užití
Vypočteno z toho, co sdílejí: tvrzení, pravidla, příkazy, kategorie, aplikace. Tento seznam nikdo neudržuje.
- Řiďte CI samotným nástrojem s návratovým kódem, který je kontraktSpouštějte kontroly, které spouští CI, čtěte každý nález s příkazem, který jej reprodukuje, a spoléhejte na návratové kódy, z nichž každý znamená jedno: žádný kód neznamená varuj a pokračuj.
- Důvěřujte politice a profilům až po jejich validaciProkažte, že se kanonická politika zparsuje a má deklarovaný každý potřebný klíč, že se zparsuje každý profil a výchozí existuje a že to, co politika deklaruje jako vynucené, je to, co skutečně běží.
- Nainstalovat nástroj jedním příkazem na stroji bez toolchainuVložte jeden řádek, získejte ověřenou binárku pro tento stroj a spusťte majordomus init — žádný git, žádný Rust, žádný Node, žádný Python, žádný root a žádná možnost nainstalovat archiv, jehož digest nesouhlasí.
- Rozhodnout, zda je dokončená práce skutečně dokončenáVyhodnoťte kontrakt řádek po řádku, místo abyste přijali větu, která tvrdí, že je práce hotová.
- Přidat případ užití a nechat nástroj, ať ho prokážeVytvořit kostru konceptu pro nepokrytý příkaz, zvalidovat ho, spustit jeho scénář proti skutečnému nástroji a sledovat, jak se pokrytí posouvá.
Okamžiky, na které to odpovídá