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