class Cucumber::Configuration
The base class for configuring settings for a Cucumber
run.
Public Class Methods
default()
click to toggle source
# File lib/cucumber/configuration.rb, line 13 def self.default new end
new(user_options = {})
click to toggle source
# File lib/cucumber/configuration.rb, line 30 def initialize(user_options = {}) @options = default_options.merge(Cucumber::Hash(user_options)) end
Public Instance Methods
all_files_to_load()
click to toggle source
# File lib/cucumber/configuration.rb, line 157 def all_files_to_load files = require_dirs.map do |path| path = path.gsub(/\\/, '/') # 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.reject! {|f| !File.file?(f)} files.reject! {|f| File.extname(f) == '.goal' } files.reject! {|f| f =~ /^http/} files.sort end
autoload_code_paths()
click to toggle source
# File lib/cucumber/configuration.rb, line 96 def autoload_code_paths @options[:autoload_code_paths] end
dry_run?()
click to toggle source
# File lib/cucumber/configuration.rb, line 60 def dry_run? @options[:dry_run] end
error_stream()
click to toggle source
# File lib/cucumber/configuration.rb, line 48 def error_stream @options[:error_stream] end
expand?()
click to toggle source
# File lib/cucumber/configuration.rb, line 84 def expand? @options[:expand] end
fail_fast?()
click to toggle source
# File lib/cucumber/configuration.rb, line 64 def fail_fast? @options[:fail_fast] end
feature_dirs()
click to toggle source
# File lib/cucumber/configuration.rb, line 104 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_files()
click to toggle source
# File lib/cucumber/configuration.rb, line 131 def feature_files potential_feature_files = with_default_features_path(paths).map do |path| path = path.gsub(/\\/, '/') # 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}/**/*.goal"].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
filters()
click to toggle source
# File lib/cucumber/configuration.rb, line 127 def filters @options[:filters] end
formats()
click to toggle source
# File lib/cucumber/configuration.rb, line 92 def formats @options[:formats] end
formatter_class(format)
click to toggle source
# File lib/cucumber/configuration.rb, line 188 def formatter_class(format) if(builtin = Cli::Options::BUILTIN_FORMATS[format]) constantize(builtin[0]) else constantize(format) end end
formatter_factories() { |factory, path_or_io, options(STDOUT, STDERR, options)| ... }
click to toggle source
# File lib/cucumber/configuration.rb, line 174 def formatter_factories @options[:formats].map do |format_and_out| format = format_and_out[0] path_or_io = format_and_out[1] begin factory = formatter_class(format) yield factory, path_or_io, Cli::Options.new(STDOUT, STDERR, @options) rescue Exception => e e.message << "\nError creating formatter: #{format}" raise e end end end
guess?()
click to toggle source
# File lib/cucumber/configuration.rb, line 72 def guess? @options[:guess] end
name_regexps()
click to toggle source
# File lib/cucumber/configuration.rb, line 123 def name_regexps @options[:name_regexps] end
options()
click to toggle source
TODO: Actually Deprecate
???
# File lib/cucumber/configuration.rb, line 39 def options warn("Deprecated: Configuration#options will be removed from the next release of Cucumber. Please use the configuration object directly instead.") Marshal.load(Marhal.dump(@options)) end
out_stream()
click to toggle source
# File lib/cucumber/configuration.rb, line 44 def out_stream @options[:out_stream] end
paths()
click to toggle source
# File lib/cucumber/configuration.rb, line 88 def paths @options[:paths] end
randomize?()
click to toggle source
# File lib/cucumber/configuration.rb, line 52 def randomize? @options[:order] == 'random' end
register_snippet_generator(generator)
click to toggle source
# File lib/cucumber/configuration.rb, line 214 def register_snippet_generator(generator) snippet_generators << generator self end
retry_attempts()
click to toggle source
# File lib/cucumber/configuration.rb, line 68 def retry_attempts @options[:retry] end
seed()
click to toggle source
# File lib/cucumber/configuration.rb, line 56 def seed Integer(@options[:seed] || rand(0xFFFF)) end
snippet_generators()
click to toggle source
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
# File lib/cucumber/configuration.rb, line 210 def snippet_generators @options[:snippet_generators] ||= [] end
snippet_type()
click to toggle source
# File lib/cucumber/configuration.rb, line 100 def snippet_type @options[:snippet_type] end
step_defs_to_load()
click to toggle source
# File lib/cucumber/configuration.rb, line 170 def step_defs_to_load all_files_to_load.reject {|f| f =~ %r{/support/} } end
strict?()
click to toggle source
# File lib/cucumber/configuration.rb, line 76 def strict? @options[:strict] end
support_to_load()
click to toggle source
# File lib/cucumber/configuration.rb, line 150 def support_to_load support_files = all_files_to_load.select {|f| f =~ %r{/support/} } env_files = support_files.select {|f| f =~ %r{/support/env\..*} } other_files = support_files - env_files @options[:dry_run] ? other_files : env_files + other_files end
tag_expression()
click to toggle source
todo: remove
# File lib/cucumber/configuration.rb, line 111 def tag_expression Cucumber::Core::Gherkin::TagExpression.new(@options[:tag_expressions]) end
tag_expressions()
click to toggle source
# File lib/cucumber/configuration.rb, line 119 def tag_expressions @options[:tag_expressions] end
tag_limits()
click to toggle source
# File lib/cucumber/configuration.rb, line 115 def tag_limits tag_expression.limits.to_hash end
to_hash()
click to toggle source
# File lib/cucumber/configuration.rb, line 196 def to_hash @options end
wip?()
click to toggle source
# File lib/cucumber/configuration.rb, line 80 def wip? @options[:wip] end
with_options(new_options)
click to toggle source
# File lib/cucumber/configuration.rb, line 34 def with_options(new_options) self.class.new(@options.merge(new_options)) end
Private Instance Methods
default_features_paths()
click to toggle source
# File lib/cucumber/configuration.rb, line 247 def default_features_paths ["goals"] end
default_options()
click to toggle source
# File lib/cucumber/configuration.rb, line 221 def default_options { :autoload_code_paths => ['goals/support', 'goals/step_definitions'], :filters => [], :strict => false, :require => [], :dry_run => false, :fail_fast => false, :formats => [], :excludes => [], :tag_expressions => [], :name_regexps => [], :env_vars => {}, :diff_enabled => true, :snippets => true, :source => true, :duration => true, :event_bus => Events::Bus.new(Cucumber::Events) } end
event_bus()
click to toggle source
# File lib/cucumber/configuration.rb, line 242 def event_bus @options[:event_bus] end
remove_excluded_files_from(files)
click to toggle source
# File lib/cucumber/configuration.rb, line 256 def remove_excluded_files_from(files) files.reject! {|path| @options[:excludes].detect {|pattern| path =~ pattern } } end
require_dirs()
click to toggle source
# File lib/cucumber/configuration.rb, line 260 def require_dirs if @options[:require].empty? default_features_paths + Dir['vendor/{gems,plugins}/*/mobiusloop'] else @options[:require] end end
with_default_features_path(paths)
click to toggle source
# File lib/cucumber/configuration.rb, line 251 def with_default_features_path(paths) return default_features_paths if paths.empty? paths end