Class Spec::Runner::Options
In: lib/spec/runner/options.rb
Parent: Object

Methods

Constants

BUILT_IN_FORMATTERS = { 'specdoc' => Formatter::SpecdocFormatter, 's' => Formatter::SpecdocFormatter, 'html' => Formatter::HtmlFormatter, 'h' => Formatter::HtmlFormatter, 'rdoc' => Formatter::RdocFormatter, 'r' => Formatter::RdocFormatter, 'progress' => Formatter::ProgressBarFormatter, 'p' => Formatter::ProgressBarFormatter, 'failing_examples' => Formatter::FailingExamplesFormatter, 'e' => Formatter::FailingExamplesFormatter, 'failing_behaviours' => Formatter::FailingBehavioursFormatter, 'b' => Formatter::FailingBehavioursFormatter

Attributes

backtrace_tweaker  [RW] 
colour  [RW] 
context_lines  [RW] 
diff_format  [RW] 
differ_class  [RW] 
dry_run  [RW] 
examples  [RW] 
failure_file  [RW] 
formatters  [RW] 
generate  [RW] 
heckle_runner  [RW] 
line_number  [RW] 
loadby  [RW] 
reporter  [RW] 
reverse  [RW] 
runner_type  [RW] 
timeout  [RW] 
verbose  [RW] 

Public Class methods

[Source]

    # File lib/spec/runner/options.rb, line 40
40:       def initialize
41:         @backtrace_tweaker = QuietBacktraceTweaker.new
42:         @examples = []
43:         @formatters = []
44:         @colour = false
45:         @dry_run = false
46:       end

Public Instance methods

[Source]

    # File lib/spec/runner/options.rb, line 48
48:       def create_behaviour_runner
49:         @formatters.each do |formatter|
50:           formatter.colour = @colour if formatter.respond_to?(:colour=)
51:           formatter.dry_run = @dry_run if formatter.respond_to?(:dry_run=)
52:         end
53:         @reporter = Reporter.new(@formatters, @backtrace_tweaker)
54: 
55:         # this doesn't really belong here.
56:         # it should, but the way things are coupled, it doesn't
57:         if @differ_class
58:           Spec::Expectations.differ = @differ_class.new(@diff_format, @context_lines, @colour)
59:         end
60: 
61:         return nil if @generate
62: 
63:         if @runner_type
64:           @runner_type.new(self)
65:         else
66:           BehaviourRunner.new(self)
67:         end
68:       end

[Source]

    # File lib/spec/runner/options.rb, line 70
70:       def parse_diff(format, out_stream, error_stream)
71:         @context_lines = 3
72:         case format
73:           when :context, 'context', 'c'
74:             @diff_format  = :context
75:           when :unified, 'unified', 'u', '', nil
76:             @diff_format  = :unified
77:         end
78: 
79:         if [:context,:unified].include? @diff_format
80:           require 'spec/expectations/differs/default'
81:           @differ_class = Spec::Expectations::Differs::Default
82:         else
83:           begin
84:             @diff_format  = :custom
85:             @differ_class = eval(format)
86:           rescue NameError
87:             error_stream.puts "Couldn't find differ class #{format}"
88:             error_stream.puts "Make sure the --require option is specified *before* --diff"
89:             exit if out_stream == $stdout
90:           end
91:         end
92:       end

[Source]

     # File lib/spec/runner/options.rb, line 94
 94:       def parse_example(example)
 95:         if(File.file?(example))
 96:           @examples = File.open(example).read.split("\n")
 97:         else
 98:           @examples = [example]
 99:         end
100:       end

[Source]

     # File lib/spec/runner/options.rb, line 102
102:       def parse_format(format, out_stream, error_stream)
103:         where = out_stream
104:         # This funky regexp checks whether we have a FILE_NAME or not
105:         if (format =~ /([a-zA-Z_]+(?:::[a-zA-Z_]+)*):?(.*)/) && ($2 != '')
106:           format = $1
107:           where = $2
108:         else
109:           raise "When using several --format options only one of them can be without a file" if @out_used
110:           @out_used = true
111:         end
112: 
113:         begin
114:           formatter_type = BUILT_IN_FORMATTERS[format] || eval(format)
115:           @formatters << formatter_type.new(where)
116:         rescue NameError
117:           error_stream.puts "Couldn't find formatter class #{format}"
118:           error_stream.puts "Make sure the --require option is specified *before* --format"
119:           exit if out_stream == $stdout
120:         end
121:       end

[Source]

     # File lib/spec/runner/options.rb, line 133
133:       def parse_generate_options(options_file, args_copy, out_stream)
134:         # Remove the --generate-options option and the argument before writing to file
135:         index = args_copy.index("-G") || args_copy.index("--generate-options")
136:         args_copy.delete_at(index)
137:         args_copy.delete_at(index)
138: 
139:         File.open(options_file, 'w') do |io|
140:           io.puts args_copy.join("\n")
141:         end
142:         out_stream.puts "\nOptions written to #{options_file}. You can now use these options with:"
143:         out_stream.puts "spec --options #{options_file}"
144:         @generate = true
145:       end

[Source]

     # File lib/spec/runner/options.rb, line 127
127:       def parse_heckle(heckle)
128:         heckle_require = [/mswin/, /java/].detect{|p| p =~ RUBY_PLATFORM} ? 'spec/runner/heckle_runner_unsupported' : 'spec/runner/heckle_runner'
129:         require heckle_require
130:         @heckle_runner = HeckleRunner.new(heckle)
131:       end

[Source]

     # File lib/spec/runner/options.rb, line 123
123:       def parse_require(req)
124:         req.split(",").each{|file| require file}
125:       end

[Source]

     # File lib/spec/runner/options.rb, line 147
147:       def parse_runner(runner, out_stream, error_stream)
148:         begin
149:           @runner_type = eval(runner)
150:         rescue NameError
151:           error_stream.puts "Couldn't find behaviour runner class #{runner}"
152:           error_stream.puts "Make sure the --require option is specified."
153:           exit if out_stream == $stdout
154:         end
155:       end

[Validate]