class CaptureOutput < String def write(*str) self << str.to_s end end $stdout = CaptureOutput.new $stderr = CaptureOutput.new $defout.puts "DEFOUT\n" $deferr.write "DEFERR\n"
MRI 1.8.6, MRI 1.9 print nothing. JRuby prints: DEFOUT DEFERR
This leads to additional noise when running rubinius specs for getoptlong:
#>bin/mspec -V -t j ruby/spec/1.8/library/getoptlong/ Started ruby/spec/1.8/library/getoptlong//each_option_spec.rb. ruby/spec/1.8/library/getoptlong//each_spec.rb. ruby/spec/1.8/library/getoptlong//error_message_spec.rb.tmp/last_mspec.rb: argument error . ruby/spec/1.8/library/getoptlong//get_option_spec.rb...tmp/last_mspec.rb: option `--size' requires an argument . ruby/spec/1.8/library/getoptlong//get_spec.rb...tmp/last_mspec.rb: option `--size' requires an argument . ruby/spec/1.8/library/getoptlong//initialize_spec.rb.. ruby/spec/1.8/library/getoptlong//ordering_spec.rbtmp/last_mspec.rb: argument error
The proposed patch fixes the problem and eliminates the extra noise when running the specs.