Sha256: e399c45f61a4392e8141752fa69f17714763f4d4649e13000014d646cca5aa30

Contents?: true

Size: 1.69 KB

Versions: 19

Compression:

Stored size: 1.69 KB

Contents

# frozen_string_literal: true
module ParallelTests
  module Cucumber
    module Formatters
      class ScenarioLineLogger
        attr_reader :scenarios

        def initialize(tag_expression = nil)
          @scenarios = []
          @tag_expression = tag_expression
        end

        def visit_feature_element(uri, feature_element, feature_tags, line_numbers: [])
          scenario_tags = feature_element.tags.map(&:name)
          scenario_tags = feature_tags + scenario_tags
          if feature_element.is_a?(CukeModeler::Scenario) # :Scenario
            test_line = feature_element.source_line

            # We don't accept the feature_element if the current tags are not valid
            return unless matches_tags?(scenario_tags)
            # or if it is not at the correct location
            return if line_numbers.any? && !line_numbers.include?(test_line)

            @scenarios << [uri, feature_element.source_line].join(":")
          else # :ScenarioOutline
            feature_element.examples.each do |example|
              example_tags = example.tags.map(&:name)
              example_tags = scenario_tags + example_tags
              next unless matches_tags?(example_tags)
              example.rows[1..].each do |row|
                test_line = row.source_line
                next if line_numbers.any? && !line_numbers.include?(test_line)

                @scenarios << [uri, test_line].join(':')
              end
            end
          end
        end

        def method_missing(*); end # # rubocop:disable Style/MissingRespondToMissing

        private

        def matches_tags?(tags)
          @tag_expression.nil? || @tag_expression.evaluate(tags)
        end
      end
    end
  end
end

Version data entries

19 entries across 19 versions & 1 rubygems

Version Path
parallel_tests-4.9.0 lib/parallel_tests/cucumber/scenario_line_logger.rb
parallel_tests-4.8.0 lib/parallel_tests/cucumber/scenario_line_logger.rb
parallel_tests-4.7.2 lib/parallel_tests/cucumber/scenario_line_logger.rb
parallel_tests-4.7.1 lib/parallel_tests/cucumber/scenario_line_logger.rb
parallel_tests-4.7.0 lib/parallel_tests/cucumber/scenario_line_logger.rb
parallel_tests-4.6.1 lib/parallel_tests/cucumber/scenario_line_logger.rb
parallel_tests-4.6.0 lib/parallel_tests/cucumber/scenario_line_logger.rb
parallel_tests-4.5.2 lib/parallel_tests/cucumber/scenario_line_logger.rb
parallel_tests-4.5.1 lib/parallel_tests/cucumber/scenario_line_logger.rb
parallel_tests-4.5.0 lib/parallel_tests/cucumber/scenario_line_logger.rb
parallel_tests-4.4.0 lib/parallel_tests/cucumber/scenario_line_logger.rb
parallel_tests-4.3.0 lib/parallel_tests/cucumber/scenario_line_logger.rb
parallel_tests-4.2.2 lib/parallel_tests/cucumber/scenario_line_logger.rb
parallel_tests-4.2.1 lib/parallel_tests/cucumber/scenario_line_logger.rb
parallel_tests-4.2.0 lib/parallel_tests/cucumber/scenario_line_logger.rb
parallel_tests-4.1.0 lib/parallel_tests/cucumber/scenario_line_logger.rb
parallel_tests-4.0.0 lib/parallel_tests/cucumber/scenario_line_logger.rb
parallel_tests-3.13.0 lib/parallel_tests/cucumber/scenario_line_logger.rb
parallel_tests-3.8.0 lib/parallel_tests/cucumber/scenario_line_logger.rb