Class: Kymera::Cucumber::ResultsParser
- Inherits:
-
Object
- Object
- Kymera::Cucumber::ResultsParser
- Defined in:
- lib/kymera/cucumber/cucumber_results_parser.rb
Class Method Summary collapse
- .count(lines) ⇒ Object
-
.parse ⇒ Object
TODO: JS - Add support for detecting skipped/undefined steps.
-
.scenario_counts ⇒ Object
These variables are reset every time the sum_up_lines method is called.
- .sum_up_failed_scenarios(results) ⇒ Object
- .sum_up_lines(lines, group) ⇒ Object
- .summarize_results(results) ⇒ Object
Class Method Details
.count(lines) ⇒ Object
66 67 68 69 70 71 72 73 74 |
# File 'lib/kymera/cucumber/cucumber_results_parser.rb', line 66 def self.count(lines) count = 0 word = '' lines.each do |l| count += l[0][0].to_i word = l[0][1] end [word, count] end |
.parse ⇒ Object
TODO: JS - Add support for detecting skipped/undefined steps
6 7 8 |
# File 'lib/kymera/cucumber/cucumber_results_parser.rb', line 6 def self.parse @results end |
.scenario_counts ⇒ Object
These variables are reset every time the sum_up_lines method is called
61 62 63 |
# File 'lib/kymera/cucumber/cucumber_results_parser.rb', line 61 def self.scenario_counts {pass: @@p_count, fail: @@f_count} end |
.sum_up_failed_scenarios(results) ⇒ Object
76 77 78 79 80 81 82 83 84 85 86 87 |
# File 'lib/kymera/cucumber/cucumber_results_parser.rb', line 76 def self.sum_up_failed_scenarios(results) results = results.select{|l| l.include?('[31mcucumber')} if results.empty? '' else results.map {|l| l << "\n"} formatted_results = "\e[31mFailing Scenarios:\n" results.each {|l| formatted_results << l} formatted_results << "\e[0m" formatted_results end end |
.sum_up_lines(lines, group) ⇒ Object
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 45 46 47 48 49 50 51 52 53 54 55 56 57 58 |
# File 'lib/kymera/cucumber/cucumber_results_parser.rb', line 20 def self.sum_up_lines(lines, group) r_lines =[] lines.each do |l| r_lines << l.gsub('(','').gsub(')','') end _group, group_count, passed, passed_count, failed, failed_count = '' group_lines = r_lines.map {|m| m.scan(/(\d+) (#{group})/)} _group, group_count = count(group_lines) unless group_lines.empty? failed_scenarios = r_lines.map {|m| m.scan(/(\d+) (failed)/)} failed_scenarios.delete_if {|l| l.empty?} failed, failed_count = count(failed_scenarios) unless failed_scenarios.empty? passed_scenarios = r_lines.map {|m| m.scan(/(\d+) (passed)/)} passed_scenarios.delete_if {|l| l.empty?} passed, passed_count = count(passed_scenarios) unless passed_scenarios.empty? if group_count > 1 _group += 's' end if _group.downcase.include? 'scenario' @@p_count = '' @@f_count = '' @@p_count = passed_count unless passed_count.nil? @@f_count = failed_count unless failed_count.nil? end if failed_scenarios.empty? "#{group_count} #{_group} (\e[32m#{passed_count} #{passed}\e[0m)" elsif passed_scenarios.empty? "#{group_count} #{_group} (\e[31m#{failed_count} #{failed}\e[0m)" else "#{group_count} #{_group} (\e[31m#{failed_count} #{failed}\e[0m, \e[32m#{passed_count} #{passed}\e[0m)" end end |
.summarize_results(results) ⇒ Object
10 11 12 13 14 15 16 17 18 |
# File 'lib/kymera/cucumber/cucumber_results_parser.rb', line 10 def self.summarize_results(results) results_array = results.split("\n") sort_order = %w[scenario step] aggregate_results = sort_order.map do |group| r_group_results = results_array.select {|l| l2 = l.scan(/^\d+ #{group}/); !l2.empty?} sum_up_lines(r_group_results, group) end.compact.join("\n") aggregate_results << "\n#{sum_up_failed_scenarios(results_array)}" end |