module SleepingKingStudios::Tasks::Ci::CucumberParser
Parses the output from cucumber –format=json into a summary report.
Attributes
report[R]
Public Class Methods
parse(results)
click to toggle source
# File lib/sleeping_king_studios/tasks/ci/cucumber_parser.rb, line 9 def parse results @report = build_report results.each { |feature| parse_feature(feature) } report['duration'] = report['duration'] / (1.0 * 10**9) report end
Private Class Methods
build_report()
click to toggle source
# File lib/sleeping_king_studios/tasks/ci/cucumber_parser.rb, line 23 def build_report { 'scenario_count' => 0, 'failing_scenarios' => [], 'pending_scenarios' => [], 'step_count' => 0, 'failing_step_count' => 0, 'pending_step_count' => 0, 'duration' => 0 } # end report end
parse_feature(feature)
click to toggle source
# File lib/sleeping_king_studios/tasks/ci/cucumber_parser.rb, line 35 def parse_feature feature feature['elements'].each do |scenario| parse_scenario(scenario, feature) end # each end
parse_scenario(scenario, feature)
click to toggle source
rubocop:disable Metrics/MethodLength
# File lib/sleeping_king_studios/tasks/ci/cucumber_parser.rb, line 42 def parse_scenario scenario, feature failing = false pending = false scenario['steps'].each do |step| status = parse_step(step) failing ||= status == 'failed' pending ||= status == 'pending' || status == 'skipped' end # each report_scenario( scenario, feature, :failing => failing, :pending => pending ) # end report scenario end
parse_step(step)
click to toggle source
rubocop:enable Metrics/MethodLength
# File lib/sleeping_king_studios/tasks/ci/cucumber_parser.rb, line 62 def parse_step step report['step_count'] += 1 report['duration'] += step_duration(step) status = step_status(step) || 'failed' case status when 'failed' report['failing_step_count'] += 1 when 'pending', 'skipped' report['pending_step_count'] += 1 end status end
report_scenario(scenario, feature, failing:, pending: report['scenario_count'] += 1)
click to toggle source
rubocop:disable Metrics/MethodLength
# File lib/sleeping_king_studios/tasks/ci/cucumber_parser.rb, line 79 def report_scenario scenario, feature, failing:, pending: report['scenario_count'] += 1 return unless failing || pending hsh = { 'location' => "#{feature['uri']}:#{scenario['line']}", 'description' => "#{scenario['keyword']}: #{scenario['name']}" } if failing report['failing_scenarios'] << hsh else report['pending_scenarios'] << hsh end # if-else end
step_duration(hsh)
click to toggle source
rubocop:enable Metrics/MethodLength
# File lib/sleeping_king_studios/tasks/ci/cucumber_parser.rb, line 98 def step_duration hsh return 0 if hsh.nil? || hsh.empty? result = hsh['result'] return 0 if result.nil? || result.empty? result['duration'] || 0 end
step_status(hsh)
click to toggle source
# File lib/sleeping_king_studios/tasks/ci/cucumber_parser.rb, line 108 def step_status hsh return nil if hsh.nil? || hsh.empty? result = hsh['result'] return nil if result.nil? || result.empty? result['status'] end