Skip to main content

Module coverage

Module coverage 

Source
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§

CoverageReport
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>].coverage table.
Totals
The totals block of a coverage.py report.
TypeScriptThresholds
The four vitest coverage floors, from a [typescript].coverage table. Each is an independent percent the unit suite must meet — vitest measures all four.
VitestMetric
One metric’s totals from a vitest json-summary block, pared to what the check needs: the covered percent and the denominator size.
VitestReport
A vitest coverage-summary.json report, pared to the total block the check needs. Per-file entries and unmodeled fields are ignored.
VitestTotals
The total block of a vitest json-summary report — the four metrics this rule enforces. vitest also emits branchesTrue, which the check ignores.

Enums§

Outcome
The result of checking a report against the thresholds.

Functions§

evaluate
Decide whether report meets thresholds.
evaluate_typescript
Decide whether report meets every threshold in thresholds.
measure
Run the unit suite under coverage.py in root and check it against thresholds.
measure_typescript
Run the unit suite under vitest coverage in root and check it against thresholds.
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).