Sha256: 2b744c75d9f3184b51d8a564a16076f3194f97ea849381fe2e64718e5bdef106

Contents?: true

Size: 1.15 KB

Versions: 5

Compression:

Stored size: 1.15 KB

Contents

require 'gherkin/tag_expression'
module JCukeForker
  module Formatters
    class ScenarioLineLogger
      attr_reader :scenarios

      def initialize(tag_expression = Gherkin::TagExpression.new([]))
        @scenarios = []
        @tag_expression = tag_expression
      end

      def visit_feature_element(feature_element)
        if @tag_expression.evaluate(feature_element.source_tags)
          if feature_element.respond_to?(:each_example_row)
            feature_element.each_example_row do |row|
              #TODO remove reflection
              build_scenario(feature_element, row.instance_variable_get(:@cells).first)
            end
          else
            build_scenario(feature_element, feature_element)
          end
        end
      end

      def method_missing(*args)
      end

      private

      def build_scenario(feature_element, sub_element)
        line_number = if sub_element.respond_to?(:line)
                        sub_element.line
                      else
                        sub_element.location.line
                      end
        @scenarios << [feature_element.feature.file, line_number].join(':')
      end
    end
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
jcukeforker-0.3.1 lib/jcukeforker/formatters/scenario_line_logger.rb
jcukeforker-0.2.10 lib/jcukeforker/formatters/scenario_line_logger.rb
jcukeforker-0.2.9 lib/jcukeforker/formatters/scenario_line_logger.rb
jcukeforker-0.2.8 lib/jcukeforker/formatters/scenario_line_logger.rb
jcukeforker-0.2.7 lib/jcukeforker/formatters/scenario_line_logger.rb