Class: Spinach::Runner::FeatureRunner

Inherits:
Object
  • Object
show all
Defined in:
lib/spinach/runner/feature_runner.rb

Overview

A feature runner handles a particular feature run.

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(filename) ⇒ FeatureRunner

Returns a new instance of FeatureRunner.

Parameters:

  • filename (String)

    path to the feature file. Scenario line could be passed to run just that scenario. @example feature/a_cool_feature.feature:12



16
17
18
# File 'lib/spinach/runner/feature_runner.rb', line 16

def initialize(filename)
  @filename, @scenario_line = filename.split(':')
end

Instance Attribute Details

#filenameObject (readonly)

The file taht describes the feature.



8
9
10
# File 'lib/spinach/runner/feature_runner.rb', line 8

def filename
  @filename
end

Instance Method Details

#dataHash

Returns The parsed data for this feature.

Returns:

  • (Hash)

    The parsed data for this feature.



28
29
30
# File 'lib/spinach/runner/feature_runner.rb', line 28

def data
  @data ||= Spinach::Parser.open_file(filename).parse
end

#feature_nameString

Returns This feature name.

Returns:

  • (String)

    This feature name.



36
37
38
# File 'lib/spinach/runner/feature_runner.rb', line 36

def feature_name
  @feature_name ||= data['name']
end

#runtrue, false

Runs this feature.

Returns:

  • (true, false)

    Whether the run was successful or not.



54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
# File 'lib/spinach/runner/feature_runner.rb', line 54

def run
  Spinach.hooks.run_before_feature data
  if Spinach.find_feature_steps(feature_name)
    scenarios.each do |scenario|
      if !@scenario_line || scenario['line'].to_s == @scenario_line
        success = ScenarioRunner.new(feature_name, scenario).run
        @failed = true unless success
      end
    end
  else
    Spinach.hooks.run_on_undefined_feature data
    @failed = true
  end
  Spinach.hooks.run_after_feature data
  !@failed
end

#scenariosHash

Returns The parsed scenarios for this runner’s feature.

Returns:

  • (Hash)

    The parsed scenarios for this runner’s feature.



44
45
46
# File 'lib/spinach/runner/feature_runner.rb', line 44

def scenarios
  @scenarios ||= (data['elements'] || [])
end