class Corleone::Emitter::RSpec

Public Class Methods

new(dir, workers) click to toggle source
# File lib/corleone/emitter/rspec.rb, line 7
def initialize(dir, workers)
  @dir = dir
  @workers = workers

  process_items
end

Public Instance Methods

empty?() click to toggle source
# File lib/corleone/emitter/rspec.rb, line 42
def empty?
  item_queue.empty?
end
item_queue() click to toggle source
# File lib/corleone/emitter/rspec.rb, line 28
def item_queue
  @item_queue ||= Queue.new
end
pop() click to toggle source
# File lib/corleone/emitter/rspec.rb, line 32
def pop
  Corleone::Message::Item.new(item_queue.pop)
end
process_items() click to toggle source
# File lib/corleone/emitter/rspec.rb, line 36
def process_items
  spec_groups.each do |group|
    item_queue << Corleone::Message::Item.new(group)
  end
end
runner_args() click to toggle source
# File lib/corleone/emitter/rspec.rb, line 46
def runner_args
  Corleone::Message::RunnerArgs.new(nil)
end
spec_files() click to toggle source
# File lib/corleone/emitter/rspec.rb, line 14
def spec_files
  Dir.glob(File.join(@dir, '**/*spec.rb'))
end
spec_groups() click to toggle source
# File lib/corleone/emitter/rspec.rb, line 18
def spec_groups
  groups = @workers.times.map { [] }

  spec_files.shuffle.each_with_index do |item, i|
    groups[i % @workers] << item
  end

  groups
end