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