1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164
|
# frozen_string_literal: true
require_relative "helper"
require "rubygems/deprecate"
class TestGemDeprecate < Gem::TestCase
def setup
super
@original_skip = Gem::Deprecate.skip
Gem::Deprecate.skip = false
end
def teardown
super
Gem::Deprecate.skip = @original_skip
end
def test_defaults
assert_equal false, @original_skip
end
def test_assignment
Gem::Deprecate.skip = false
assert_equal false, Gem::Deprecate.skip
Gem::Deprecate.skip = true
assert_equal true, Gem::Deprecate.skip
Gem::Deprecate.skip = nil
assert([true,false].include?(Gem::Deprecate.skip))
end
def test_skip
Gem::Deprecate.skip_during do
assert_equal true, Gem::Deprecate.skip
end
Gem::Deprecate.skip = nil
end
class Thing
extend Gem::Deprecate
attr_accessor :message
def foo
@message = "foo"
end
def bar
@message = "bar"
end
rubygems_deprecate :foo, :bar
def foo_arg(msg)
@message = "foo" + msg
end
def bar_arg(msg)
@message = "bar" + msg
end
rubygems_deprecate :foo_arg, :bar_arg
def foo_kwarg(message:)
@message = "foo" + message
end
def bar_kwarg(message:)
@message = "bar" + message
end
rubygems_deprecate :foo_kwarg, :bar_kwarg
end
class OtherThing
extend Gem::Deprecate
attr_accessor :message
def foo
@message = "foo"
end
def bar
@message = "bar"
end
deprecate :foo, :bar, 2099, 3
def foo_arg(msg)
@message = "foo" + msg
end
def bar_arg(msg)
@message = "bar" + msg
end
deprecate :foo_arg, :bar_arg, 2099, 3
def foo_kwarg(message:)
@message = "foo" + message
end
def bar_kwarg(message:)
@message = "bar" + message
end
deprecate :foo_kwarg, :bar_kwarg, 2099, 3
end
def test_deprecated_method_calls_the_old_method
capture_output do
thing = Thing.new
thing.foo
assert_equal "foo", thing.message
thing.foo_arg("msg")
assert_equal "foomsg", thing.message
thing.foo_kwarg(message: "msg")
assert_equal "foomsg", thing.message
end
end
def test_deprecated_method_outputs_a_warning
out, err = capture_output do
thing = Thing.new
thing.foo
thing.foo_arg("msg")
thing.foo_kwarg(message: "msg")
end
assert_equal "", out
assert_match(/Thing#foo is deprecated; use bar instead\./, err)
assert_match(/Thing#foo_arg is deprecated; use bar_arg instead\./, err)
assert_match(/Thing#foo_kwarg is deprecated; use bar_kwarg instead\./, err)
assert_match(/in Rubygems [0-9]+/, err)
end
def test_rubygems_deprecate_command
require "rubygems/command"
foo_command = Class.new(Gem::Command) do
extend Gem::Deprecate
rubygems_deprecate_command
def execute
puts "pew pew!"
end
end
Gem::Commands.send(:const_set, :FooCommand, foo_command)
assert Gem::Commands::FooCommand.new("foo").deprecated?
ensure
Gem::Commands.send(:remove_const, :FooCommand)
end
def test_deprecated_method_outputs_a_warning_old_way
out, err = capture_output do
thing = OtherThing.new
thing.foo
thing.foo_arg("msg")
thing.foo_kwarg(message: "msg")
end
assert_equal "", out
assert_match(/OtherThing#foo is deprecated; use bar instead\./, err)
assert_match(/OtherThing#foo_arg is deprecated; use bar_arg instead\./, err)
assert_match(/OtherThing#foo_kwarg is deprecated; use bar_kwarg instead\./, err)
assert_match(/on or after 2099-03/, err)
end
end
|