Sha256: 33f8c6eff2f8557e721d3d421dd87fb9aaa618dea5f1140beaccf3cf411be73e

Contents?: true

Size: 1006 Bytes

Versions: 7

Compression:

Stored size: 1006 Bytes

Contents

require 'turnip_formatter/scenario/base'

module TurnipFormatter
  module Scenario
    class Failure < Base
      def steps
        steps = super
        return steps unless failed_line_number

        steps.each do |step|
          case
          when step.line == failed_line_number
            step.status = :failed
          when step.line > failed_line_number
            step.status = :unexecuted
          end
        end

        steps
      end

      protected

      def validation
        @errors << 'has no failed step information' unless failed_line_number
        super
      end

      private

      def failed_line_number
        return @failed_line_number if @failed_line_number
        return unless example.exception

        filepath = File.basename(feature_file_path)
        line = example.exception.backtrace.find do |backtrace|
          backtrace.match(/#{filepath}:(\d+)/)
        end

        @failed_line_number = Regexp.last_match[1].to_i if line
      end
    end
  end
end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
turnip_formatter-0.6.0.pre.beta.2 lib/turnip_formatter/scenario/failure.rb
turnip_formatter-0.6.0.pre.beta.1 lib/turnip_formatter/scenario/failure.rb
turnip_formatter-0.5.0 lib/turnip_formatter/scenario/failure.rb
turnip_formatter-0.4.0 lib/turnip_formatter/scenario/failure.rb
turnip_formatter-0.3.4 lib/turnip_formatter/scenario/failure.rb
turnip_formatter-0.3.3 lib/turnip_formatter/scenario/failure.rb
turnip_formatter-0.3.2 lib/turnip_formatter/scenario/failure.rb