class Cucumber::Cli::ProfileLoader
def args_from(profile)
def args_from(profile) unless cucumber_yml.has_key?(profile) raise(ProfileNotFound, <<-END_OF_ERROR) not find profile: '#{profile}' d profiles in cucumber.yml: cucumber_yml.keys.join("\n * ")} END_OF_ERROR end args_from_yml = cucumber_yml[profile] || '' case(args_from_yml) when String raise YmlLoadError, "The '#{profile}' profile in cucumber.yml was blank. Please define the command line arguments for the '#{profile}' profile in cucumber.yml.\n" if args_from_yml =~ /^\s*$/ args_from_yml = args_from_yml.split(' ') when Array raise YmlLoadError, "The '#{profile}' profile in cucumber.yml was empty. Please define the command line arguments for the '#{profile}' profile in cucumber.yml.\n" if args_from_yml.empty? else raise YmlLoadError, "The '#{profile}' profile in cucumber.yml was a #{args_from_yml.class}. It must be a String or Array" end args_from_yml end
def cucumber_file
and be located in the current directory (eg. project root) or
Locates cucumber.yml file. The file can end in .yml or .yaml,
def cucumber_file @cucumber_file ||= Dir.glob('{,.config/,config/}cucumber{.yml,.yaml}').first end
def cucumber_yml
def cucumber_yml return @cucumber_yml if @cucumber_yml unless cucumber_yml_defined? raise(ProfilesNotDefinedError,"cucumber.yml was not found. Please refer to cucumber's documentation on defining profiles in cucumber.yml. You must define a 'default' profile to use the cucumber command without any arguments.\nType 'cucumber --help' for usage.\n") end require 'erb' require 'yaml' begin @cucumber_erb = ERB.new(IO.read(cucumber_file)).result rescue Exception => e raise(YmlLoadError,"cucumber.yml was found, but could not be parsed with ERB. Please refer to cucumber's documentation on correct profile usage.\n#{$!.inspect}") end begin @cucumber_yml = YAML::load(@cucumber_erb) rescue StandardError => e raise(YmlLoadError,"cucumber.yml was found, but could not be parsed. Please refer to cucumber's documentation on correct profile usage.\n") end if @cucumber_yml.nil? || !@cucumber_yml.is_a?(Hash) raise(YmlLoadError,"cucumber.yml was found, but was blank or malformed. Please refer to cucumber's documentation on correct profile usage.\n") end return @cucumber_yml end
def cucumber_yml_defined?
def cucumber_yml_defined? cucumber_file && File.exist?(cucumber_file) end
def has_profile?(profile)
def has_profile?(profile) cucumber_yml.has_key?(profile) end
def initialize
def initialize @cucumber_yml = nil end