module Minitest::Assertions

def capture_subprocess_io

def capture_subprocess_io
  _synchronize do
    begin
  require 'tempfile'
  captured_stdout, captured_stderr = Tempfile.new("out"), Tempfile.new("err")
  orig_stdout, orig_stderr = $stdout.dup, $stderr.dup
  $stdout.reopen captured_stdout
  $stderr.reopen captured_stderr
  yield
  $stdout.rewind
  $stderr.rewind
  return captured_stdout.read, captured_stderr.read
ensure
  captured_stdout.unlink
  captured_stderr.unlink
  $stdout.reopen orig_stdout
  $stderr.reopen orig_stderr
    end
  end
end