fix(tests): auto-init submodules when bats binary is missing

Fresh worktrees don't have submodules checked out, so the pre-push
run-tests hook failed on first push with a manual-fix error message.
run-bats.sh now runs `git submodule update --init --recursive`
automatically instead of just printing instructions.

Also records two lessons from working across bare-repo/worktree
boundaries this session: the repo root has no working tree (edits
there are invisible to git), and local remote-tracking refs go stale
after a merge — verify via the Gitea API before asking about cleanup.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01FNJWdVvdgvZCHi1hZGqgVQ
This commit is contained in:
2026-07-05 13:47:39 +00:00
parent 3b4763ece9
commit 096120d12e
2 changed files with 14 additions and 2 deletions

View File

@@ -7,8 +7,12 @@ REPO_ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
BATS="$REPO_ROOT/tests/bats/bin/bats"
if [[ ! -x "$BATS" ]]; then
echo "Error: bats not found at $BATS" >&2
echo " Run: git submodule update --init --recursive" >&2
echo "bats not found at $BATS — initializing submodules..." >&2
git -C "$REPO_ROOT" submodule update --init --recursive
fi
if [[ ! -x "$BATS" ]]; then
echo "Error: bats still not found at $BATS after submodule init" >&2
exit 1
fi