lib/lopata/observers/console_output_observer.rb in lopata-0.1.25 vs lib/lopata/observers/console_output_observer.rb in lopata-0.1.26

- old
+ new

@@ -1,7 +1,6 @@ require_relative 'backtrace_formatter' -require_relative 'group_tree' require 'forwardable' module Lopata module Observers # @private @@ -32,37 +31,39 @@ puts colored(message, scenario.status) statuses[scenario.status] ||= 0 statuses[scenario.status] += 1 - if scenario.failed? - GroupTree.steps_hierarhy(scenario.steps).walk_through do |step| - if step.is_a?(Lopata::StepExecution) - next unless step.loggable? - puts colored(" #{status_marker(step.status)} #{step.title}", step.status) - puts indent(4, backtrace_formatter.error_message(step.exception, include_backtrace: true)) if step.failed? - else # GroupTree - group = step - if %i{ passed skipped }.include?(group.status) - puts colored(" #{status_marker(group.status)} #{group.title}", group.status) - false - else - true - end + log_steps(scenario.steps) if scenario.failed? + + flush + end + + # @private + def log_steps(steps) + steps.each do |step| + next unless step.loggable? + if step.group? + status = step.status + if %i{ passed skipped ignored }.include?(status) + puts colored(" #{status_marker(step.status)} #{step.title}", status) + else + log_steps(step.steps) end + else + puts colored(" #{status_marker(step.status)} #{step.title}", step.status) + puts indent(4, backtrace_formatter.error_message(step.exception, include_backtrace: true)) if step.failed? end end - - flush end private def colored(text, status) case status when :failed then red(text) when :passed then green(text) - when :skipped then cyan(text) + when :skipped, :ignored then cyan(text) when :pending then yellow(text) else text end end