Class: Cucumber::Configuration

Inherits:
Object
  • Object
show all
Extended by:
Forwardable
Includes:
Constantize
Defined in:
lib/cucumber/configuration.rb

Overview

The base class for configuring settings for a Cucumber run.

Class Method Summary collapse

Instance Method Summary collapse

Methods included from Constantize

#constantize, #underscore

Constructor Details

#initialize(user_options = {}) ⇒ Configuration

Returns a new instance of Configuration.

 37 38 39
# File 'lib/cucumber/configuration.rb', line 37 def initialize(user_options = {}) @options = default_options.merge(Hash(user_options)) end 

Class Method Details

.defaultObject

 18 19 20
# File 'lib/cucumber/configuration.rb', line 18 def self.default new end 

Instance Method Details

#all_files_to_loadObject

 193 194 195 196 197 198 199 200 201 202 203 204
# File 'lib/cucumber/configuration.rb', line 193 def all_files_to_load files = require_dirs.map do |path| path = path.tr('\\', '/') # In case we're on windows. Globs don't work with backslashes. path = path.gsub(/\/$/, '') # Strip trailing slash. File.directory?(path) ? Dir["#{path}/**/*"] : path end.flatten.uniq remove_excluded_files_from(files) files.select! { |f| File.file?(f) } files.reject! { |f| File.extname(f) == '.feature' } files.reject! { |f| f =~ /^http/ } files.sort end 

#autoload_code_pathsObject

 133 134 135
# File 'lib/cucumber/configuration.rb', line 133 def autoload_code_paths @options[:autoload_code_paths] end 

#custom_profilesObject

 121 122 123
# File 'lib/cucumber/configuration.rb', line 121 def custom_profiles profiles - [@options[:default_profile]] end 

#dry_run?Boolean

Returns:

  • (Boolean)
 61 62 63
# File 'lib/cucumber/configuration.rb', line 61 def dry_run? @options[:dry_run] end 

#duration?Boolean

Returns:

  • (Boolean)
 105 106 107
# File 'lib/cucumber/configuration.rb', line 105 def duration? @options[:duration] end 

#error_streamObject

 49 50 51
# File 'lib/cucumber/configuration.rb', line 49 def error_stream @options[:error_stream] end 

#event_busObject

 252 253 254
# File 'lib/cucumber/configuration.rb', line 252 def event_bus @options[:event_bus] end 

#expand?Boolean

Returns:

  • (Boolean)
 97 98 99
# File 'lib/cucumber/configuration.rb', line 97 def expand? @options[:expand] end 

#fail_fast?Boolean

Returns:

  • (Boolean)
 73 74 75
# File 'lib/cucumber/configuration.rb', line 73 def fail_fast? @options[:fail_fast] end 

#feature_dirsObject

 141 142 143 144 145
# File 'lib/cucumber/configuration.rb', line 141 def feature_dirs dirs = paths.map { |f| File.directory?(f) ? f : File.dirname(f) }.uniq dirs.delete('.') unless paths.include?('.') with_default_features_path(dirs) end 

#feature_filesObject

 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180
# File 'lib/cucumber/configuration.rb', line 163 def feature_files potential_feature_files = with_default_features_path(paths).map do |path| path = path.tr('\\', '/') # In case we're on windows. Globs don't work with backslashes. path = path.chomp('/') # TODO: Move to using feature loading strategies stored in # options[:feature_loaders] if File.directory?(path) Dir["#{path}/**/*.feature"].sort elsif Cli::RerunFile.can_read?(path) Cli::RerunFile.new(path).features else path end end.flatten.uniq remove_excluded_files_from(potential_feature_files) potential_feature_files end 

#filtersObject

 159 160 161
# File 'lib/cucumber/configuration.rb', line 159 def filters @options[:filters] end 

#formatsObject

 129 130 131
# File 'lib/cucumber/configuration.rb', line 129 def formats @options[:formats] end 

#formatter_class(format) ⇒ Object

 221 222 223 224 225 226 227
# File 'lib/cucumber/configuration.rb', line 221 def formatter_class(format) if (builtin = Cli::Options::BUILTIN_FORMATS[format]) constantize(builtin[0]) else constantize(format) end end 

#formatter_factoriesObject

 210 211 212 213 214 215 216 217 218 219
# File 'lib/cucumber/configuration.rb', line 210 def formatter_factories formats.map do |format, formatter_options, path_or_io| factory = formatter_class(format) yield factory, formatter_options, path_or_io rescue Exception => e raise e, "#{e.message}\nError creating formatter: #{format}", e.backtrace end end 

#guess?Boolean

Returns:

  • (Boolean)
 85 86 87
# File 'lib/cucumber/configuration.rb', line 85 def guess? @options[:guess] end 

#id_generatorObject

 256 257 258
# File 'lib/cucumber/configuration.rb', line 256 def id_generator @id_generator ||= Cucumber::Messages::Helpers::IdGenerator::UUID.new end 

#name_regexpsObject

 155 156 157
# File 'lib/cucumber/configuration.rb', line 155 def name_regexps @options[:name_regexps] end 

#notify(message, *args) ⇒ Object

 33 34 35
# File 'lib/cucumber/configuration.rb', line 33 def notify(message, *args) event_bus.send(message, *args) end 

#on_event {|Object| ... } ⇒ Object

Subscribe to an event.

See Events for the list of possible events.

Parameters:

  • event_id (Symbol, Class, String)

    Identifier for the type of event to subscribe to

  • handler_object (Object optional)

    an object to be called when the event occurs

Yields:

  • (Object)

    Block to be called when the event occurs

 30
# File 'lib/cucumber/configuration.rb', line 30 def_instance_delegator :event_bus, :on, :on_event 

#out_streamObject

 45 46 47
# File 'lib/cucumber/configuration.rb', line 45 def out_stream @options[:out_stream] end 

#pathsObject

 125 126 127
# File 'lib/cucumber/configuration.rb', line 125 def paths @options[:paths] end 

#profilesObject

 117 118 119
# File 'lib/cucumber/configuration.rb', line 117 def profiles @options[:profiles] || [] end 

#publish_enabled?Boolean

Returns:

  • (Boolean)
 65 66 67
# File 'lib/cucumber/configuration.rb', line 65 def publish_enabled? @options[:publish_enabled] end 

#publish_quiet?Boolean

Returns:

  • (Boolean)
 69 70 71
# File 'lib/cucumber/configuration.rb', line 69 def publish_quiet? @options[:publish_quiet] end 

#randomize?Boolean

Returns:

  • (Boolean)
 53 54 55
# File 'lib/cucumber/configuration.rb', line 53 def randomize? @options[:order] == 'random' end 

#register_snippet_generator(generator) ⇒ Object

 247 248 249 250
# File 'lib/cucumber/configuration.rb', line 247 def register_snippet_generator(generator) snippet_generators << generator self end 

#retry_attemptsObject

 77 78 79
# File 'lib/cucumber/configuration.rb', line 77 def retry_attempts @options[:retry] end 

#retry_total_testsObject

 81 82 83
# File 'lib/cucumber/configuration.rb', line 81 def retry_total_tests @options[:retry_total] end 

#seedObject

 57 58 59
# File 'lib/cucumber/configuration.rb', line 57 def seed @options[:seed] end 

#skip_profile_information?Boolean

Returns:

  • (Boolean)
 113 114 115
# File 'lib/cucumber/configuration.rb', line 113 def skip_profile_information? @options[:skip_profile_information] end 

#snippet_generatorsObject

An array of procs that can generate snippets for undefined steps. These procs may be called if a formatter wants to display snippets to the user.

Each proc should take the following arguments:

- keyword - step text - multiline argument - snippet type 
 243 244 245
# File 'lib/cucumber/configuration.rb', line 243 def snippet_generators @options[:snippet_generators] ||= [] end 

#snippet_typeObject

 137 138 139
# File 'lib/cucumber/configuration.rb', line 137 def snippet_type @options[:snippet_type] end 

#snippets?Boolean

Returns:

  • (Boolean)
 109 110 111
# File 'lib/cucumber/configuration.rb', line 109 def snippets? @options[:snippets] end 

#source?Boolean

Returns:

  • (Boolean)
 101 102 103
# File 'lib/cucumber/configuration.rb', line 101 def source? @options[:source] end 

#step_defs_to_loadObject

 206 207 208
# File 'lib/cucumber/configuration.rb', line 206 def step_defs_to_load all_files_to_load.reject { |f| f =~ /\/support\// } end 

#strictObject

 89 90 91
# File 'lib/cucumber/configuration.rb', line 89 def strict @options[:strict] end 

#support_to_loadObject

 182 183 184 185 186 187 188 189 190 191
# File 'lib/cucumber/configuration.rb', line 182 def support_to_load support_files = all_files_to_load.select { |f| f =~ /\/support\// } # env_files are separated from other_files so we can ensure env files # load first. # env_files = support_files.select { |f| f =~ /\/support\/env\..*/ } other_files = support_files - env_files env_files.reverse + other_files.reverse end 

#tag_expressionsObject

 151 152 153
# File 'lib/cucumber/configuration.rb', line 151 def tag_expressions @options[:tag_expressions] end 

#tag_limitsObject

 147 148 149
# File 'lib/cucumber/configuration.rb', line 147 def tag_limits @options[:tag_limits] end 

#to_hashObject

 229 230 231
# File 'lib/cucumber/configuration.rb', line 229 def to_hash @options end 

#wip?Boolean

Returns:

  • (Boolean)
 93 94 95
# File 'lib/cucumber/configuration.rb', line 93 def wip? @options[:wip] end 

#with_options(new_options) ⇒ Object

 41 42 43
# File 'lib/cucumber/configuration.rb', line 41 def with_options(new_options) self.class.new(@options.merge(new_options)) end