1require 'rubygems/test_case' 2# require 'rubygems/builder' 3# require 'rubygems/package' 4require 'rubygems/deprecate' 5 6class TestDeprecate < Gem::TestCase 7 8 def setup 9 super 10 11 # Gem::Deprecate.saved_warnings.clear 12 @original_skip = Gem::Deprecate.skip 13 Gem::Deprecate.skip = false 14 end 15 16 def teardown 17 super 18 19 # Gem::Deprecate.saved_warnings.clear 20 Gem::Deprecate.skip = @original_skip 21 end 22 23 def test_defaults 24 assert_equal false, @original_skip 25 end 26 27 def test_assignment 28 Gem::Deprecate.skip = false 29 assert_equal false, Gem::Deprecate.skip 30 31 Gem::Deprecate.skip = true 32 assert_equal true, Gem::Deprecate.skip 33 34 Gem::Deprecate.skip = nil 35 assert([true,false].include? Gem::Deprecate.skip) 36 end 37 38 def test_skip 39 Gem::Deprecate.skip_during do 40 assert_equal true, Gem::Deprecate.skip 41 end 42 43 Gem::Deprecate.skip = nil 44 end 45 46 class Thing 47 extend Gem::Deprecate 48 attr_accessor :message 49 def foo 50 @message = "foo" 51 end 52 def bar 53 @message = "bar" 54 end 55 deprecate :foo, :bar, 2099, 3 56 end 57 58 def test_deprecated_method_calls_the_old_method 59 capture_io do 60 thing = Thing.new 61 thing.foo 62 assert_equal "foo", thing.message 63 end 64 end 65 66 def test_deprecated_method_outputs_a_warning 67 out, err = capture_io do 68 thing = Thing.new 69 thing.foo 70 end 71 72 assert_equal "", out 73 assert_match(/Thing#foo is deprecated; use bar instead\./, err) 74 assert_match(/on or after 2099-03-01/, err) 75 end 76end 77