Release 0.37.0
New features
Profile the slowest tests
The new --profile flag reports your slowest tests after a run, so you can find what to speed up. It prints the top 10 by default, configurable with BASHUNIT_PROFILE_COUNT (#678):
bashunit --profile tests/
# show the 20 slowest
BASHUNIT_PROFILE_COUNT=20 bashunit --profile tests/Project config with .bashunitrc
Drop a .bashunitrc file at the root of your project to set defaults for everyone, no environment variables required. Keys map to the same BASHUNIT_* options and only apply when not already set, so command-line flags still win (#681):
# .bashunitrc
BASHUNIT_PARALLEL_RUN=true
BASHUNIT_SHOW_OUTPUT=true
BASHUNIT_PROFILE_COUNT=15Failures point to file:line
Failure output now tells you exactly where the failing test lives, appending at <file>:<line> so you can jump straight to it from your editor or CI log (#680).
Killed tests explain why
When a test process is killed, bashunit now classifies the cause instead of reporting a bare non-zero exit. Timeouts, SIGINT, SIGKILL/out-of-memory and SIGTERM each get a clear message (#683).
Readable snapshot diffs without git
Snapshot mismatches previously relied on git diff for a readable comparison. When git is not available, bashunit now renders its own line-by-line diff, so snapshot failures stay readable in minimal environments (#679).
Performance
This release trims forks and polling from the hot path:
- Result helpers return through global slots, dropping a subshell fork per call (#662).
generate_idandnormalize_variable_namedrop theirgrep/random_strforks (#663).- The coverage-enabled flag is cached instead of re-checked on every line (#664).
- The parallel runner uses
wait -non Bash 4.3+ instead of polling for finished jobs (#667). - Runtime-error detection collapses into a single
caseglob (#668).
Bug fixes
--strictno longer enables Bash 3.0's brokenpipefail(which wrongly reports failing pipelines as successful);pipefailis applied only on Bash >= 3.1.bashunit watchnow forwards--filterand other flags to the underlying run (#682).learnand coverage usemktemp -dfor their temporary directories.parallel::cleanuprefuses torm -rfany path outside*/bashunit/parallel/*.
See the full changelog for 0.37.0 on GitHub.