File: test_deprecated.rb

package info (click to toggle)
ruby-deprecated 3.0.0-1
  • links: PTS, VCS
  • area: main
  • in suites: wheezy
  • size: 88 kB
  • sloc: ruby: 152; makefile: 2
file content (102 lines) | stat: -rw-r--r-- 2,597 bytes parent folder | download
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
#!/usr/bin/env ruby

require 'test/unit'
require 'lib/deprecated.rb'

# 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_raise(DeprecatedError) { DummyClass.new.monkey }

        Deprecated.set_action { |klass, sym| raise DeprecatedError.new("#{klass}##{sym} is deprecated.") }
        exception = assert_raise(DeprecatedError) { DummyClass.new.monkey }
        assert_equal("DummyClass#monkey is deprecated.", exception.message)

        Deprecated.set_action(:raise)

        assert_raise(DeprecatedError) { DummyClass.new.monkey }
        assert_equal("DummyClass#monkey is deprecated.", exception.message)

        # set to warn and make sure our return values are getting through.
        Deprecated.set_action(:warn)
        assert(DummyClass.new.monkey)

        Deprecated.set_action(:fail)
        assert_raise(RuntimeError) { 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
        exception = assert_raise(DeprecatedError) { DummyClass2.new.monkey }
        assert_equal("foo!", exception.message)
    end

    def test_replacement
        Deprecated.set_action(:raise)

        exception = assert_raise(DeprecatedError) { DummyClass.new.monkey_bars }
        assert_equal("DummyClass#monkey_bars is deprecated. Please use FooClass#fart.", exception.message)
    end
end