summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorLukasz Kasprzak <lukas@labunix.xyz>2026-08-17 16:19:02 +0200
committerLukasz Kasprzak <lukas@labunix.xyz>2026-08-17 16:19:02 +0200
commitcc6655134e155dd0879ecb8eb009271e17488834 (patch)
tree31dc6c6be64f03d02a1067644e04e904d7312167 /test
parent7055723f8b79240ab2df1353eaaf3761f65414a9 (diff)
downloadcolitur-cc6655134e155dd0879ecb8eb009271e17488834.tar.gz
colitur-cc6655134e155dd0879ecb8eb009271e17488834.zip
feat(cli): --version, a CHANGELOG, and a release target
Groundwork for tagging. The project had no version anywhere: not in dune-project, not in the binary, no CHANGELOG, no tags. The version lives in two places -- dune-project, which generates colitur.opam, and a constant in bin/main.ml, which is what --version prints. Two rather than one because dune's watermarking only substitutes in a release tarball, so a binary built the ordinary way from a checkout would report a placeholder. The release target rewrites both and then re-checks both, and finally requires the freshly built binary to report the version it just wrote: a release that bumped one and not the other would ship a binary disagreeing with its own package metadata. --version is deliberately not embedded in the help text. cli.t pins help's first line, and a version there would mean editing a test expectation every release for no gain. The release target mirrors lectio's, refusals included: no release from a dirty tree, none without a CHANGELOG entry for that version, none whose version bump silently failed to apply, and `make check` -- the full 1583-9999 sweep, not the sampling suite -- must pass before the tag is created.
Diffstat (limited to 'test')
-rw-r--r--test/cli.t18
1 files changed, 18 insertions, 0 deletions
diff --git a/test/cli.t b/test/cli.t
index d7e86f7..419e7f0 100644
--- a/test/cli.t
+++ b/test/cli.t
@@ -241,3 +241,21 @@ Every command the help lists is a command the binary actually accepts. This
is the check that catches help text drifting away from the dispatch:
$ for c in easter temporal day readings; do colitur $c 2026 > /dev/null || echo "$c FAILED"; done
+
+--version prints the version alone, to standard output, exit 0. Deliberately
+not embedded in the help text above: this pin would then have to be edited
+every release, for no gain. The Makefile's release target asserts the built
+binary reports the version it just wrote, so the two cannot drift.
+
+ $ colitur --version
+ 0.1.0
+
+ $ colitur -V
+ 0.1.0
+
+Agreement with the package metadata (dune-project's own (version ...), which
+generates colitur.opam) is NOT asserted here: the cram sandbox has no source
+tree to read dune-project from. It is asserted in the Makefile's release
+target instead, which rewrites both and then requires the freshly built
+binary to report the version it just wrote -- the point in time where a drift
+between the two could actually be introduced.