class ParallelTests::Cucumber::Formatters::ScenarioLineLogger
def initialize(tag_expression = nil)
def initialize(tag_expression = nil) @scenarios = [] @tag_expression = tag_expression end
def matches_tags?(tags)
def matches_tags?(tags) @tag_expression.nil? || @tag_expression.evaluate(tags) end
def method_missing(*args)
def method_missing(*args) end
def visit_feature_element(uri, feature_element, feature_tags, line_numbers: [])
def visit_feature_element(uri, feature_element, feature_tags, line_numbers: []) scenario_tags = feature_element.tags.map { |tag| tag.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..-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