Sha256: cba981d376c95c1306dcf78f21eaeee795513fab779f59c5b006976fbef867cc

Contents?: true

Size: 1.5 KB

Versions: 1

Compression:

Stored size: 1.5 KB

Contents

module DeepTest
  class TestTask
    DEFAULT_NUMBER_OF_WORKERS = 2
    attr_writer :number_of_workers, :pattern

    def initialize(name = :deep_test)
      @name = name
      yield self if block_given?
      define
    end
    
    def define
      desc "Run '#{@name}' suite using DeepTest"
      task @name do
        begin
          deep_test_lib = File.expand_path(File.dirname(__FILE__) + "/..")
          $LOAD_PATH << deep_test_lib
          require "deep_test"
          warlock = DeepTest::Warlock.new
          
          # server
          warlock.start "server" do
            DeepTest::Server.start
          end
          sleep 0.25          

          # workers
          number_of_workers.times do |i|
            warlock.start "worker #{i}" do
              srand # re-seed random numbers
              ENV["RAILS_ENV"] = "test"
              Object.const_set "RAILS_ENV", "test"
              Dir.glob(pattern).each { |file| load file }
              blackboard = DeepTest::RindaBlackboard.new
              DeepTest::Worker.new(blackboard).run
            end
          end

          # loader
          loader = File.expand_path(File.dirname(__FILE__) + "/loader.rb")
          ruby "-I#{deep_test_lib} #{loader} '#{pattern}'"
        ensure
          warlock.stop_all if warlock
        end
      end
    end
    
    def number_of_workers
      @number_of_workers ? @number_of_workers.to_i : DEFAULT_NUMBER_OF_WORKERS
    end

    def pattern
      Dir.pwd + "/" + (@pattern || "test/**/*_test.rb")
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
deep_test-1.1.0 lib/deep_test/test_task.rb