class RSpec::Core::Bisect::SubsetEnumerator
Enumerates each subset of the given list of ids that is half the size of the total list, so that hopefully we can discard half the list each repeatedly in order to our minimal repro case. @private
Public Class Methods
new(ids)
click to toggle source
# File lib/rspec/core/bisect/subset_enumerator.rb, line 11 def initialize(ids) @ids = ids end
Public Instance Methods
each() { |subset| ... }
click to toggle source
# File lib/rspec/core/bisect/subset_enumerator.rb, line 19 def each yielded = Set.new slice_size = subset_size combo_count = 1 while slice_size > 0 @ids.each_slice(slice_size).to_a.combination(combo_count) do |combos| subset = combos.flatten next if yielded.include?(subset) yield subset yielded << subset end slice_size /= 2 combo_count *= 2 end end
subset_size()
click to toggle source
# File lib/rspec/core/bisect/subset_enumerator.rb, line 15 def subset_size @subset_size ||= (@ids.size / 2.0).ceil end