test-loop - Continuous testing for Ruby with fork/eval
What is it?
test-loop is a fast continuous testing tool for Ruby that automatically
detects and tests changes in your application in an efficient manner:
- Absorbs the test execution overhead into the main Ruby process.
- Forks to run your test files without overhead and in parallel.
- Avoids running unchanged test blocks inside changed test files.
What is new?
Resume currently running tests–as well as those currently needing to
be run–after reabsorbing test execution overhead. (Brian B.)
Stop currently running tests (and wait for them to finish) before
reabsorbing overhead. This greatly improves responsiveness because
worker processes are no longer there to compete with the new master
process for system resources.
Notify user when running all tests and when exiting. (Brian B.)
Notify user when overhead changes instead of when restarting the loop.
Use ANSI clear line command to erase control-key combinations
outputted by shells such as BASH and ZSH in test-loop’s output.
@last_ran_atwas being set during every iteration of the loop. This
is problematic when Ruby’s
Time.nowis more precise than your
filesystem’s modification timestamp. For example, in the ext3
filesystem under Linux, file modification timestamps have a precision
of 1 second. (Brian B.)
Exit gently on SIGINT by sending SIGTERM to all worker processes and
then running waitall(), instead of sending SIGKILL to the entire
process group. As a result, test-loop no longer exits with a non-zero
status upon SIGINT.
Remove ‘ansi’ gem dependency. (Brian B.)
Add tip on deleting logs for passing tests. (Brian B.)
Add tip on monitoring test processes with watch(1) in README.