Review findings #5 and #7 on PR #95 flagged two bash-3.2-incompatible
patterns despite the surrounding scripts claiming 3.2 safety:
- tests/run-bats.sh used `mapfile` (bash 4.0+), which fails immediately
under macOS's stock bash 3.2 before any batching logic runs. Replaced
with the `while read` loop already established in tests/run-tests.sh,
and guarded the two downstream `${TEST_FILES[@]}` expansions with
`${arr[@]+"${arr[@]}"}` to match that file's convention.
- `trap 'rm -rf "${CLEANUP_DIRS[@]}"' EXIT` was unguarded in
tests/test-sync-marketplace-mirror.sh and
tests/test-sync-plugin-content.sh: under `set -u`, if `mktemp -d`
fails before the array is populated, the trap itself throws an
unbound-variable error that masks the real test failure. A repo-wide
grep for the same pattern turned up a third, unreviewed instance in
tests/test-check-release-needed.sh. Fixed all three with the guarded
idiom already used elsewhere in the repo.
Extended the existing bash-3.2-hazard static check (test 16 in
tests/test-vale-wrap.sh) to scan all four fixed files going forward,
so a regression of either pattern fails the suite instead of only
surfacing on a real bash 3.2 host.
Refs: PR #95
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01X7GvKuJfy2WrdBmUttV4DT