class RspecLogFormatter::Analysis::Score
Attributes
failure_messages[RW]
failures[RW]
max_reruns[R]
runs[RW]
Public Class Methods
new(desc, opts={})
click to toggle source
# File lib/rspec_log_formatter/analysis/score.rb, line 4 def initialize(desc, opts={}) @description = desc @runs = 0 @failures = 0 @failure_messages = [] @last_fail_time = Time.at(0) @last_pass_time = Time.at(0) @max_reruns = opts[:max_reruns] end
Public Instance Methods
<=>(other)
click to toggle source
# File lib/rspec_log_formatter/analysis/score.rb, line 26 def <=>(other) if max_reruns other.cost <=> cost else other.fraction <=> fraction end end
absorb(result)
click to toggle source
# File lib/rspec_log_formatter/analysis/score.rb, line 38 def absorb(result) if result.failure? && result.time > @last_fail_time @last_fail_time = result.time @fail_duration = result.duration elsif result.success? && result.time > @last_pass_time @last_pass_time = result.time @pass_duration = result.duration end end
as_hash()
click to toggle source
# File lib/rspec_log_formatter/analysis/score.rb, line 48 def as_hash h = { description: @description, fraction: fraction, failure_messages: failure_messages, } if max_reruns h.merge!({cost: cost}) end h end
cost()
click to toggle source
# File lib/rspec_log_formatter/analysis/score.rb, line 18 def cost sum = 0.0 0.upto(max_reruns) do |i| sum += (fraction**i)*(1.0-fraction)*(i*@fail_duration + @pass_duration) end sum + (fraction**(max_reruns+1.0))*@fail_duration end
flaky?()
click to toggle source
# File lib/rspec_log_formatter/analysis/score.rb, line 34 def flaky? fraction > 0.0 end
fraction()
click to toggle source
# File lib/rspec_log_formatter/analysis/score.rb, line 14 def fraction @failures.to_f/@runs end