Class: Cucumber::Rake::Task
Overview
Defines a Rake task for running features.
The simplest use of it goes something like:
Cucumber::Rake::Task.new
This will define a task named cucumber
described as ‘Run Cucumber features’. It will use steps from ‘features/*/.rb’ and features in ‘features/*/.feature’.
To further configure the task, you can pass a block:
Cucumber::Rake::Task.new do |t|
t.cucumber_opts = %w{--format progress}
end
This task can also be configured to be run with RCov:
Cucumber::Rake::Task.new do |t|
t.rcov = true
end
See the attributes for additional configuration possibilities.
Direct Known Subclasses
Defined Under Namespace
Classes: ForkedCucumberRunner, InProcessCucumberRunner, RCovCucumberRunner
Constant Summary collapse
- LIB =
:nodoc:
File.(File.dirname(__FILE__) + '/../..')
Instance Attribute Summary collapse
-
#binary ⇒ Object
Name of the cucumber binary to use for running features.
-
#cucumber_opts ⇒ Object
Extra options to pass to the cucumber binary.
-
#fork ⇒ Object
Whether or not to fork a new ruby interpreter.
-
#libs ⇒ Object
Directories to add to the Ruby $LOAD_PATH.
-
#profile ⇒ Object
Define what profile to be used.
-
#rcov ⇒ Object
Run cucumber with RCov? Defaults to false.
-
#rcov_opts ⇒ Object
Extra options to pass to rcov.
Class Method Summary collapse
-
.deprecate_accessor(attribute) ⇒ Object
TODO: remove depreated accessors for 0.4.0.
Instance Method Summary collapse
-
#cucumber_opts_with_profile ⇒ Object
:nodoc:.
-
#define_task ⇒ Object
:nodoc:.
-
#feature_files(task_args = nil) ⇒ Object
:nodoc:.
-
#initialize(task_name = "cucumber", desc = "Run Cucumber features") {|_self| ... } ⇒ Task
constructor
Define Cucumber Rake task.
-
#runner(task_args = nil) ⇒ Object
:nodoc:.
-
#step_files(task_args = nil) ⇒ Object
:nodoc:.
Constructor Details
#initialize(task_name = "cucumber", desc = "Run Cucumber features") {|_self| ... } ⇒ Task
Define Cucumber Rake task
153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 |
# File 'lib/cucumber/rake/task.rb', line 153 def initialize(task_name = "cucumber", desc = "Run Cucumber features") @task_name, @desc = task_name, desc @fork = true @libs = ['lib'] @rcov_opts = %w{--rails --exclude osx\/objc,gems\/} yield self if block_given? @feature_pattern = "features/**/*.feature" if feature_pattern.nil? && feature_list.nil? @step_pattern = "features/**/*.rb" if step_pattern.nil? && step_list.nil? @binary = binary.nil? ? Cucumber::BINARY : File.(binary) @libs.insert(0, LIB) if binary == Cucumber::BINARY define_task end |
Instance Attribute Details
#binary ⇒ Object
Name of the cucumber binary to use for running features. Defaults to Cucumber::BINARY
102 103 104 |
# File 'lib/cucumber/rake/task.rb', line 102 def binary @binary end |
#cucumber_opts ⇒ Object
Extra options to pass to the cucumber binary. Can be overridden by the CUCUMBER_OPTS environment variable. It’s recommended to pass an Array, but if it’s a String it will be #split by ‘ ’.
120 121 122 |
# File 'lib/cucumber/rake/task.rb', line 120 def cucumber_opts @cucumber_opts end |
#fork ⇒ Object
Whether or not to fork a new ruby interpreter. Defaults to true. You may gain some startup speed if you set it to false, but this may also cause issues with your load path and gems.
139 140 141 |
# File 'lib/cucumber/rake/task.rb', line 139 def fork @fork end |
#libs ⇒ Object
Directories to add to the Ruby $LOAD_PATH
99 100 101 |
# File 'lib/cucumber/rake/task.rb', line 99 def libs @libs end |
#profile ⇒ Object
Define what profile to be used. When used with cucumber_opts it is simply appended to it. Will be ignored when CUCUMBER_OPTS is used.
142 143 144 |
# File 'lib/cucumber/rake/task.rb', line 142 def profile @profile end |
#rcov ⇒ Object
Run cucumber with RCov? Defaults to false. If you set this to true, fork
is implicit.
127 128 129 |
# File 'lib/cucumber/rake/task.rb', line 127 def rcov @rcov end |
#rcov_opts ⇒ Object
Extra options to pass to rcov. It’s recommended to pass an Array, but if it’s a String it will be #split by ‘ ’.
131 132 133 |
# File 'lib/cucumber/rake/task.rb', line 131 def rcov_opts @rcov_opts end |
Class Method Details
.deprecate_accessor(attribute) ⇒ Object
TODO: remove depreated accessors for 0.4.0
88 89 90 91 92 93 94 95 96 |
# File 'lib/cucumber/rake/task.rb', line 88 def self.deprecate_accessor(attribute) #:nodoc: attr_reader attribute class_eval <<-EOF, __FILE__, __LINE__ + 1 def #{attribute}=(value) @#{attribute} = value warn("\nWARNING: Cucumber::Rake::Task##{attribute} is deprecated and will be removed in 0.4.0. Please use profiles for complex settings: http://wiki.github.com/aslakhellesoy/cucumber/using-rake#profiles\n") end EOF end |
Instance Method Details
#cucumber_opts_with_profile ⇒ Object
:nodoc:
188 189 190 |
# File 'lib/cucumber/rake/task.rb', line 188 def cucumber_opts_with_profile #:nodoc: @profile ? [cucumber_opts, '--profile', @profile] : cucumber_opts end |
#define_task ⇒ Object
:nodoc:
170 171 172 173 174 175 |
# File 'lib/cucumber/rake/task.rb', line 170 def define_task #:nodoc: desc @desc task @task_name do runner.run end end |
#feature_files(task_args = nil) ⇒ Object
:nodoc:
192 193 194 195 196 197 198 199 200 201 202 |
# File 'lib/cucumber/rake/task.rb', line 192 def feature_files(task_args = nil) #:nodoc: if ENV['FEATURE'] FileList[ ENV['FEATURE'] ] else result = [] result += feature_list.to_a if feature_list result += FileList[feature_pattern].to_a if feature_pattern result = make_command_line_safe(result) FileList[result] end end |
#runner(task_args = nil) ⇒ Object
:nodoc:
177 178 179 180 181 182 183 184 185 186 |
# File 'lib/cucumber/rake/task.rb', line 177 def runner(task_args = nil) #:nodoc: cucumber_opts = [(ENV['CUCUMBER_OPTS'] ? ENV['CUCUMBER_OPTS'].split(/\s+/) : nil) || cucumber_opts_with_profile] if(@rcov) RCovCucumberRunner.new(libs, binary, cucumber_opts, feature_files(task_args), rcov_opts) elsif(@fork) ForkedCucumberRunner.new(libs, binary, cucumber_opts, feature_files(task_args)) else InProcessCucumberRunner.new(libs, cucumber_opts, feature_files(task_args)) end end |
#step_files(task_args = nil) ⇒ Object
:nodoc:
204 205 206 207 208 209 210 211 212 213 |
# File 'lib/cucumber/rake/task.rb', line 204 def step_files(task_args = nil) #:nodoc: if ENV['STEPS'] FileList[ ENV['STEPS'] ] else result = [] result += Array(step_list) if step_list result += Array(FileList[step_pattern]) if step_pattern FileList[result] end end |