Class: FlakyTester::ResultsParser

Inherits:
Object
  • Object
show all
Defined in:
lib/flaky_tester/results_parser.rb

Constant Summary collapse

FINISHED_SUITE_REGEX =
/^Finished in/.freeze
FAILED_SUITE_REGEX =
/^Failures:$/.freeze
FAILED_TEST_REGEX =
/^rspec (.+:\d+) # .+$/.freeze

Instance Method Summary collapse

Constructor Details

#initialize(results_file) ⇒ ResultsParser

Returns a new instance of ResultsParser.



9
10
11
12
13
14
# File 'lib/flaky_tester/results_parser.rb', line 9

def initialize(results_file)
  @results_file = results_file
  @finished_suite_count = 0
  @failed_suite_count = 0
  @failed_test_counts = {}
end

Instance Method Details

#parseObject



16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
# File 'lib/flaky_tester/results_parser.rb', line 16

def parse
  @results_file.each do |line|
    finished_suite_match_data = FINISHED_SUITE_REGEX.match(line)

    if finished_suite_match_data
      @finished_suite_count += 1
      next
    end

    failed_suite_match_data = FAILED_SUITE_REGEX.match(line)

    if failed_suite_match_data
      @failed_suite_count += 1
      next
    end

    failed_test_match_data = FAILED_TEST_REGEX.match(line)

    if failed_test_match_data
      failed_test = failed_test_match_data[1]
      @failed_test_counts[failed_test] ||= 0
      @failed_test_counts[failed_test] += 1
    end
  end

  results_message
ensure
  close_results_file
end