Sha256: 8ef7d3edf5019ea56127ead74a0934d71ff1d72392c99c982e9e8c7c6d64fe5c

Contents?: true

Size: 1.09 KB

Versions: 1

Compression:

Stored size: 1.09 KB

Contents

require_relative '../parallel_tests'
require 'tempfile'

module Zeus::ParallelTests
  class Worker
    def self.command(suite)
      "ruby #{__FILE__} #{suite}"
    end

    def initialize(suite, env, argv)
      @env = env
      @argv = argv
      @suite = suite
    end

    def call
      system %{zeus parallel_#{@suite}_worker #{parallel_tests_attributes}}
      args_file.unlink
      $?.to_i
    end

    private

    def parallel_tests_attributes
      [test_env_number.to_s,
       @env['PARALLEL_TEST_GROUPS'],
       args_file.path].join(' ')
    end

    def args_file
      @args_file ||= begin
                       Tempfile.new("rspec_args").tap do |file|
                         @argv.each do |arg|
                           file.puts arg
                         end
                         file.close
                       end
                     end
    end

    def test_env_number
      @env['TEST_ENV_NUMBER'] != "" && @env['TEST_ENV_NUMBER'] || 1
    end
  end
end

if $PROGRAM_NAME == __FILE__
  argv = ARGV.dup
  exit Zeus::ParallelTests::Worker.new(argv.shift, ENV, argv).call.to_i
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
zeus-parallel_tests-0.2.0.beta1 lib/zeus/parallel_tests/worker.rb