class RSpecKneesAndToes::AnalyzeParallelSpecLogs
Public Class Methods
new(processor: ProcessLinesBetweenLoggedSeeds.new, bisector: RspecBisector.new, failing_spec_lines: File.readlines('tmp/failing_specs.log'), parallel_runtime_lines: File.readlines('tmp/parallel_runtime_rspec.log'))
click to toggle source
# File lib/analyze_parallel_spec_logs.rb, line 9 def initialize(processor: ProcessLinesBetweenLoggedSeeds.new, bisector: RspecBisector.new, failing_spec_lines: File.readlines('tmp/failing_specs.log'), parallel_runtime_lines: File.readlines('tmp/parallel_runtime_rspec.log')) @processor = processor @bisector = bisector @failing_spec_lines = failing_spec_lines @parallel_runtime_lines = parallel_runtime_lines end
Public Instance Methods
bisect_parallel_spec_threads()
click to toggle source
# File lib/analyze_parallel_spec_logs.rb, line 19 def bisect_parallel_spec_threads extract_seeds_with_failures.each do |seed, failures| @bisector.bisect(seed, failures) end end
Private Instance Methods
extract_seeds_with_failures()
click to toggle source
# File lib/analyze_parallel_spec_logs.rb, line 27 def extract_seeds_with_failures failing_seeds = [] seeds_with_failures = Hash.new { |hash, key| hash[key] = [] } @processor.process_file(@failing_spec_lines) do |line, seed| failing_seeds << seed if /Failures/.match(line) end @processor.process_file(@parallel_runtime_lines) do |line, seed| if %r{spec/}.match(line) && failing_seeds.include?(seed) seeds_with_failures[seed] << line[0..line.index(':') - 1] end end seeds_with_failures end