diff options
| author | Lukasz Kasprzak <lukas@labunix.xyz> | 2026-08-12 10:34:10 +0200 |
|---|---|---|
| committer | Lukasz Kasprzak <lukas@labunix.xyz> | 2026-08-12 10:34:10 +0200 |
| commit | 40e7d5c9fb8ec4f68c1ea4ace3835d987a272fcb (patch) | |
| tree | 7c5fc4a78b3fe8b89aa95a7be850816f42955ee4 /test/fixtures | |
| parent | 7ac8a25700c9d930eaaa4f9895665248dac32c52 (diff) | |
| download | colitur-40e7d5c9fb8ec4f68c1ea4ace3835d987a272fcb.tar.gz colitur-40e7d5c9fb8ec4f68c1ea4ace3835d987a272fcb.zip | |
test(validate): commit the exhaustive 1583-9999 sweep, gated not sampled
test_validate.ml's own prop_invariants samples 200 of 8 416 years
(2.4% of the domain) on a random seed -- QCheck.Test.make draws a fresh
one from the environment each run when none is given, and two consecutive
runs of this suite were observed using different seeds. CLAUDE.md's
standing claim that Validate is "clean across all 8 416 years --
exhaustive, not sampled" was true whenever it was last actually re-run in
full, but pinned by no committed artifact, and a year-specific regression
would show up in this suite only intermittently.
Added test_exhaustive_domain_sweep: every year 1583..9999 through
Validate.run, not a sample, with 9999 handled via the same documented
truncation test_year_9999_does_not_raise already pins (the domain ceiling
means the season-run check legitimately, and only, fires there).
Tagged `Slow, but NOT wired through Alcotest's -q/--quick-tests flag at
the dune level: that filtering is all-or-nothing per speed level, and
this codebase already tags six OTHER cases `Slow -- the two pre-existing
exhaustive Computus checks (fast, sub-second) and, found while
implementing this item, every QCheck property in the suite (test_date.ml
x3, test_overlay.ml, test_temporal_ef.ml, prop_invariants itself), since
QCheck_alcotest.to_alcotest defaults ~speed_level to `Slow when not given
explicitly and no call site in this codebase overrides it. Wiring
`(action (run %{test} -q))` into test/dune was tried and reverted: it
dropped the default `dune test`'s reported count from 260 to 251,
silently excluding prop_invariants itself -- the project's own
"confidence-to-9999" property -- along with five others, a far bigger
regression than the one test this item asks to add.
Instead the new test gates its own body on an environment variable,
COLITUR_EXHAUSTIVE_SWEEP, and calls Alcotest.skip when unset -- reported
honestly as SKIP, not a vacuous pass, and not counted toward "tests run".
Default `dune test` is therefore unaffected (259 tests run, same as
before this commit, 1 skipped) and stays at ~2.6s. Run the real sweep
with:
COLITUR_EXHAUSTIVE_SWEEP=1 dune test --force
Measured runtime: ~49-53s (three separate invocations, including dune's
own build/dependency-check overhead), against the ~35-45s estimate --
same order of magnitude, reported as measured rather than adjusted to
match the estimate.
No behaviour change to any existing test. Verified byte-identical
`colitur day` output across 1583, 1900, 1902, 2008, 2011, 2026, 2038,
9999, both with and without COLITUR_EXHAUSTIVE_SWEEP set.
Diffstat (limited to 'test/fixtures')
0 files changed, 0 insertions, 0 deletions
