What needs doing?
A CI-watched test module can lose most of its coverage without anyone noticing, because the list it parametrizes over has no floor checking how many cases it actually collected.
tests/test_pdf_corpus_smoke.py:25 builds its case list from adjacent_pdf_pairs() (consecutive PDF version pairs within a bill), then parametrizes over it directly with no assertion that the count is anywhere near what the committed corpus should produce. The module is already in tests/conftest.py's CI_SLOW_MODULES watch group, so a regression that drops the list to zero cases is caught (an empty parametrize is itself a skip, which the ceiling watches). A regression that shrinks it partially — say from 30 pairs to 3 — produces neither a skip nor a failure; it just quietly runs fewer comparisons and stays green.
Why
This is the same shape #598 just closed in tests/test_pdf_division_recall.py's _DIVISION_VERSIONS: a collection-time filter feeding a parametrize block, with nothing asserting the result is complete. That fix added a test_the_gate_collected_the_expected_case_set-style floor test (assert len(...) >= N, N set well under the current count so unrelated fixture churn doesn't force edits, but a wholesale loss still reddens). The same pattern applies here directly.
Found during the #539 (test-skip-ceiling audit, closed via #598) second-pass sweep of tests/ beyond that issue's original module list.
Refs #539, #598
What needs doing?
A CI-watched test module can lose most of its coverage without anyone noticing, because the list it parametrizes over has no floor checking how many cases it actually collected.
tests/test_pdf_corpus_smoke.py:25builds its case list fromadjacent_pdf_pairs()(consecutive PDF version pairs within a bill), then parametrizes over it directly with no assertion that the count is anywhere near what the committed corpus should produce. The module is already intests/conftest.py'sCI_SLOW_MODULESwatch group, so a regression that drops the list to zero cases is caught (an empty parametrize is itself a skip, which the ceiling watches). A regression that shrinks it partially — say from 30 pairs to 3 — produces neither a skip nor a failure; it just quietly runs fewer comparisons and stays green.Why
This is the same shape #598 just closed in
tests/test_pdf_division_recall.py's_DIVISION_VERSIONS: a collection-time filter feeding a parametrize block, with nothing asserting the result is complete. That fix added atest_the_gate_collected_the_expected_case_set-style floor test (assert len(...) >= N, N set well under the current count so unrelated fixture churn doesn't force edits, but a wholesale loss still reddens). The same pattern applies here directly.Found during the #539 (test-skip-ceiling audit, closed via #598) second-pass sweep of
tests/beyond that issue's original module list.Refs #539, #598