class Cucumber::Core::Test::Case
def compose_around_hooks(visitor, *args, &block)
def compose_around_hooks(visitor, *args, &block) around_hooks.reverse.reduce(block) do |continue, hook| -> { hook.describe_to(visitor, *args, &continue) } end.call end
def describe_source_to(visitor, *args)
def describe_source_to(visitor, *args) source.reverse.each do |node| node.describe_to(visitor, *args) end self end
def describe_to(visitor, *args)
def describe_to(visitor, *args) visitor.test_case(self, *args) do |child_visitor| compose_around_hooks(child_visitor, *args) do test_steps.each do |test_step| test_step.describe_to(child_visitor, *args) end end end self end
def feature
def feature source.first end
def initialize(test_steps, source, around_hooks = [])
def initialize(test_steps, source, around_hooks = []) super(test_steps, source, around_hooks) end
def inspect
def inspect "<#{self.class}: #{location}>" end
def language
def language feature.language end
def location
def location source.last.location end
def match_locations?(queried_locations)
def match_locations?(queried_locations) return true if source.any? { |s| s.match_locations?(queried_locations) } test_steps.any? { |node| node.match_locations? queried_locations } end
def match_name?(name_regexp)
def match_name?(name_regexp) source.any? { |node| node.respond_to?(:name) && node.name =~ name_regexp } end
def match_tags?(*expressions)
def match_tags?(*expressions) ::Gherkin::TagExpression.new(expressions.flatten).evaluate(tags.map {|t| ::Gherkin::Formatter::Model::Tag.new(t.name, t.line) }) end
def name
def name @name ||= NameBuilder.new(self).result end
def step_count
def step_count test_steps.count end
def tags
def tags @tags ||= TagCollector.new(self).result end
def with_around_hooks(around_hooks)
def with_around_hooks(around_hooks) self.class.new(test_steps, source, around_hooks) end
def with_steps(test_steps)
def with_steps(test_steps) self.class.new(test_steps, source, around_hooks) end