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