Parent

Class Index [+]

Quicksearch

Cucumber::Cli::ProfileLoader

Public Class Methods

new() click to toggle source
   # File lib/cucumber/cli/profile_loader.rb, line 6
6:       def initialize
7:         @cucumber_yml = nil
8:       end

Public Instance Methods

args_from(profile) click to toggle source
    # File lib/cucumber/cli/profile_loader.rb, line 10
10:       def args_from(profile)
11:         unless cucumber_yml.has_key?(profile)
12:           raise(ProfileNotFound, Could not find profile: '#{profile}'Defined profiles in cucumber.yml:  * #{cucumber_yml.keys.join("\n  * ")})
13:         end
14: 
15:         args_from_yml = cucumber_yml[profile] || ''
16: 
17:         case(args_from_yml)
18:           when String
19:             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*$/
20:             if(Cucumber::WINDOWS)
21:               #Shellwords treats backslash as an escape character so here's a rudimentary approximation of the same code
22:               args_from_yml = args_from_yml.split
23:               args_from_yml = args_from_yml.collect {|x| x.gsub(/^\"(.*)\"/,'\1') }
24:             else
25:               require 'shellwords'
26:               args_from_yml = Shellwords.shellwords(args_from_yml)
27:             end
28:           when Array
29:             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?
30:           else
31:             raise YmlLoadError, "The '#{profile}' profile in cucumber.yml was a #{args_from_yml.class}. It must be a String or Array"
32:         end
33:         args_from_yml
34:       end
cucumber_yml_defined?() click to toggle source
    # File lib/cucumber/cli/profile_loader.rb, line 45
45:       def cucumber_yml_defined?
46:         cucumber_file && File.exist?(cucumber_file)
47:       end
has_profile?(profile) click to toggle source
    # File lib/cucumber/cli/profile_loader.rb, line 41
41:       def has_profile?(profile)
42:         cucumber_yml.has_key?(profile)
43:       end

Private Instance Methods

cucumber_file() click to toggle source

Locates cucumber.yml file. The file can end in .yml or .yaml, and be located in the current directory (eg. project root) or in a .config/ or config/ subdirectory of the current directory.

    # File lib/cucumber/cli/profile_loader.rb, line 82
82:       def cucumber_file
83:         @cucumber_file ||= Dir.glob('{,.config/,config/}cucumber{.yml,.yaml}').first
84:       end
cucumber_yml() click to toggle source

Loads the profile, processing it through ERB and YAML, and returns it as a hash.

    # File lib/cucumber/cli/profile_loader.rb, line 52
52:       def cucumber_yml
53:         return @cucumber_yml if @cucumber_yml
54:         unless cucumber_yml_defined?
55:           raise(ProfilesNotDefinedError,"cucumber.yml was not found.  Current directory is #{Dir.pwd}.  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")
56:         end
57: 
58:         require 'erb'
59:         require 'yaml'
60:         begin
61:           @cucumber_erb = ERB.new(IO.read(cucumber_file)).result(binding)
62:         rescue Exception => e
63:           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}")
64:         end
65: 
66:         begin
67:           @cucumber_yml = YAML::load(@cucumber_erb)
68:         rescue StandardError => e
69:           raise(YmlLoadError,"cucumber.yml was found, but could not be parsed. Please refer to cucumber's documentation on correct profile usage.\n")
70:         end
71: 
72:         if @cucumber_yml.nil? || !@cucumber_yml.is_a?(Hash)
73:           raise(YmlLoadError,"cucumber.yml was found, but was blank or malformed. Please refer to cucumber's documentation on correct profile usage.\n")
74:         end
75: 
76:         return @cucumber_yml
77:       end

Disabled; run with --debug to generate this.

[Validate]

Generated with the Darkfish Rdoc Generator 1.1.6.