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.

Pravidlo s neúspěšným testem se čte jako neúspěšné bez ohledu na jeho ostatní testy, takže blokující pravidlo, jehož testy jsou jeden neúspěšný a jeden nespuštěný, je stále nález

Pravidlo, které jmenuje několik testů, bere jeden stav ze všech. Když kterýkoli z těchto testů

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

`freshness::aggregate` je jediná agregace: selhávající, pokud selhává kterákoli část, jinak nejslabší z částí, které mohou nést důkaz, jinak nejslabší ze všech. Deklarované pořadí řadí failing nad not_run, takže prosté nejslabší z neúspěšného a přeskočeného testu dalo not_run, což není nález, a selhání skrylo.

Co to znamená

Pravidlo, které pojmenovává několik testů, bere jeden stav ze všech. Když kterýkoli z těch testů selhává, pravidlo je failing a u blokujícího pravidla je to zjištění — i když jiný jeho test nikdy neběžel nebo odmítl běžet. Jinak je stav pravidla nejslabší z testů, které mohou nést důkaz.

Princip

evidence::freshness::aggregate je jediná agregace. Vezme stav každé části a to, zda část může nést důkaz, a vrátí failing, je-li kterákoli část failing; jinak nejslabší část, která může nést důkaz, podle deklarovaného pořadí stavů; jinak nejslabší část ze všech; a nic pro žádné části. Zpráva o pravidlech ji volá se stavem pravidla každého testu a s tím, zda test řídí runner nebo kontrola, poté, co chybějící cesta již učinila pravidlo dangling, a před úpravou odeslaného pravidla bez případu.

První krok existuje, protože deklarované pořadí řadí failing nad not run. Prosté nejslabší-z přes selhávající a přeskočený test — což se nyní čte not run — by se četlo not run, což není zjištění, a selhání by se skrylo za absencí.

Jak to vidět

majordomus-cli rules show <rule-id> --format json | jq '.proof.state, [.proof.tests[].state]'
majordomus-cli rules report --findings
bash test/run.sh 502_evidence_is_judged_at_the_presented_revision

Případ přidá blokující pravidlo jmenující dva případy, zaznamená jedno selhání a jedno přeskočení a ověří, že pravidlo je failing a že zpráva jej uvádí jako nález.

Co nepokrývá

Rozhoduje, jak se stavy kombinují, ne jaký je stav každého testu; to je tabulka čerstvosti. Cesta, kterou nic nehýbe, se stále počítá jen tehdy, je-li to vše, co pravidlo jmenuje, jako dříve.

Vstupní preflight přepočítává korpus pravidel po svém, dokud nebude převeden na tuto funkci a na verdikt nad korpusem.

Proč existuje

Když přeskočení četlo not run místo failing, opravilo to falešné zjištění, ale otevřelo to díru: blokující pravidlo, jehož testy byly jedno selhání a jedno přeskočení, by se četlo jako not run a ztratilo by své zjištění. Protizávažný důkaz nesmí být přebit absencí důkazu, proto je přednost zapsána jednou, tam, kde ji čte každá agregace stavů.

Podrobnosti vykresleny z docs/claims/evidence-a-failure-outranks-an-absence.md.

Od tvrzení k důkazu

  1. 1 · veřejné tvrzení

    Pravidlo s neúspěšným testem se čte jako neúspěšné bez ohledu na jeho ostatní testy, takže blokující pravidlo, jehož testy jsou jeden neúspěšný a jeden nespuštěný, je stále nález

    Vzniklo na Důkazy.

  2. 2 · kanonické tvrzení

    evidence-a-failure-outranks-an-absencedeklarovaný stav: zaručeno v docs/CLAIMS.yaml

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

  3. 3 · implementace

    apps/majordomus-cli/src/evidence/freshness.rs

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

    Test: test/cases/502_evidence_is_judged_at_the_presented_revision.sh

  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 502_evidence_is_judged_at_the_presented_revision

Související tvrzení stejná implementace

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