Manuals: http://sunaku.github.io/tork
Sources: GitHub - sunaku/tork: 💞 Tests your Ruby code, in parallel, as you change it
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
execution,
makes connections to tork subprocesses self-healing, eliminates “address
already in use” errors, and fixes bugs in tork-herald(1) and
tork-notify(1).
Minor:
-
Add tork-runner(1) to run tests once, non-interactively, and then
exit.You can use tork-runner(1) to run your test suite in one shot and
then
exit with a nonzero status if tests failed, similar torake test. -
Add Tork::Bridge to make connections to tork subprocesses
self-healing.When a tork subprocess terminates, its parent process now replaces
it
with a fresh instance. Thus the tork process tree is now
self-healing. -
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
file.This lets you run the same tork program more than once in the same
working
directory; latter runs will become remote controls for the first
instance!This also lets you run an instance of tork(1) for interactive usage
and
then run tork-runner(1) in another terminal in the same working
directory
to re-use the former’s resources to run your test suite
non-interactively. -
tork(1): show help message to clients upon connecting.
-
tork(1): tell user to input ‘h’ key for help message.
Patch:
-
tork-notify(1): must pass mutable local variables into Thread.new.
The
iconlocal variable would be overwritten (to nil sometimes)
outside of the thread and cause the thread body to silently fail.See ruby - When do you need to pass arguments to `Thread.new`? - Stack Overflow 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
delete
the common socket files (currently belonging to the former) upon
exit. -
Fail earlier on socket bind: avoid wasted overhead.
Before this patch, tork-master(1) would first pay the price of
absorbing
the test execution overhead before trying to bind its socket. In
case
of socket bind failure, the process would exit and the overhead
wasted. -
Server: don’t call method for empty command array.
This error would occur when pressing ENTER in tork-remote
tork-driver: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:in recv’
tork-driver: /home/skurapati/lab/tork/lib/tork/server.rb:46:in
block (2 levels) in loop' tork-driver: /home/skurapati/lab/tork/lib/tork/server.rb:37:in each’
tork-driver: /home/skurapati/lab/tork/lib/tork/server.rb:37:in
block in loop' tork-driver: /home/skurapati/lab/tork/lib/tork/server.rb:35:in catch’
tork-driver: /home/skurapati/lab/tork/lib/tork/server.rb:35:in
loop' tork-driver: /home/skurapati/lab/tork/lib/tork/driver.rb:21:in loop’
tork-driver: /home/skurapati/lab/tork/bin/tork-driver:173:in
<top (required)>' tork-driver: /home/skurapati/.rvm/gems/ruby-1.9.3-p448/bin/tork-driver:23:in load’
tork-driver:
/home/skurapati/.rvm/gems/ruby-1.9.3-p448/bin/tork-driver:23:in
`’
-
tork-herald(1): listen 2.2.0 gem is non-blocking and gives absolute
paths.-
Calling #start no longer blocks the caller.
-
The
:relative_pathsoption no longer works:
:relative_paths option doesn't work for single directory in 2.2.0 · Issue #170 · guard/listen · GitHub
-
-
tork-herald(1): downgrade to listen 1.x gem to maintain Ruby 1.8
support.
Other:
-
GH-56: specify license in gemspec for rubygems.org.
-
Document sh(1) word splitting in manual pages of all tork servers.
-
README: use
ps ufto visualize process hierarchy.