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 create 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
151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 |
# File 'lib/cucumber/rake/task.rb', line 151 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.
137 138 139 |
# File 'lib/cucumber/rake/task.rb', line 137 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.
140 141 142 |
# File 'lib/cucumber/rake/task.rb', line 140 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:
186 187 188 |
# File 'lib/cucumber/rake/task.rb', line 186 def cucumber_opts_with_profile # :nodoc: @profile ? [cucumber_opts, '--profile', @profile] : cucumber_opts end |
#define_task ⇒ Object
:nodoc:
168 169 170 171 172 173 |
# File 'lib/cucumber/rake/task.rb', line 168 def define_task # :nodoc: desc @desc task @task_name do runner.run end end |
#feature_files(task_args = nil) ⇒ Object
:nodoc:
190 191 192 193 194 195 196 197 198 199 200 |
# File 'lib/cucumber/rake/task.rb', line 190 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:
175 176 177 178 179 180 181 182 183 184 |
# File 'lib/cucumber/rake/task.rb', line 175 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:
202 203 204 205 206 207 208 209 210 211 |
# File 'lib/cucumber/rake/task.rb', line 202 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 |