summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authornaruse <naruse@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2014-02-02 13:46:46 +0000
committernaruse <naruse@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2014-02-02 13:46:46 +0000
commit3da0a0cead8eb70dba54d291151d2e9458a0159d (patch)
tree49f5927d7a823dd585085de02cd6aad58f8d9e3b /test
parent484a6ffb788fd0f0ee5fc6448125a7e0980c0c4d (diff)
merge revision(s) 44630,44631: [Backport #9403]
* lib/delegate.rb (Delegator): keep source information methods which start and end with '__'. [ruby-core:58572] [Bug #9155] which start and end with '__'. [ruby-core:59718] [Bug #9403] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_1@44794 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'test')
-rw-r--r--test/test_delegate.rb57
1 files changed, 57 insertions, 0 deletions
diff --git a/test/test_delegate.rb b/test/test_delegate.rb
index ca65ef3daa..6270cc61b6 100644
--- a/test/test_delegate.rb
+++ b/test/test_delegate.rb
@@ -180,4 +180,61 @@ class TestDelegateClass < Test::Unit::TestCase
x = assert_nothing_raised(ArgumentError, bug9155) {break Bug9155.new(1)}
assert_equal(1, x.to_i, bug9155)
end
+
+ class Bug9403
+ Name = '[ruby-core:59718] [Bug #9403]'
+ SD = SimpleDelegator.new(new)
+ class << SD
+ def method_name
+ __method__
+ end
+ def callee_name
+ __callee__
+ end
+ alias aliased_name callee_name
+ def dir_name
+ __dir__
+ end
+ end
+ dc = DelegateClass(self)
+ dc.class_eval do
+ def method_name
+ __method__
+ end
+ def callee_name
+ __callee__
+ end
+ alias aliased_name callee_name
+ def dir_name
+ __dir__
+ end
+ end
+ DC = dc.new(new)
+ end
+
+ def test_method_in_simple_delegator
+ assert_equal(:method_name, Bug9403::SD.method_name, Bug9403::Name)
+ end
+
+ def test_callee_in_simple_delegator
+ assert_equal(:callee_name, Bug9403::SD.callee_name, Bug9403::Name)
+ assert_equal(:aliased_name, Bug9403::SD.aliased_name, Bug9403::Name)
+ end
+
+ def test_dir_in_simple_delegator
+ assert_equal(__dir__, Bug9403::SD.dir_name, Bug9403::Name)
+ end
+
+ def test_method_in_delegator_class
+ assert_equal(:method_name, Bug9403::DC.method_name, Bug9403::Name)
+ end
+
+ def test_callee_in_delegator_class
+ assert_equal(:callee_name, Bug9403::DC.callee_name, Bug9403::Name)
+ assert_equal(:aliased_name, Bug9403::DC.aliased_name, Bug9403::Name)
+ end
+
+ def test_dir_in_delegator_class
+ assert_equal(__dir__, Bug9403::DC.dir_name, Bug9403::Name)
+ end
end