From 7d277e52bdb586a7793492757ad7015b5929c665 Mon Sep 17 00:00:00 2001 From: rootiest Date: Wed, 17 Jun 2026 21:17:44 -0400 Subject: [PATCH] test(agents-tools): cover version-bump prepmsg suffix --- .gitattributes | 3 ++ scripts/agents-tools/hooks/pre-commit | 3 ++ scripts/agents-tools/hooks/prepare-commit-msg | 3 ++ scripts/agents-tools/test-version-bump.sh | 46 +++++++++++++++++++ 4 files changed, 55 insertions(+) create mode 100644 .gitattributes create mode 100755 scripts/agents-tools/hooks/pre-commit create mode 100755 scripts/agents-tools/hooks/prepare-commit-msg diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..e444dd9 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,3 @@ +# Explicitly exclude agents-tools scripts from Git LFS auto-tracking. +# These are small shell scripts that must be stored as regular git objects. +scripts/agents-tools/** !filter !diff !merge text eol=lf diff --git a/scripts/agents-tools/hooks/pre-commit b/scripts/agents-tools/hooks/pre-commit new file mode 100755 index 0000000..676cb31 --- /dev/null +++ b/scripts/agents-tools/hooks/pre-commit @@ -0,0 +1,3 @@ +#!/usr/bin/env bash +# agents-tools-version: 1 +exec "$(git rev-parse --show-toplevel)/.agents-tools/version-bump" precommit diff --git a/scripts/agents-tools/hooks/prepare-commit-msg b/scripts/agents-tools/hooks/prepare-commit-msg new file mode 100755 index 0000000..5d4ef84 --- /dev/null +++ b/scripts/agents-tools/hooks/prepare-commit-msg @@ -0,0 +1,3 @@ +#!/usr/bin/env bash +# agents-tools-version: 1 +exec "$(git rev-parse --show-toplevel)/.agents-tools/version-bump" prepmsg "$1" diff --git a/scripts/agents-tools/test-version-bump.sh b/scripts/agents-tools/test-version-bump.sh index 6a764fe..942643d 100644 --- a/scripts/agents-tools/test-version-bump.sh +++ b/scripts/agents-tools/test-version-bump.sh @@ -38,3 +38,49 @@ git add -A; "$SCRIPT" precommit; git commit -q -m content2 cd /; rm -rf "$r" echo "precommit OK" + +# ── prepmsg: subject suffix + idempotency ──────────────────────────────────── +r="$(new_repo)"; cd "$r" +echo 1.2.3 > .version +msg="$(mktemp)" +printf 'chore: do thing\n' > "$msg" +"$SCRIPT" prepmsg "$msg" +head -n1 "$msg" | grep -qF 'chore: do thing (v1.2.3)' || fail "prepmsg: subject not suffixed" +"$SCRIPT" prepmsg "$msg" +[ "$(grep -c '(v1.2.3)' "$msg")" -eq 1 ] || fail "prepmsg: not idempotent" + +# body preserved +printf 'subject\n\nbody line\n' > "$msg" +echo 2.0.0 > .version +"$SCRIPT" prepmsg "$msg" +head -n1 "$msg" | grep -qF 'subject (v2.0.0)' || fail "prepmsg: body-case subject" +grep -qF 'body line' "$msg" || fail "prepmsg: body lost" + +rm -f "$msg"; cd /; rm -rf "$r" +echo "prepmsg OK" + +# ── end-to-end via real hooks + core.hooksPath ─────────────────────────────── +r="$(new_repo)"; cd "$r" +mkdir -p .agents-tools/hooks +cp "$HERE/version-bump" .agents-tools/version-bump +cp "$HERE/hooks/pre-commit" .agents-tools/hooks/pre-commit +cp "$HERE/hooks/prepare-commit-msg" .agents-tools/hooks/prepare-commit-msg +chmod +x .agents-tools/version-bump .agents-tools/hooks/pre-commit .agents-tools/hooks/prepare-commit-msg +git config core.hooksPath .agents-tools/hooks +echo 1.0.0 > .version +mkdir -p plans; : > plans/.gitkeep +git add -A; git commit -q -m "init" +[ "$(cat .version)" = 1.0.0 ] || fail "e2e baseline: want 1.0.0 got $(cat .version)" +git log -1 --pretty=%s | grep -qF 'init (v1.0.0)' || fail "e2e baseline message: $(git log -1 --pretty=%s)" + +mkdir -p specs; : > specs/.gitkeep +git add -A; git commit -q -m "add specs" +[ "$(cat .version)" = 1.1.0 ] || fail "e2e structure: want 1.1.0 got $(cat .version)" +git log -1 --pretty=%s | grep -qF 'add specs (v1.1.0)' || fail "e2e structure message: $(git log -1 --pretty=%s)" + +echo z > specs/z.md +git add -A; git commit -q -m "edit spec" +[ "$(cat .version)" = 1.1.1 ] || fail "e2e content: want 1.1.1 got $(cat .version)" + +cd /; rm -rf "$r" +echo "e2e OK"