Expand description
Coverage rule (Python — issue #26; TypeScript — issue #31; exemptions — issue #32).
Enforces the README’s Coverage rule: a library’s unit suite must meet the
configured floor, with test files excluded from the denominator. This module
is the deterministic core — given a parsed coverage report and the thresholds
from config, an evaluate function decides pass/fail. Producing the report
(shelling out to the language’s coverage tool) is a thin layer on top, kept
separate so the guarantee is testable without that toolchain installed.
Python (#26) uses coverage.py: a single total, branch coverage on. Given a
CoverageReport and Thresholds, evaluate decides pass/fail, and
measure shells out to coverage. TypeScript (#31) is the twin: vitest
reports four independent metrics (lines / branches / functions / statements),
so it carries its own TypeScriptThresholds, VitestReport, and
evaluate_typescript / measure_typescript pair — sharing only the
Outcome type. Its subprocess layer shells out to vitest.
Files exempted from coverage in config (issue #32) are omitted from the
denominator alongside the test files; the caller resolves them
(crate::config::resolve_exempt) and passes their paths to measure /
measure_typescript.
Structs§
- Coverage
Report - A coverage.py JSON report (
coverage json), pared to the totals the check needs. Unmodeled fields (per-file data, metadata) are ignored. - Thresholds
- The coverage floor to enforce, from a
[<language>].coveragetable. - Totals
- The
totalsblock of a coverage.py report. - Type
Script Thresholds - The four vitest coverage floors, from a
[typescript].coveragetable. Each is an independent percent the unit suite must meet — vitest measures all four. - Vitest
Metric - One metric’s totals from a vitest json-summary block, pared to what the check needs: the covered percent and the denominator size.
- Vitest
Report - A vitest
coverage-summary.jsonreport, pared to thetotalblock the check needs. Per-file entries and unmodeled fields are ignored. - Vitest
Totals - The
totalblock of a vitest json-summary report — the four metrics this rule enforces. vitest also emitsbranchesTrue, which the check ignores.
Enums§
- Outcome
- The result of checking a report against the thresholds.
Functions§
- evaluate
- Decide whether
reportmeetsthresholds. - evaluate_
typescript - Decide whether
reportmeets every threshold inthresholds. - measure
- Run the unit suite under coverage.py in
rootand check it againstthresholds. - measure_
typescript - Run the unit suite under vitest coverage in
rootand check it againstthresholds. - parse_
report - Parse a coverage.py JSON report (the output of
coverage json). - parse_
vitest_ report - Parse a vitest json-summary report (
coverage-summary.json).