Co to znamená
majordomus evidence record vrací vedle toho, co sloučil do knihy, i záznam jako jeden typovaný běh, EvidenceRunRecord:
- jeho id: běh CI, kterým byl (
ci:<provider>:<run>:<attempt>), nebo lokální commit a čas; - jeho původ, jeho commit a nejslabší strom ze zpráv, které dostal;
- měření každého reportu;
- součty podle výsledku a podle runneru;
- které reporty chyběly a proč, co reporty držely a žádné tvrzení to nedokáže pojmenovat (dropped), a testy, které pojmenovaly a tento repozitář je nemá (unknown);
- provedení, z nichž každé se mapuje zpět na id záznamu.
--run-record <file> zapíše stejný záznam. --coverage <summary> připojí souhrn, který scripts/rust-coverage --summary-json zapsal jako EvidenceCoverage, jenž nelze sestavit bez úplného commitu, nese strom, který jeho běh změřil, a hranice, které uvádějí soubory prahů, a je aktuální jen pro svůj vlastní commit na čistých stromech.
Princip
evidence::record v apps/majordomus-cli/src/evidence/record.rs sestaví záznam ze stejných hodnot, které sloučilo: součty přes ledger::outcome_counts, jediný počet, který používá vlastní souhrn evidenční knihy, a seznam vynechaných, který vytvořil adaptér cratu, takže odpověď záznamu a samotný záznam se nikdy nerozcházejí. Typy jsou v apps/majordomus-cli/src/evidence/run.rs a apps/majordomus-cli/src/evidence/coverage.rs; CommitId odmítne zkrácené id nebo id s velkými písmeny při parsování i deserializaci.
V CI scripts/ci/evidence-collect čte součty, strom a absence svého manifestu ze záznamu běhu, místo aby je počítal podruhé z řádků ledgeru.
Jak to vidět
majordomus evidence stamp --producer suite --report suite.tsv --out suite.provenance.json
majordomus evidence record --suite suite.tsv --provenance suite.provenance.json \
--run-record run.json --format json | jq '.run_record | del(.executions)'
bash test/run.sh 505_a_recording_carries_what_its_run_measured
bash test/run.sh 506_a_crate_binary_that_ran_nothing_is_not_a_passCo nepokrývá
Neexistuje index záznamů běhů ani omezení, kolik jich se uchovává, a záznam běhu drží jeden výsledek na testovací binárku, ne na test. Nic záznam běhu nečte, aby posoudilo tvrzení: pozdější povrch dovolí zadržet proven jediným monotónním pravidlem, ale zatím žádný takový není.
Proč existuje
Co nahrávka věděla jako běh, bylo zahozeno: ledger drží jedno provedení na test a souhrn pokrytí nenesl žádný commit, takže šlo o číslo o nějakém stromu, který nikdo neuměl pojmenovat. Typovaný běh drží pohromadě, co běh změřil, a váže pokrytí na commit, který popisuje. ADR 0087 (navrženo) model zaznamenává.