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.

Testovací binárka crate, která nespustila žádný test nebo jen filtrovanou podmnožinu, se zaznamená jako přeskočení, ta s neúspěšným testem jako selhání a ta, která nevytiskla žádný výsledek, jako chyba, ať jsou ve výstupu jakékoli barevné kódy; co zatím žádné tvrzení nedokáže pojmenovat, je uvedeno jako zahozené

majordomus evidence record --crate-output <file> čte, co vypsal cargo test, a

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

Výsledkový řádek cargo test říká ok i pro binárku, která nespustila nic, proto recorder čte její počty. Selhávající počet je selhání, binárka, která nic neprošla nebo spustila filtrovanou podmnožinu, je přeskočení, řádek bez počtu nebo binárka bez výsledkového řádku je chyba a escape sekvence se odstraňují jako první. Unit-test binárka crate, její doctesty, binárky mimo tests/ a výsledkové řádky, které nejmenoval žádný řádek Running, jsou v záznamu uvedeny jako dropped s důvodem, protože žádné tvrzení je nemůže jmenovat, dokud je runner nezaznamená po jednom.

Co to znamená

majordomus evidence record --crate-output <file> čte, co vytiskl cargo test, a zaznamenává jedno provedení na každou binárku integračních testů pod tests/. Zaznamenává to, co běh této binárky uvedl, a nic víc:

  • binárka, jejíž řádek s výsledkem započítává neúspěšný test, je fail, ať řádek začíná jakýmkoli slovem;
  • binárka, která neprošla nic, protože všechny testy byly ignorovány nebo žádné nebyly, je skip;
  • binární soubor, který filtr jmen zúžil na podmnožinu, je skip, kolik z té podmnožiny ani prošlo, protože to není důkaz onoho binárního souboru;
  • binárka, jejíž výsledkový řádek nenese počet nebo před další binárkou nevypsala výsledkový řádek vůbec, je error: harness nedokázal říct, co běželo;
  • jen binárka, která spustila celou svou sadu a žádný test nevyřadila jako selhání, je pass.

Přeskočení se čte jako not_run s podrobností, že test odmítl běžet, a chyba se čte jako failing s podrobností, že ho harness nedokázal spustit, takže ani jedno nemůže vznést tvrzení proven.

Co ve výstupu bylo a žádné tvrzení to zatím nedokáže pojmenovat, se neignoruje. Vlastní binárka unit testů crate, jeho doctesty, binárka mimo tests/ a řádek s výsledkem, který nepojmenoval žádný řádek Running, jsou každý uvedeny v seznamu dropped záznamu, s reportem, z něhož pocházejí, a s důvodem, a žádný z nich se nepřipisuje binárce vedle něj.

Princip

evidence::read_crate_output v apps/majordomus-cli/src/evidence/record.rs nejprve odstraní z každého řádku terminálové escape sekvence, takže barevný a prostý běh jsou stejný text. Řádek Running tests/<name>.rs otevírá binárku; řádek Running unittests <path>, řádek Doc-tests <crate> nebo řádek Running pojmenovávající jinou cestu otevírá položku, která bude vypsána, ne zaznamenána. Další řádek test result: uzavře vše, co je otevřeno.

Řádek s výsledkem se čte podle svých počtů: prošlo, selhalo, ignorováno a odfiltrováno, každý nepovinný. Rozhoduje první pravidlo, které platí: počet selhání nebo slovo FAILED je selhání; slovo ok bez počtu prošlých je chyba; ok bez prošlých nebo s čímkoli odfiltrovaným je přeskočení; ok jinak je úspěch; jakékoli jiné slovo je chyba. Binárka, která je ještě otevřená, když dorazí další binárka, doctesty nebo konec výstupu, nedostala výsledkový řádek a je chybou.

Vynechané položky jsou hodnoty EvidenceDropped (producer, what, reason) s producentem crate. evidence record je vrací jako dropped ve svém výstupu JSON a v textovém výstupu vypíše po jednom řádku dropped. Záznam samotné zprávy sady nevypíše nic a jeho výstup se nemění.

Jak to vidět

cargo test --manifest-path apps/majordomus-cli/Cargo.toml 2>&1 | tee crate.log
majordomus evidence record --crate-output crate.log
majordomus evidence record --crate-output crate.log --format json | jq '.dropped'
bash test/run.sh 506_a_crate_binary_that_ran_nothing_is_not_a_pass

Případ zapíše barevný výstup cargo test s binárkou unit testů, integračními binárkami, které prošly, neběžely vůbec, běžely jen filtrovanou podmnožinu, selhaly a nevypsaly žádný výsledek, a s doctesty. Ověřuje zaznamenaný výsledek každé binárky, seznam vynechaných v obou výstupních formátech a verdikt, ke kterému každý výsledek vede.

Co nepokrývá

Čte jeden výsledek na binární soubor. Které testy uvnitř binárního souboru prošly nebo selhaly, se nezaznamenává, takže tvrzení stále pojmenovává celý binární soubor; výsledky po jednotlivých testech jsou pozdější práce.

Binární soubor, jehož každý test je na stroji, který jej spustil, vyřazen při kompilaci, se čte jako přeskočení. To je pravda o onom stroji, ne vada: běh tam o něm nic nedokázal.

Unit testy a doctesty, které běžely, jsou vypsány, ne zaznamenány. Žádné tvrzení nemůže jmenovat žádný z nich, dokud je runner nezaznamená jeden po druhém.

Proč existuje

Zapisovač četl výsledkový řádek začínající ok jako úspěch. Binárka, jejíž testy byly všechny ignorované, nebo běh zúžený na jeden test, vypsaly ok a zapsaly se jako důkaz binárky, takže tvrzení se mohlo číst proven na základě běhu, který nic neměřil. Čtení počtů to uzavírá a výpis toho, co zaznamenat nešlo, brání tomu, aby běh vypadal menší, než byl. ADR 0087 (proposed), rozhodnutí 6, formuluje pravidlo: zpráva uvádí jen to, co běželo.

Detail vykreslený z docs/claims/evidence-a-crate-binary-that-ran-nothing-is-not-a-pass.md.

Od tvrzení k důkazu

  1. 1 · veřejné tvrzení

    Testovací binárka crate, která nespustila žádný test nebo jen filtrovanou podmnožinu, se zaznamená jako přeskočení, ta s neúspěšným testem jako selhání a ta, která nevytiskla žádný výsledek, jako chyba, ať jsou ve výstupu jakékoli barevné kódy; co zatím žádné tvrzení nedokáže pojmenovat, je uvedeno jako zahozené

    Vzniklo na Důkazy.

  2. 2 · kanonické tvrzení

    evidence-a-crate-binary-that-ran-nothing-is-not-a-passdeklarovaný 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/record.rs

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

    Test: test/cases/506_a_crate_binary_that_ran_nothing_is_not_a_pass.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 506_a_crate_binary_that_ran_nothing_is_not_a_pass

Související tvrzení stejná implementace

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