class ZSpec::Worker

Constants

APPLICATION_FILE

Public Class Methods

new(queue:, tracker:) click to toggle source
# File lib/zspec/worker.rb, line 5
def initialize(queue:, tracker:)
  @queue   = queue
  @tracker = tracker
end

Public Instance Methods

work() click to toggle source
# File lib/zspec/worker.rb, line 10
def work
  require APPLICATION_FILE if File.exist? APPLICATION_FILE
  @queue.pending_queue.each do |spec|
    next if spec.nil?
    puts "running: #{spec}"
    fork do
      run_specs(spec, StringIO.new)
    end
    Process.waitall
    fail if $?.exitstatus != 0
    puts "completed: #{spec}"
  end
end

Private Instance Methods

run_specs(spec, stdout) click to toggle source
# File lib/zspec/worker.rb, line 26
def run_specs(spec, stdout)
  formatter = ZSpec::Formatter.new(
    queue: @queue, tracker: @tracker, stdout: stdout, message: spec
  )
  configuration = ::RSpec.configuration
  configuration.add_formatter(formatter)
  options = ::RSpec::Core::ConfigurationOptions.new(["--backtrace", spec])
  runner = ::RSpec::Core::Runner.new(options, configuration)
  def runner.trap_interrupt() end
  runner.run($stderr, stdout)
end