Bashunit pre-release

Run comprehensive pre-release validation checklist

install
source · Clone the upstream repo
git clone https://github.com/TypedDevs/bashunit
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/TypedDevs/bashunit "$T" && mkdir -p ~/.claude/skills && cp -r "$T/.claude/skills/pre-release" ~/.claude/skills/typeddevs-bashunit-pre-release && rm -rf "$T"
manifest: .claude/skills/pre-release/SKILL.md
source content

Pre-Release Validation

Run all checks before releasing a new bashunit version.

Checklist

1. Version Consistency

Verify version matches across:

package.json
,
CHANGELOG.md
,
src/bashunit.sh

2. Full Test Suite

./bashunit tests/unit/
./bashunit tests/functional/
./bashunit tests/acceptance/
./bashunit tests/
./bashunit --parallel tests/

All must pass. Run 3-5 times to catch flaky tests.

3. Static Analysis & Formatting

make sa           # ShellCheck — zero warnings
make lint         # EditorConfig — clean
shfmt -l .        # Check formatting (don't modify)

4. Documentation

  • CHANGELOG.md
    — version section complete with all changes
  • README.md
    — examples current, no broken links
  • No remaining TODOs/FIXMEs in docs

5. Bash 3.0+ Compatibility

grep -rn '\[\[' src/            # Should not use [[
grep -rn 'declare -A' src/      # No associative arrays
grep -rn '\${.*,,}' src/        # No case conversion

6. Cross-Platform (if Docker available)

make docker/alpine
make docker/ubuntu

7. Security Scan

No hardcoded secrets, no unsafe eval, input validation present.

8. Breaking Changes

Review

git log
since last release. Breaking changes must be documented with migration guide.

9. Git & CI Status

  • Working directory clean
  • All CI checks passing:
    gh run list --limit 5

10. Smoke Test

./bashunit --help
./bashunit --version
echo 'function test_smoke() { assert_equals "1" "1"; }' > /tmp/smoke_test.sh
./bashunit /tmp/smoke_test.sh
rm /tmp/smoke_test.sh

Output

Report each check as pass/fail/warning. Only proceed to release when ALL checks pass.

After Validation

git tag -a vX.Y.Z -m "Release vX.Y.Z"
git push origin vX.Y.Z