Skip to content

Faster CI: leave out slow, coverage-redundant test items under CI - #60

Open
adolgert wants to merge 4 commits into
release/0.5from
feature/faster-ci
Open

adolgert wants to merge 4 commits into
release/0.5from
feature/faster-ci

Conversation

@adolgert

@adolgert adolgert commented Oct 8, 2026

Copy link
Copy Markdown
Owner

Summary

  • test/runtests.jl leaves out test items tagged :skipci when CI=true (GitHub Actions sets it) or --ci is passed. Locally, without --ci, every item runs.
  • 74 items carry the tag: slow items that reach no line of src/ the untagged items don't. These include comparisons with the checker over every fixture or many random problems, the benchmark fixtures, the strength-3 and Invalid random gates, the checker's own tests, the doctests (the docs job runs them), and some slower unit tests.
  • How they were chosen: each item's own line coverage was recorded (counters cleared before the item, written after it). Among items taking ≥1.5 s, the slowest were tagged one at a time as long as every line stayed reached. Aqua, the pairwise random gate and the stability items stay in regardless, since line coverage doesn't see what they check.
  • docs/src/contributing.md describes --ci and the tag.
  • Includes 0ff0060, which removes the duplicate Julia versions from the CI matrix.

Measurements

  • Coverage: the 325 untagged items reach all 5,713 src/ lines the 399 items reach. A whole-suite comparison under CI=true also matched (5,746 lines). Julia measures line coverage only, so branch coverage wasn't checked.
  • Local (Julia 1.13, CI mode): 11m38s → 3m39s; 4m30s with julia-runtest's flags (coverage, --check-bounds=yes).
  • GitHub test step: 21–53 min per job → 7m30s (1.10), 7m46s (ubuntu), 8m41s (macOS), 9m13s (Windows). All green.

Note: two counts in commit 8e98e98's message are off by one (it says 326 remaining and 400 total; it's 325 and 399).

🤖 Generated with Claude Code

https://claude.ai/code/session_01JHHJn12Lh5A6zoT1BX6D1P

adolgert and others added 4 commits October 8, 2026 08:40
test/runtests.jl filters out test items tagged :skipci when CI=true (GitHub
Actions sets it) or --ci is given. 45 items carry the tag: comparisons with
the checker over every fixture or many random problems, the benchmark
fixtures, the strength-3 and Invalid random gates, the checker's own tests
and the doctests, which the documentation job runs.

Locally on Julia 1.13 a --ci run takes 4m57s against 11m38s. Line coverage
of src/ under CI=true was 5,746 lines with every item and 5,737 without the
tagged ones; the 9 missing lines were the catalog's constructions, so that
item stays in.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01JHHJn12Lh5A6zoT1BX6D1P
…reach

Each test item's own line coverage of src/ (cleared before the item and
written after it, under CI=true) shows which slow items reach no line that
another item does not. Of the items taking 1.5 s or more, the slowest such
items are tagged :skipci, one at a time, as long as every line stays
reached. Aqua, the pairwise random gate and the stability items stay in
whatever their lines, since line coverage does not see what they check.

Untagged, the 326 remaining items reach all 5,713 lines that the 400 items
reach. A --ci run locally on Julia 1.13 takes 3m39s, and 4m31s with the flags
julia-runtest passes (coverage and --check-bounds=yes).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01JHHJn12Lh5A6zoT1BX6D1P

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant