Sha256: f6e29df9b68e4f7c3455d12cd9ac5d5fcf2cd4bb527ca3e06497fa9df160f1d0

Contents?: true

Size: 1.99 KB

Versions: 24

Compression:

Stored size: 1.99 KB

Contents

module Cucumber
  module Ast
    # Holds an Array of Step or StepDefinition
    class StepCollection #:nodoc:
      include Enumerable

      def initialize(steps)
        @steps = steps
        @steps.each{|step| step.step_collection = self}
      end

      def inspect
        @steps.map { |s| [s.class, s.object_id] }.join(', ')
      end

      def accept(visitor)
        return if Cucumber.wants_to_quit
        @steps.each do |step|
          visitor.visit_step(step)
        end
      end

      def step_invocations(background = false)
        StepCollection.new(@steps.map{ |step|
          i = step.step_invocation
          i.background = background
          i
        })
      end

      def skip_invoke!
        @steps.each{|step_invocation| step_invocation.skip_invoke!}
      end

      def step_invocations_from_cells(cells)
        @steps.map{|step| step.step_invocation_from_cells(cells)}
      end

      def +(step_invocations)
        dup(step_invocations)
      end

      # Duplicates this instance and adds +step_invocations+ to the end
      def dup(step_invocations = [])
        StepCollection.new(@steps + step_invocations)
      end

      def each(&proc)
        @steps.each(&proc)
      end

      def previous_step(step)
        i = @steps.index(step) || -1
        @steps[i-1]
      end

      def empty?
        @steps.empty?
      end

      def max_line_length(feature_element)
        lengths = (@steps + [feature_element]).map{|e| e.text_length}
        lengths.max
      end

      def exception
        @exception ||= ((failed = @steps.detect {|step| step.exception}) && failed.exception)
      end

      def failed?
        status == :failed
      end

      def passed?
        status == :passed
      end

      def status
        @steps.each{|step_invocation| return step_invocation.status if step_invocation.status != :passed}
        :passed
      end

      def length
        @steps.length
      end

      def to_sexp
        @steps.map{|step| step.to_sexp}
      end
    end
  end
end

Version data entries

24 entries across 22 versions & 2 rubygems

Version Path
honeybadger-2.4.0 vendor/gems/ruby/1.9.1/gems/cucumber-1.3.18/lib/cucumber/ast/step_collection.rb
honeybadger-2.4.0 vendor/gems/ruby/2.2.0/gems/cucumber-1.3.18/lib/cucumber/ast/step_collection.rb
honeybadger-2.4.0 vendor/gems/ruby/2.1.0/gems/cucumber-1.3.16/lib/cucumber/ast/step_collection.rb
cucumber-1.3.20 lib/cucumber/ast/step_collection.rb
cucumber-1.3.19 lib/cucumber/ast/step_collection.rb
cucumber-1.3.18 lib/cucumber/ast/step_collection.rb
cucumber-1.3.17 lib/cucumber/ast/step_collection.rb
cucumber-1.3.16 lib/cucumber/ast/step_collection.rb
cucumber-1.3.15 lib/cucumber/ast/step_collection.rb
cucumber-1.3.14 lib/cucumber/ast/step_collection.rb
cucumber-1.3.13 lib/cucumber/ast/step_collection.rb
cucumber-1.3.12 lib/cucumber/ast/step_collection.rb
cucumber-1.3.11 lib/cucumber/ast/step_collection.rb
cucumber-1.3.10 lib/cucumber/ast/step_collection.rb
cucumber-1.3.9 lib/cucumber/ast/step_collection.rb
cucumber-1.3.8 lib/cucumber/ast/step_collection.rb
cucumber-1.3.7 lib/cucumber/ast/step_collection.rb
cucumber-1.3.6 lib/cucumber/ast/step_collection.rb
cucumber-1.3.5 lib/cucumber/ast/step_collection.rb
cucumber-1.3.4 lib/cucumber/ast/step_collection.rb