#!/usr/bin/env bash # Checks commit prose and trailers with the commit message hook. set -euo pipefail cd "$(dirname "$0")/.." work=$(mktemp -d) trap 'rm -rf "$work"' EXIT accept() { cat > "$work/message" if ! sh .githooks/commit-msg "$work/message" > "$work/output" 2>&1; then printf 'commit-msg-test: valid message rejected\n' >&2 cat "$work/output" >&2 exit 1 fi } reject() { cat > "$work/message" if sh .githooks/commit-msg "$work/message" > "$work/output" 2>&1; then printf 'commit-msg-test: invalid message accepted\n' >&2 cat "$work/message" >&2 exit 1 fi grep -q "$1" "$work/output" } # The next word has 13 characters. Its preceding line has 60, so the # combined line has 74 characters and cannot fit the 72-column limit. accept <<'MESSAGE' Reflow comments and expand event literals Comment paragraphs use the repository reflow tool, and event literals put each field on its own line. The Telegram request comment distinguishes method-bearing setup errors from safe network causes. Code behavior and error values stay unchanged. Issue: 3cdc678 MESSAGE reject 'unnecessary line break after line 3' <<'MESSAGE' Reflow comments and expand event literals Comment paragraphs use the repository reflow tool, and event literals put each field on its own line. The Telegram request comment distinguishes method-bearing setup errors from safe network causes. Code behavior and error values stay unchanged. Issue: 3cdc678 MESSAGE accept <<'MESSAGE' Check a filled paragraph The paragraph fills each line before the next word starts another line. Its next word does not fit the line before it. Issue: abc1234 MESSAGE reject 'longer than 72 characters' <<'MESSAGE' Reject a wide paragraph This paragraph has more than seventy-two characters because this extra word extends it. Issue: abc1234 MESSAGE reject 'unnecessary line break after line 3' <<'MESSAGE' Reject a short paragraph line This line can hold the next word. Issue: abc1234 MESSAGE accept <<'MESSAGE' Keep trailer lines separate The message has a body. Issue: abc1234 Parent: def5678 MESSAGE accept <<'MESSAGE' Keep formatted blocks separate - First list item - Second list item first example line second example line Issue: abc1234 MESSAGE printf 'commit-msg-test: all cases pass\n'