require 'csv'

ENV=“test” # Force test environment LOGFILE=Rails.root + “log/flaky_tests.log” FAILING_LOG=Rails.root + “tmp/failing_specs.log”

desc “Rerun failing parallel tests in a single thread” task :flaky_stats => :environment do |t|

if File.exist?(FAILING_LOG)

  # Read failing log
  logfile = FlakyStats::LogFile.new(failing_log: FAILING_LOG, logfile: LOGFILE)
  failed_files = logfile.read_failing_log()

  # Run tests singularly.
  flaky_tests = FlakyStats::FlakyTests.new(logfile: LOGFILE)
  real_flaky_tests = flaky_tests.run(failed_files)

  # Write out the log file of real flaky tests
  logfile.write_flaky_stats(real_flaky_tests)

  # Display summaries
  summary = FlakyStats::Summary.new(failing_log: FAILING_LOG,
                                    flaky_tests_log: LOGFILE,
                                    failed_files: failed_files,
                                    real_flaky_tests: real_flaky_tests)
  summary.display_error_summary()
  summary.display_flaky_summary()
  summary.display_current_flakies()
  summary.display_failed_tests()

  # Rollover logfile
  summary.rollover_and_write()
end

end