class Assert::Test
Public Class Methods
for_block(name, context_info, config, &block)
click to toggle source
# File lib/assert/test.rb, line 17 def self.for_block(name, context_info, config, &block) new(name_file_line_context_data(context_info, name).merge({ context_info: context_info, config: config, code: block, })) end
name_file_line_context_data(ci, name)
click to toggle source
new(build_data = nil)
click to toggle source
# File lib/assert/test.rb, line 25 def initialize(build_data = nil) @build_data = build_data || {} @result_callback = nil end
Public Instance Methods
<=>(other)
click to toggle source
# File lib/assert/test.rb, line 81 def <=>(other) name <=> other.name end
code()
click to toggle source
# File lib/assert/test.rb, line 66 def code @code ||= @build_data[:code] end
config()
click to toggle source
# File lib/assert/test.rb, line 62 def config @config ||= @build_data[:config] end
context_class()
click to toggle source
# File lib/assert/test.rb, line 58 def context_class context_info.klass end
context_info()
click to toggle source
# File lib/assert/test.rb, line 54 def context_info @context_info ||= @build_data[:context_info] end
file_line()
click to toggle source
# File lib/assert/test.rb, line 30 def file_line @file_line ||= FileLine.parse((@build_data[:file_line] || "").to_s) end
file_name()
click to toggle source
# File lib/assert/test.rb, line 34 def file_name file_line.file end
inspect()
click to toggle source
# File lib/assert/test.rb, line 85 def inspect attributes_string = ([:name, :context_info].map do |attr| "@#{attr}=#{send(attr).inspect}" end).join(" ") "#<#{self.class}:#{"0x0%x" % (object_id << 1)} #{attributes_string}>" end
line_num()
click to toggle source
# File lib/assert/test.rb, line 38 def line_num file_line.line.to_i end
name()
click to toggle source
# File lib/assert/test.rb, line 42 def name @name ||= (@build_data[:name] || "") end
output()
click to toggle source
# File lib/assert/test.rb, line 46 def output @output ||= (@build_data[:output] || +"") end
run(&result_callback)
click to toggle source
# File lib/assert/test.rb, line 70 def run(&result_callback) @result_callback = result_callback || proc{ |result| } # noop by default scope = context_class.new(self, config, @result_callback) start_time = Time.now capture_output do context_class.run_arounds(scope){ run_test(scope) } end @result_callback = nil @run_time = Time.now - start_time end
run_time()
click to toggle source
# File lib/assert/test.rb, line 50 def run_time @run_time ||= (@build_data[:run_time] || 0) end
Private Instance Methods
capture_io()
click to toggle source
# File lib/assert/test.rb, line 143 def capture_io StringIO.new(output, "a+") end
capture_output(&block)
click to toggle source
# File lib/assert/test.rb, line 132 def capture_output(&block) if config.capture_output == true orig_stdout = $stdout.clone $stdout = capture_io block.call $stdout = orig_stdout else block.call end end
capture_result(result_klass, err)
click to toggle source
# File lib/assert/test.rb, line 128 def capture_result(result_klass, err) @result_callback.call(result_klass.for_test(self, err)) end
run_test(scope)
click to toggle source
# File lib/assert/test.rb, line 94 def run_test(scope) begin # run any assert style "setup do" setups context_class.run_setups(scope) # run any test/unit style "def setup" setups scope.setup if scope.respond_to?(:setup) # run the code block scope.instance_eval(&(code || proc{})) rescue Result::TestFailure => ex capture_result(Result::Fail, ex) rescue Result::TestSkipped => ex capture_result(Result::Skip, ex) rescue SignalException => ex raise(ex) rescue => ex capture_result(Result::Error, ex) ensure begin # run any assert style "teardown do" teardowns context_class.run_teardowns(scope) # run any test/unit style "def teardown" teardowns scope.teardown if scope.respond_to?(:teardown) rescue Result::TestFailure => ex capture_result(Result::Fail, ex) rescue Result::TestSkipped => ex capture_result(Result::Skip, ex) rescue SignalException => ex raise(ex) rescue => ex capture_result(Result::Error, ex) end end end