Release 0.49.0
Release 0.49.0 distinguishes a run with no matching tests from a path that does not exist. It also lists available tags and fixes problems that could stop a large test run before all its tests had executed.
Allow a run with no tests deliberately
By default, finding no tests remains a failure. --pass-with-no-tests allows that case to succeed while still printing “No tests found”. This helps when automated checks split tests across machines and one machine has none to run, or when none of the changed files contain tests (#1263).
bashunit --changed origin/main --pass-with-no-tests tests/A path that does not exist is still an error. An empty folder you explicitly select also no longer makes bashunit run BASHUNIT_DEFAULT_PATH instead. The runner cannot report success for a different set of tests from the one you requested.
Find the tags you can select
--list-tags prints the selected files' tags in sorted order, without duplicates, and runs no tests:
bashunit --list-tags tests/
bashunit --tag slow tests/If a tag matches nothing, bashunit lists the tags it saw, or explains that no test has one. That makes a spelling mistake easier to distinguish from a run with no matching tests (#1265).
Keep large test runs complete
When running files one after another, bashunit now closes the file handles it uses. Previously those handles could reach the system limit, after which tests stopped checking results even though the run still reported success. In a test case with 120 files and a limit of 120 open handles, only two checks ran instead of 120 (#1271).
Cleanup after each test also stops searching the entire shared temporary folder. The recorded 100-test example fell from 978 ms to 542 ms with 5,000 leftover files present. Use bashunit::temp_file and bashunit::temp_dir for automatic cleanup; files written there by hand are no longer removed for you (#1269).
Snapshot files store expected test output. The commands that list or remove unused snapshots now find ones left by deleted or renamed test files. They still leave snapshots belonging to existing files outside the current run alone. Review the listed paths before deleting them: this release can remove more unused snapshots than earlier versions (#1194).
See the full changelog for 0.49.0 on GitHub.