1module Test 2 module Unit 3 module Util 4 module Output 5 ## 6 # Returns output for standard output and standard 7 # error as string. 8 # 9 # Example: 10 # capture_output do 11 # puts("stdout") 12 # warn("stderr") 13 # end # -> ["stdout\n", "stderr\n"] 14 def capture_output 15 require 'stringio' 16 17 output = StringIO.new 18 error = StringIO.new 19 stdout_save, stderr_save = $stdout, $stderr 20 $stdout, $stderr = output, error 21 begin 22 yield 23 [output.string, error.string] 24 ensure 25 $stdout, $stderr = stdout_save, stderr_save 26 end 27 end 28 end 29 end 30 end 31end 32