module Kernel
def with_warnings_suppressed
saved_verbosity = $-v
$-v = nil
yield
ensure
$-v = saved_verbosity
end
end
if $0 == __FILE__
require 'rubygems'
require 'spec'
def warning_generator
IO.popen( '-' ) do |io|
if io
return io.read
else
$stderr.reopen( $stdout )
Object.const_set( 'MONKEY', 1 )
Object.const_set( 'MONKEY', 2 )
end
end
end
describe Kernel do
it "should supress warnings" do
with_warnings_suppressed do
warning_generator
end.should == ""
end
it "should restore the previous verbosity state when it's finished" do
with_warnings_suppressed do
warning_generator
end.should == ""
warning_generator.should match( /warning: already initialized constant MONKEY/ )
end
end
end