# File 'activesupport/lib/active_support/testing/isolation.rb', line 36
def run_in_isolation(&blk)
IO.pipe do |read, write|
read.binmode
write.binmode
pid = fork do
read.close
yield
begin
if error?
failures.map! { |e|
begin
Marshal.dump e
e
rescue TypeError
ex = Exception.new e.message
ex.set_backtrace e.backtrace
Minitest::UnexpectedError.new ex
end
}
end
test_result = defined?(Minitest::Result) ? Minitest::Result.from(self) : dup
result = Marshal.dump(test_result)
end
write.puts [result].pack("m")
exit!(0)
end
write.close
result = read.read
_, status = Process.wait2(pid)
return status, result.unpack1("m")
end
end