Release 0.46.0
Release 0.46.0 makes it easier to choose tests, investigate failures that happen only sometimes, and publish results from automated checks. It also fixes reports that could contain zero tests after running tests at the same time.
Inspect and select a run
--changed selects test files Git reports as changed since a chosen commit or branch. It includes changes prepared for a commit, other edits, and new files not yet tracked by Git. It selects changed test files, rather than finding every test affected by a source-code change. Use --list to inspect the selected tests without executing them (#1010, #1007).
bashunit tests/ --changed origin/main --list
bashunit tests/ --list --list-format jsonTag expressions can require two tags together with AND or leave out a tag with NOT. Repeating --tag still selects tests that match any of those options. --exclude-filter excludes matching test names even when another option selected them. --order-by defects runs the previous failures first while still running every selected test.
Find tests that fail only sometimes
--repeat runs every selected test several times, reports one combined result, and identifies which repetition failed. Tests that pass only after a retry are now counted separately as flaky, with the first failure included in reports. They still count as passed, so the run can succeed. Use --fail-on-flaky to make those results fail the run (#1013, #1012).
bashunit tests/ --repeat 20 --filter flaky_candidate
bashunit tests/ --retry 2 --fail-on-flakyPublish useful reports from automated checks
JSON, TAP, HTML, and JUnit file reports now collect results correctly under --parallel. JUnit groups tests by file, includes their recorded output, and carries informative failure messages. Markdown summaries can appear in the GitHub Actions step summary. Automatic error notices in Actions point to the failing file and line (#1004, #1016).
Coverage reports which lines the tests reach. It gains the Cobertura XML format used by other automated-check tools. --coverage-diff limits the report and minimum-percentage check to changed lines:
bashunit tests/ --coverage --coverage-diff origin/main --coverage-min 90Preparing coverage reports also avoids starting an extra process to decide whether each source line can run. New checks test whether a number falls within a range and whether a command is available. Invalid numbers and failures from checks you define now receive clearer handling.
See the full changelog for 0.46.0 on GitHub.