DeepTest

DeepTest enables tests to run in parallel using multiple processes.

Usage

In your Rakefile:

require "rubygems"
require "deep_test/rake_tasks"

# sample DeepTest task

DeepTest::TestTask.new "task_name" do |t|
  t.number_of_workers = 2   # optional, defaults to 2
  t.timeout_in_seconds = 30 # optional, defaults to 30
  t.pattern = "test/**/*_test.rb"
end

# Sample SpecTask using DeepTest

Spec::Rake::SpecTask.new(:deep_spec) do |t|
  t.spec_files = FileList['spec/**/*_spec.rb']
  t.deep_test :number_of_workers => 2,   # optional, defaults to 2
              :timeout_in_seconds => 30, # optional, defaults to 30
end

If you want to specify a listener to be notified of worker events:

In my_worker_listener.rb

class MyWorkerListener
  def starting(worker)
  end

  def starting_work(worker, work_unit)
  end

  def finished_work(worker, work_unit, result)
  end
end

In your Rakefile

DeepTest::TestTask.new "task_name" do |t|
  t.pattern = "test/**/*_test.rb"
  t.worker_listener = "MyWorkerListener"
end

An instance of MyWorkerListener will be created for each worker that is started, and will receive events from that worker. However, you must ensure that the MyWorkerListener class is loaded at the time that the test files are loaded, so it is available to be instantiated.

Contributors

* anonymous z * Alex Chaffee * Dan Manges * David Vollbracht +* Scott Taylor

License

Released under Ruby’s license