Class: Spinach::Runner
- Inherits:
-
Object
- Object
- Spinach::Runner
- Defined in:
- lib/spinach/runner.rb,
lib/spinach/runner/feature_runner.rb,
lib/spinach/runner/scenario_runner.rb
Overview
Runner gets the parsed data from the feature and performs the actual calls to the feature classes.
Defined Under Namespace
Classes: FeatureRunner, ScenarioRunner
Instance Attribute Summary collapse
-
#filenames ⇒ Object
readonly
The feature files to run.
-
#step_definitions_path ⇒ Object
readonly
The default path where the steps are located.
-
#support_path ⇒ Object
readonly
The default path where the support files are located.
Instance Method Summary collapse
-
#init_reporter ⇒ Object
Inits the reporter with a default one.
-
#initialize(filenames, options = {}) ⇒ Runner
constructor
Initializes the runner with a parsed feature.
-
#require_dependencies ⇒ Object
Loads support files and step definitions, ensuring that env.rb is loaded first.
-
#require_frameworks ⇒ Object
Requires the test framework support.
-
#required_files ⇒ Array<String>
Files All support files with env.rb ordered first, followed by the step definitions.
-
#run ⇒ true, false
Runs this runner and outputs the results in a colorful manner.
-
#step_definition_files ⇒ Array<String>
Returns an array of files to be required.
-
#support_files ⇒ Array<String>
Returns an array of support files inside the support_path.
Constructor Details
#initialize(filenames, options = {}) ⇒ Runner
Initializes the runner with a parsed feature
30 31 32 33 34 35 36 37 38 |
# File 'lib/spinach/runner.rb', line 30 def initialize(filenames, = {}) @filenames = filenames @step_definitions_path = .delete(:step_definitions_path ) || Spinach.config.step_definitions_path @support_path = .delete(:support_path ) || Spinach.config.support_path end |
Instance Attribute Details
#filenames ⇒ Object (readonly)
The feature files to run
8 9 10 |
# File 'lib/spinach/runner.rb', line 8 def filenames @filenames end |
#step_definitions_path ⇒ Object (readonly)
The default path where the steps are located
11 12 13 |
# File 'lib/spinach/runner.rb', line 11 def step_definitions_path @step_definitions_path end |
#support_path ⇒ Object (readonly)
The default path where the support files are located
14 15 16 |
# File 'lib/spinach/runner.rb', line 14 def support_path @support_path end |
Instance Method Details
#init_reporter ⇒ Object
Inits the reporter with a default one.
52 53 54 55 |
# File 'lib/spinach/runner.rb', line 52 def init_reporter reporter = Support.constantize(Spinach.config[:reporter_class]).new(Spinach.config.) reporter.bind end |
#require_dependencies ⇒ Object
Loads support files and step definitions, ensuring that env.rb is loaded first.
102 103 104 105 106 |
# File 'lib/spinach/runner.rb', line 102 def require_dependencies required_files.each do |file| require file end end |
#require_frameworks ⇒ Object
Requires the test framework support
110 111 112 |
# File 'lib/spinach/runner.rb', line 110 def require_frameworks require_relative 'frameworks' end |
#required_files ⇒ Array<String>
Returns files All support files with env.rb ordered first, followed by the step definitions.
147 148 149 |
# File 'lib/spinach/runner.rb', line 147 def required_files support_files + step_definition_files end |
#run ⇒ true, false
Runs this runner and outputs the results in a colorful manner.
63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 |
# File 'lib/spinach/runner.rb', line 63 def run require_dependencies require_frameworks init_reporter Spinach.hooks.run_before_run successful = true filenames.map! do |filename| file, *lines = filename.split(":") [file, lines] end catch :fail do filenames.each do |filename, lines| lines = [nil] if lines.empty? feature = Parser.open_file(filename).parse feature.filename = filename feature.lines = lines lines.each do |line| success = FeatureRunner.new(feature, line).run successful = false unless success throw :fail if fail_fast? && !successful end end end Spinach.hooks.run_after_run(successful) successful end |
#step_definition_files ⇒ Array<String>
Returns an array of files to be required. Sorted by the most nested files first, then alphabetically.
119 120 121 122 123 |
# File 'lib/spinach/runner.rb', line 119 def step_definition_files Dir.glob( File. File.join(step_definitions_path, '**', '*.rb') ).sort{|a,b| [b.count(File::SEPARATOR), a] <=> [a.count(File::SEPARATOR), b]} end |
#support_files ⇒ Array<String>
Returns an array of support files inside the support_path. Will put “env.rb” in the beginning
132 133 134 135 136 137 138 139 140 |
# File 'lib/spinach/runner.rb', line 132 def support_files support_files = Dir.glob( File. File.join(support_path, '**', '*.rb') ) environment_file = support_files.find do |f| f.include?(File.join support_path, 'env.rb') end support_files.unshift(environment_file).compact.uniq end |