class ParallelTests::Gherkin::Listener

def all_tags(scenario)

Return a combination of tags declared on this scenario/outline and the feature it belongs to
def all_tags(scenario)
  (scenario.tags || []) + ((@feature && @feature.tags) || [])
end

def background(*)

def background(*)
  @background = 1
end

def eof(*)

def eof(*)
  @collect[@uri] += (@background_steps * @scenarios)
  reset_counters!
end

def examples(examples)

Parameters:
  • examples (Gherkin::Formatter::Model::Examples) --
def examples(examples)
  @collect[@uri] += (@outline_steps * examples.rows.size) unless examples.rows.empty?
end

def feature(feature)

def feature(feature)
  @feature = feature
end

def initialize

def initialize
  @steps = []
  @uris = []
  @collect = {}
  @feature, @ignore_tag_pattern = nil
  reset_counters!
end

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

rubocop:disable Style/MissingRespondToMissing
ignore lots of other possible callbacks ...
def method_missing(*); end # rubocop:disable Style/MissingRespondToMissing

def reset_counters!

def reset_counters!
  @outline = @outline_steps = @background = @background_steps = @scenarios = 0
  @ignoring = nil
end

def scenario(scenario)

def scenario(scenario)
  @outline = @background = 0
  return if should_ignore(scenario)
  @scenarios += 1
end

def scenario_outline(outline)

def scenario_outline(outline)
  return if should_ignore(outline)
  @outline = 1
end

def should_ignore(scenario)

Set @ignoring if we should ignore this scenario/outline based on its tags
def should_ignore(scenario)
  @ignoring = @ignore_tag_pattern && all_tags(scenario).find { |tag| @ignore_tag_pattern === tag.name }
end

def step(*)

def step(*)
  return if @ignoring
  if @background == 1
    @background_steps += 1
  elsif @outline > 0
    @outline_steps += 1
  else
    @collect[@uri] += 1
  end
end

def uri(path)

def uri(path)
  @uri = path
  @collect[@uri] = 0
end