File: formatter.rb

package info (click to toggle)
ruby-rspec-retry 0.6.2-2
  • links: PTS, VCS
  • area: main
  • in suites: bookworm, forky, sid, trixie
  • size: 220 kB
  • sloc: ruby: 574; makefile: 6
file content (56 lines) | stat: -rw-r--r-- 1,514 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
require 'rspec/core/formatters/base_text_formatter'

class RSpec::Retry::Formatter < RSpec::Core::Formatters::BaseTextFormatter
  RSpec::Core::Formatters.register self, :example_passed

  def initialize(output)
    super(output)
    @tries = Hash.new { |h, k| h[k] = { successes: 0, tries: 0 } }
  end

  def seed(_); end

  def message(_message); end

  def close(_); end

  def dump_failures(_); end

  def dump_pending(_); end

  def dump_summary(notification)
    summary = "\nRSpec Retry Summary:\n"
    @tries.each do |key, retry_data|
      next if retry_data[:successes] < 1 || retry_data[:tries] <= 1
      summary += "\t#{key.location}: #{key.full_description}: passed at attempt #{retry_data[:tries]}\n"
    end
    retried = @tries.count { |_, v| v[:tries] > 1  && v[:successes] > 0 }
    summary += "\n\t#{retried} of #{notification.example_count} tests passed with retries.\n"
    summary += "\t#{notification.failure_count} tests failed all retries.\n"
    output.puts summary
  end

  def example_passed(notification)
    increment_success notification.example
  end

  def retry(example)
    increment_tries example
  end

  private

  def increment_success(example)
    # debugger
    previous = @tries[example]
    @tries[example] = {
      successes: previous[:successes] + 1, tries: previous[:tries] + 1 }
  end

  def increment_tries(example)
    # debugger
    previous = @tries[example]
    @tries[example] = {
      successes: previous[:successes], tries: previous[:tries] + 1 }
  end
end