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
|
#!/usr/bin/env ruby
require 'test/unit'
$:.unshift 'lib'
require 'deprecated.rb'
$:.shift
# this class is used to test the deprecate functionality
class DummyClass
include Deprecated
def monkey
return true
end
def monkey_bars
return true
end
deprecated :monkey
deprecated :monkey_bars, "FooClass#fart"
protected
def my_protected
return true
end
deprecated :my_protected
private
def my_private
return true
end
deprecated :my_private
end
class DummyClass2
include Deprecated
deprecated_set_action do |klass, sym, replacement|
raise DeprecatedError, "foo!"
end
def monkey
return true
end
deprecated :monkey
end
# we want exceptions for testing here.
Deprecated.set_action(:raise)
class DeprecateTest < Test::Unit::TestCase
def test_set_action
assert_raises(DeprecatedError) { DummyClass.new.monkey }
Deprecated.set_action { |klass, sym| raise DeprecatedError.new("#{klass}##{sym} is deprecated.") }
assert_raises(DeprecatedError, "DummyClass#monkey is deprecated.") do
DummyClass.new.monkey
end
Deprecated.set_action(:raise)
assert_raises(DeprecatedError, "DummyClass#monkey is deprecated.") do
DummyClass.new.monkey
end
# set to warn and make sure our return values are getting through.
Deprecated.set_action(:warn)
assert(DummyClass.new.monkey)
Kernel.module_eval {
def self.fail
raise "failed"
end
}
Deprecated.set_action(:fail)
assert_raises(RuntimeError, "failed") { DummyClass.new.monkey }
end
def test_scope
assert(
DummyClass.public_instance_methods.include?(:monkey) ||
DummyClass.public_instance_methods.include?("monkey")
)
assert(
DummyClass.protected_instance_methods.include?(:my_protected) ||
DummyClass.protected_instance_methods.include?("my_protected")
)
assert(
DummyClass.private_instance_methods.include?(:my_private) ||
DummyClass.private_instance_methods.include?("my_private")
)
end
def test_scoped_actions
assert_raises(DeprecatedError, "foo!") { DummyClass2.new.monkey }
end
def test_replacement
Deprecated.set_action(:raise)
assert_raises(DeprecatedError, "DummyClass#monkey_bars is deprecated. Please use FooClass#fart.") do
DummyClass.new.monkey_bars
end
end
end
|