class CI::Queue::Bisect

Attributes

config[R]

Public Class Methods

new(path, config) click to toggle source
# File lib/ci/queue/bisect.rb, line 5
def initialize(path, config)
  @tests = ::File.readlines(path).map(&:strip).reject(&:empty?).take_while { |t| t != config.failing_test }
  @config = config
end

Public Instance Methods

candidates() click to toggle source
# File lib/ci/queue/bisect.rb, line 30
def candidates
  Static.new(first_half + [config.failing_test], config).populate(@all_tests)
end
failed!() click to toggle source
# File lib/ci/queue/bisect.rb, line 34
def failed!
  @tests = first_half
end
failing_test() click to toggle source
# File lib/ci/queue/bisect.rb, line 26
def failing_test
  Static.new([config.failing_test], config).populate(@all_tests)
end
populate(all_tests, random: nil) click to toggle source
# File lib/ci/queue/bisect.rb, line 14
def populate(all_tests, random: nil)
  @all_tests = all_tests
end
size() click to toggle source
# File lib/ci/queue/bisect.rb, line 10
def size
  @tests.size
end
succeeded!() click to toggle source
# File lib/ci/queue/bisect.rb, line 38
def succeeded!
  @tests = second_half
end
suspects_left() click to toggle source
# File lib/ci/queue/bisect.rb, line 22
def suspects_left
  @tests.size
end
to_a() click to toggle source
# File lib/ci/queue/bisect.rb, line 18
def to_a
  @tests + [config.failing_test]
end

Private Instance Methods

first_half() click to toggle source
# File lib/ci/queue/bisect.rb, line 50
def first_half
  slices.first
end
second_half() click to toggle source
# File lib/ci/queue/bisect.rb, line 54
def second_half
  slices.last
end
slices() click to toggle source
# File lib/ci/queue/bisect.rb, line 46
def slices
  @tests.each_slice((@tests.size / 2.0).ceil).to_a
end