class FlakyStats::Summary
Constants
- DEFAULT_ROLLOVER_DAYS
Public Class Methods
new(options)
click to toggle source
# File lib/flaky_stats/summary.rb, line 13 def initialize(options) @failing_log = options[:failing_log] @flaky_tests_log = options[:flaky_tests_log] @failed_files = options[:failed_files] || [] @real_flaky_tests = options[:real_flaky_tests] || [] end
Public Instance Methods
calc_flaky_summary()
click to toggle source
# File lib/flaky_stats/summary.rb, line 25 def calc_flaky_summary sum=Hash.new(0) CSV.foreach(@flaky_tests_log) do |row| sum[row[1]]+=row[3].to_i end return order_stats(sum) end
display_current_flakies()
click to toggle source
# File lib/flaky_stats/summary.rb, line 41 def display_current_flakies heading "Flakies which passed in a single thread" @real_flaky_tests.each do |flaky| puts "#{flaky.split(",")[1]}:#{flaky.split(",")[2]}" end puts "\n" end
display_error_summary()
click to toggle source
# File lib/flaky_stats/summary.rb, line 20 def display_error_summary() heading "Errors summary" system("cat #{@failing_log}") end
display_failed_tests()
click to toggle source
# File lib/flaky_stats/summary.rb, line 59 def display_failed_tests heading "Failed tests" real_errors = filter_error_files(@failed_files, @real_flaky_tests) real_errors.each { |file| puts "#{file[:filename]}:#{file[:lineno]}"} puts "\n" end
display_flaky_summary()
click to toggle source
# File lib/flaky_stats/summary.rb, line 33 def display_flaky_summary heading "Flaky summary" reject_low_flaky_tests(calc_flaky_summary).each do |k,v| puts "#{v}\t#{k}" end puts "\n" end
filter_error_files(failed_files, real_flaky_tests)
click to toggle source
failed_files=[{:filename=>“./spec/integration/divisions/edit_divisions_spec.rb”, :lineno=>26},…] real_flaky_tests = [“2019-10-24 15:30:45 +1100,./spec/integration/reports/activity_statement_spec.rb,13,1”,…]
# File lib/flaky_stats/summary.rb, line 52 def filter_error_files(failed_files, real_flaky_tests) real_flaky_tests.each do |flaky| failed_files.reject!{|error| error[:filename] == flaky.split(",")[1]} end return failed_files end
order_stats(hash)
click to toggle source
# File lib/flaky_stats/summary.rb, line 94 def order_stats(hash) hash.sort_by{|key,value| value}.reverse.to_h end
reject_low_flaky_tests(data)
click to toggle source
# File lib/flaky_stats/summary.rb, line 90 def reject_low_flaky_tests(data) data.reject{|k,v| v <= 1} end
rollover(days = DEFAULT_ROLLOVER_DAYS)
click to toggle source
# File lib/flaky_stats/summary.rb, line 66 def rollover(days = DEFAULT_ROLLOVER_DAYS) lines = File.readlines(@flaky_tests_log) lines.reject{|line| flaky_date = Time.parse(line.split(",")[0]).to_date cutoff = Date.today - days flaky_date < cutoff } end
rollover_and_write(options = {})
click to toggle source
# File lib/flaky_stats/summary.rb, line 75 def rollover_and_write(options = {}) days = options[:days] || DEFAULT_ROLLOVER_DAYS output = options[:output] || "#{@flaky_tests_log}.tmp" File.open(output, "w") {|file| rollover(days).each do |flaky| file.write flaky end } # Overwrite log file. `cp #{@flaky_tests_log} #{@flaky_tests_log}.old` `cp #{@flaky_tests_log}.tmp #{@flaky_tests_log}` end