Tork 19.5.0 - test with fork

Manuals: http://sunaku.github.io/tork
Sources: https://github.com/sunaku/tork

Tork runs your tests as they change, in parallel:

  1. Absorbs test execution overhead into a master process.

  2. Forks to inherit overhead and run test files in parallel.

  3. 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 to rake 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 icon local 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
    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:inrecv’
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:ineach’
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:incatch’
tork-driver: /home/skurapati/lab/tork/lib/tork/server.rb:35:in
loop' tork-driver: /home/skurapati/lab/tork/lib/tork/driver.rb:21:inloop’
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:inload’
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.

  • 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 uf to visualize process hierarchy.

This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.

| Privacy Policy | Terms of Service | Remote Ruby Jobs