class PowerAssert::BlockContext
Public Class Methods
new(assertion_proc_or_source, assertion_method, source_binding)
click to toggle source
Calls superclass method
PowerAssert::Context.new
# File lib/power_assert/context.rb, line 164 def initialize(assertion_proc_or_source, assertion_method, source_binding) super(0) if assertion_proc_or_source.respond_to?(:to_proc) @assertion_proc = assertion_proc_or_source.to_proc line = nil else @assertion_proc = source_binding.eval "Proc.new {#{assertion_proc_or_source}}" line = assertion_proc_or_source end @parser = Parser::DUMMY @trace_call = TracePoint.new(:call, :c_call) do if PowerAssert.app_context? and Thread.current == @target_thread @trace_call.disable locs = PowerAssert.app_caller_locations path = locs.last.path lineno = locs.last.lineno if File.exist?(path) line ||= File.open(path) {|fp| fp.each_line.drop(lineno - 1).first } end if line @parser = Parser.new(line, path, lineno, @assertion_proc.binding, assertion_method.to_s, @assertion_proc) end end end end
Public Instance Methods
yield()
click to toggle source
# File lib/power_assert/context.rb, line 190 def yield @fired = true invoke_yield(&@assertion_proc) end
Private Instance Methods
invoke_yield() { || ... }
click to toggle source
# File lib/power_assert/context.rb, line 197 def invoke_yield @trace_return.enable do @trace_call.enable do yield end end end