Module: RSpec::Signal::Grouper
- Defined in:
- lib/rspec/signal/grouper.rb
Overview
Collapses failures that share a fingerprint into Groups.
Ordering is deterministic: biggest group first, ties broken by the order the failures were seen, so two runs of the same suite produce byte-identical reports.
Class Method Summary collapse
Class Method Details
.call(failures) ⇒ Array<Group>
15 16 17 18 19 20 21 22 23 24 25 |
# File 'lib/rspec/signal/grouper.rb', line 15 def call(failures) groups = {} failures.each_with_index do |failure, index| key = failure.fingerprint.digest groups[key] ||= Group.new(fingerprint: failure.fingerprint, first_seen: index) groups[key] << failure end groups.values.sort_by { |group| [-group.size, group.first_seen] } end |