Release 0.50.1
Release 0.50.1 focuses on cleanup. Setup and cleanup functions now release resources after failures, early stops, invalid test settings and interrupted runs. This works both when tests run one after another and when they run at the same time.
Shared files stay available until their tests finish
With --parallel, tear_down_after_script now runs after all tests in its own file finish. A file or other resource created by set_up_before_script therefore stays available while those tests use it (#1320).
The same cleanup function runs when setup fails, when --stop-on-failure ends a sequential run, or when invalid @timeout or @retry settings stop a test file. Benchmark files also run their cleanup function before stopping because of an invalid test setting (#1318, #1321, #1322, #1329).
Cleanup after interruption
Ctrl-C runs the interrupted file's cleanup function. When tests run at the same time, it also runs the cleanup for a test still in progress. The shell process responsible for those tests handles the interruption. A second Ctrl-C ends a sequential run even if cleanup does not finish (#1323, #1331).
A test stopped by --test-timeout gets a chance to run tear_down. There is still a time limit on cleanup before bashunit forcibly stops it, so a cleanup function that hangs cannot keep the run open indefinitely (#1324).
Temporary files created outside a test function with bashunit::temp_file are also removed when their test file fails to load.
Errors reach automated checks
Invalid timeout or retry settings now fail the overall parallel run, even when another file passes. Previously one test process could print the error while the main process still reported success (#1335). Cleanup and the final result now reflect what happened in each file.
See the full changelog for 0.50.1 on GitHub.