Tork runs your tests as they change, in parallel:
Absorbs test execution overhead into a master process.
Forks to inherit overhead and run test files in parallel.
Avoids running unchanged tests inside changed test files.
Version 19.5.0 (2013-11-30)
This release adds a tork-runner(1) program for non-interactive test
makes connections to tork subprocesses self-healing, eliminates “address
already in use” errors, and fixes bugs in tork-herald(1) and
Add tork-runner(1) to run tests once, non-interactively, and then
You can use tork-runner(1) to run your test suite in one shot and
exit with a nonzero status if tests failed, similar to
Add Tork::Bridge to make connections to tork subprocesses
When a tork subprocess terminates, its parent process now replaces
with a fresh instance. Thus the tork process tree is now
Server: become a remote control to existing instance on socket fail.
If an another instance of this tork program is already running, then
become a remote to it rather than failing on binding its socket
This lets you run the same tork program more than once in the same
directory; latter runs will become remote controls for the first
This also lets you run an instance of tork(1) for interactive usage
then run tork-runner(1) in another terminal in the same working
to re-use the former’s resources to run your test suite
tork(1): show help message to clients upon connecting.
tork(1): tell user to input ‘h’ key for help message.
tork-notify(1): must pass mutable local variables into Thread.new.
iconlocal variable would be overwritten (to nil sometimes)
outside of the thread and cause the thread body to silently fail.
See http://stackoverflow.com/q/16745840 for details.
Socket files were always deleted: even if not ours.
If a tork instance was already running and a new tork instance was
started up in the same directory, then the latter would always
the common socket files (currently belonging to the former) upon
Fail earlier on socket bind: avoid wasted overhead.
Before this patch, tork-master(1) would first pay the price of
the test execution overhead before trying to bind its socket. In
of socket bind failure, the process would exit and the overhead
Server: don’t call method for empty command array.
This error would occur when pressing ENTER in tork-remote
tork-driver: #<ArgumentError: no method name given> tork-driver: /home/skurapati/lab/tork/lib/tork/server.rb:74:in
recv' tork-driver: /home/skurapati/lab/tork/lib/tork/driver.rb:64:inrecv’
block (2 levels) in loop' tork-driver: /home/skurapati/lab/tork/lib/tork/server.rb:37:ineach’
block in loop' tork-driver: /home/skurapati/lab/tork/lib/tork/server.rb:35:incatch’
loop' tork-driver: /home/skurapati/lab/tork/lib/tork/driver.rb:21:inloop’
<top (required)>' tork-driver: /home/skurapati/.rvm/gems/ruby-1.9.3-p448/bin/tork-driver:23:inload’
tork-herald(1): listen 2.2.0 gem is non-blocking and gives absolute
Calling #start no longer blocks the caller.
:relative_pathsoption no longer works:
tork-herald(1): downgrade to listen 1.x gem to maintain Ruby 1.8
GH-56: specify license in gemspec for rubygems.org.
Document sh(1) word splitting in manual pages of all tork servers.
ps ufto visualize process hierarchy.