Class: Spinach::Runner

Inherits:
Object
  • Object
show all
Includes:
Hooks
Defined in:
lib/spinach/runner.rb,
lib/spinach/runner/feature.rb,
lib/spinach/runner/scenario.rb

Overview

Runner gets the parsed data from the feature and performs the actual calls to the feature classes.

Defined Under Namespace

Classes: Feature, Scenario

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(filenames, options = {}) ⇒ Runner

Initializes the runner with a parsed feature

Parameters:

  • filenames (Array<String>)

    A list of feature filenames to run

  • options (Hash) (defaults to: {})

Options Hash (options):

  • :step_definitions_path (String)

    The path in which step definitions are found.

  • :support_path (String)

    The path with the support ruby files.



36
37
38
39
40
41
42
43
44
# File 'lib/spinach/runner.rb', line 36

def initialize(filenames, options = {})
  @filenames = filenames

  @step_definitions_path = options.delete(:step_definitions_path ) ||
    Spinach.config.step_definitions_path

  @support_path = options.delete(:support_path ) ||
    Spinach.config.support_path
end

Instance Attribute Details

#filenamesObject (readonly)

The feature files to run



11
12
13
# File 'lib/spinach/runner.rb', line 11

def filenames
  @filenames
end

#step_definitions_pathObject (readonly)

The default path where the steps are located



14
15
16
# File 'lib/spinach/runner.rb', line 14

def step_definitions_path
  @step_definitions_path
end

#support_pathObject (readonly)

The default path where the support files are located



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

def support_path
  @support_path
end

Instance Method Details

#require_dependenciesObject

Loads step definitions and support files.



82
83
84
85
86
# File 'lib/spinach/runner.rb', line 82

def require_dependencies
  (support_files + step_definition_files).each do |file|
    require file
  end
end

#require_suitesObject

Requires the test suite support



90
91
92
# File 'lib/spinach/runner.rb', line 90

def require_suites
  require_relative 'suites'
end

#runtrue, false

Runs this runner and outputs the results in a colorful manner.

Returns:

  • (true, false)

    Whether the run was succesful.



61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
# File 'lib/spinach/runner.rb', line 61

def run
  require_dependencies
  require_suites

  run_hook :before_run

  successful = true

  filenames.each do |filename|
    success = Feature.new(filename).run
    successful = false unless success
  end

  run_hook :after_run, successful

  successful
end

#step_definition_filesArray<String>

Returns files The step definition files.

Returns:

  • (Array<String>)

    files The step definition files.



98
99
100
101
102
# File 'lib/spinach/runner.rb', line 98

def step_definition_files
  Dir.glob(
    File.expand_path File.join(step_definitions_path, '**', '*.rb')
  )
end

#support_filesArray<String>

Returns files The support files.

Returns:

  • (Array<String>)

    files The support files.



108
109
110
111
112
# File 'lib/spinach/runner.rb', line 108

def support_files
  Dir.glob(
    File.expand_path File.join(support_path, '**', '*.rb')
  )
end