Sha256: f3dd01e529cb704dceb762f0d9d325f70a904b795dc926cf201de749d14ae210

Contents?: true

Size: 1.79 KB

Versions: 3

Compression:

Stored size: 1.79 KB

Contents

module Gurke
  class Feature
    #
    # Return path to file containing this feature.
    #
    # @return [String] File path.
    #
    attr_reader :file

    # Return line number where this feature is defined.
    #
    # @return [Fixnum] Line number.
    #
    attr_reader :line

    # List of scenarios this feature specifies.
    #
    # @return [Array<Scenario>] Scenarios.
    #
    attr_reader :scenarios

    # List of backgrounds this feature specifies.
    #
    # @return [Array<Background>] Backgrounds.
    #
    attr_reader :backgrounds

    attr_reader :tags

    # @api private
    attr_reader :raw

    # @api private
    def initialize(file, line, tags, raw)
      @scenarios   = RunList.new
      @backgrounds = RunList.new

      @file = file
      @line = line
      @tags = tags
      @raw  = raw
    end

    def name
      raw.name
    end

    def description
      raw.description
    end

    # Return name of this feature.
    #
    # @return [String] Feature name.
    #
    def name
      raw.name
    end

    def failed?
      scenarios.any?(&:failed?)
    end

    def pending?
      scenarios.any?(&:pending?)
    end

    def self.new(*args)
      if args.size == 1 && (f = args.first).is_a?(self)
        super f.file, f.line, f.tags, f.raw
      else
        super
      end
    end

    # -----------------------------------------------------

    # @api private
    def run(runner, reporter)
      reporter.invoke :before_feature, self

      runner.hook :feature, self, nil do
        run_feature runner, reporter
      end
    ensure
      reporter.invoke :after_feature, self
    end

    private

    def run_feature(runner, reporter)
      reporter.invoke :start_feature, self

      scenarios.run runner, reporter
    ensure
      reporter.invoke :end_feature, self
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
gurke-2.4.2 lib/gurke/feature.rb
gurke-2.4.1 lib/gurke/feature.rb
gurke-2.4.0 lib/gurke/feature.rb