def platform_reader(rake_args)
output, exit_status = *[]
if IO.respond_to?(:popen4)
IO.popen4(*rake_args) do |pid, stdin, stdout, stderr|
output = read_output(stdout, stderr)
end
exit_status = $?
elsif RUBY_VERSION > '1.9'
require 'open3'
Open3.popen3(*rake_args) do |stdin, stdout, stderr, thr|
output = read_output(stdout, stderr)
exit_status = thr.value
end
elsif RUBY_PLATFORM =~ /mingw|mswin/
begin
require 'win32/open3'
Open3.popen3(*rake_args) do |stdin, stdout, stderr|
output = read_output(stdout, stderr)
end
exit_status = $?
rescue LoadError
say "1.8/Windows users must install the 'win32-open3' gem to run tests"
terminate_interaction 1
end
else
require 'open4-vendor'
exit_status = Open4.popen4(*rake_args) do |pid, stdin, stdout, stderr|
output = read_output(stdout, stderr)
end
end
return output, exit_status
end