Class: KnapsackPro::Formatters::RSpecQueueSummaryFormatter

Inherits:
RSpec::Core::Formatters::BaseFormatter
  • Object
show all
Defined in:
lib/knapsack_pro/formatters/rspec_queue_summary_formatter.rb

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(output) ⇒ RSpecQueueSummaryFormatter

Returns a new instance of RSpecQueueSummaryFormatter.



108
109
110
111
# File 'lib/knapsack_pro/formatters/rspec_queue_summary_formatter.rb', line 108

def initialize(output)
  super
  self.class.registered_output = output
end

Class Method Details

.most_recent_failures_summaryObject



35
36
37
38
# File 'lib/knapsack_pro/formatters/rspec_queue_summary_formatter.rb', line 35

def self.most_recent_failures_summary
  @most_recent_failures_summary ||= {}
  @most_recent_failures_summary[ENV['KNAPSACK_PRO_QUEUE_ID']] || []
end

.most_recent_failures_summary=(fully_formatted_failed_examples) ⇒ Object



29
30
31
32
33
# File 'lib/knapsack_pro/formatters/rspec_queue_summary_formatter.rb', line 29

def self.most_recent_failures_summary=(fully_formatted_failed_examples)
  @most_recent_failures_summary = {
    ENV['KNAPSACK_PRO_QUEUE_ID'] => fully_formatted_failed_examples
  }
end

.most_recent_pendingObject



46
47
48
49
# File 'lib/knapsack_pro/formatters/rspec_queue_summary_formatter.rb', line 46

def self.most_recent_pending
  @most_recent_pending ||= {}
  @most_recent_pending[ENV['KNAPSACK_PRO_QUEUE_ID']] || []
end

.most_recent_pending=(fully_formatted_pending_examples) ⇒ Object



40
41
42
43
44
# File 'lib/knapsack_pro/formatters/rspec_queue_summary_formatter.rb', line 40

def self.most_recent_pending=(fully_formatted_pending_examples)
  @most_recent_pending = {
    ENV['KNAPSACK_PRO_QUEUE_ID'] => fully_formatted_pending_examples
  }
end

.most_recent_summaryObject



57
58
59
60
# File 'lib/knapsack_pro/formatters/rspec_queue_summary_formatter.rb', line 57

def self.most_recent_summary
  @most_recent_summary ||= {}
  @most_recent_summary[ENV['KNAPSACK_PRO_QUEUE_ID']] || []
end

.most_recent_summary=(fully_formatted) ⇒ Object



51
52
53
54
55
# File 'lib/knapsack_pro/formatters/rspec_queue_summary_formatter.rb', line 51

def self.most_recent_summary=(fully_formatted)
  @most_recent_summary = {
    ENV['KNAPSACK_PRO_QUEUE_ID'] => fully_formatted
  }
end


81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
# File 'lib/knapsack_pro/formatters/rspec_queue_summary_formatter.rb', line 81

def self.print_exit_summary(all_test_file_paths)
  registered_output.puts('Knapsack Pro Queue exited/aborted!')
  registered_output.puts('')

  time_tracker = KnapsackPro::Formatters::TimeTrackerFetcher.call
  unexecuted_test_files = time_tracker&.unexecuted_test_files(all_test_file_paths) || []
  unless unexecuted_test_files.empty?
    registered_output.puts('Unexecuted tests on this CI node:')
    registered_output.puts(unexecuted_test_files)
    registered_output.puts('')
  end

  unless most_recent_pending.empty?
    registered_output.puts('All pending tests on this CI node:')
    registered_output.puts(most_recent_pending)
    registered_output.puts('')
  end

  unless most_recent_failures_summary.empty?
    registered_output.puts('All failed tests on this CI node:')
    registered_output.puts(most_recent_failures_summary)
    registered_output.puts('')
  end

  registered_output.puts(most_recent_summary)
end


62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
# File 'lib/knapsack_pro/formatters/rspec_queue_summary_formatter.rb', line 62

def self.print_summary
  registered_output.puts('Knapsack Pro Queue finished!')
  registered_output.puts('')

  unless most_recent_pending.empty?
    registered_output.puts('All pending tests on this CI node:')
    registered_output.puts(most_recent_pending)
    registered_output.puts('')
  end

  unless most_recent_failures_summary.empty?
    registered_output.puts('All failed tests on this CI node:')
    registered_output.puts(most_recent_failures_summary)
    registered_output.puts('')
  end

  registered_output.puts(most_recent_summary)
end

.registered_outputObject



25
26
27
# File 'lib/knapsack_pro/formatters/rspec_queue_summary_formatter.rb', line 25

def self.registered_output
  @registered_output[ENV['KNAPSACK_PRO_QUEUE_ID']]
end

.registered_output=(output) ⇒ Object



19
20
21
22
23
# File 'lib/knapsack_pro/formatters/rspec_queue_summary_formatter.rb', line 19

def self.registered_output=(output)
  @registered_output = {
    ENV['KNAPSACK_PRO_QUEUE_ID'] => output
  }
end

Instance Method Details

#dump_failures(notification) ⇒ Object



113
114
115
116
# File 'lib/knapsack_pro/formatters/rspec_queue_summary_formatter.rb', line 113

def dump_failures(notification)
  return if notification.failure_notifications.empty?
  self.class.most_recent_failures_summary = notification.fully_formatted_failed_examples
end

#dump_pending(notification) ⇒ Object



118
119
120
121
# File 'lib/knapsack_pro/formatters/rspec_queue_summary_formatter.rb', line 118

def dump_pending(notification)
  return if notification.pending_examples.empty?
  self.class.most_recent_pending = notification.fully_formatted_pending_examples
end

#dump_summary(summary) ⇒ Object



123
124
125
126
127
128
129
130
131
132
133
134
135
136
# File 'lib/knapsack_pro/formatters/rspec_queue_summary_formatter.rb', line 123

def dump_summary(summary)
  colorizer = ::RSpec::Core::Formatters::ConsoleCodes
  duration = KnapsackPro::Formatters::TimeTrackerFetcher.call.duration
  formatted_duration = ::RSpec::Core::Formatters::Helpers.format_duration(duration)

  formatted = "\nFinished in #{formatted_duration}\n" \
    "#{summary.colorized_totals_line(colorizer)}\n"

  unless summary.failed_examples.empty?
    formatted += (summary.colorized_rerun_commands(colorizer) + "\n")
  end

  self.class.most_recent_summary = formatted
end