class ZSpec::Scheduler

Public Class Methods

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

Public Instance Methods

schedule(args) click to toggle source
# File lib/zspec/scheduler.rb, line 8
def schedule(args)
  enqueue(
    extract(args)
    .uniq
    .map(&method(:normalize))
    .sort_by(&method(:runtime))
    .reverse
  )
end

Private Instance Methods

enqueue(examples) click to toggle source
# File lib/zspec/scheduler.rb, line 34
def enqueue(examples)
  @queue.enqueue(examples)
end
extract(args) click to toggle source
# File lib/zspec/scheduler.rb, line 20
def extract(args)
  configuration = ::RSpec.configuration
  ::RSpec::Core::ConfigurationOptions.new([args]).configure(configuration)
  configuration.files_to_run
end
normalize(file) click to toggle source
# File lib/zspec/scheduler.rb, line 38
def normalize(file)
  file.sub("#{Dir.pwd}/", "./")
end
runtime(example) click to toggle source
# File lib/zspec/scheduler.rb, line 30
def runtime(example)
  runtimes[example].to_i || 0
end
runtimes() click to toggle source
# File lib/zspec/scheduler.rb, line 26
def runtimes
  @runtimes ||= @tracker.all_runtimes
end