ruby-changes:13380
From: nobu <ko1@a...>
Date: Tue, 29 Sep 2009 15:26:57 +0900 (JST)
Subject: [ruby-changes:13380] Ruby:r25150 (trunk): * test/ruby/test_{class,module}.rb (test_method_redefinition): refined.
nobu 2009-09-29 15:26:46 +0900 (Tue, 29 Sep 2009) New Revision: 25150 http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=25150 Log: * test/ruby/test_{class,module}.rb (test_method_redefinition): refined. Modified files: trunk/test/ruby/envutil.rb trunk/test/ruby/test_class.rb trunk/test/ruby/test_module.rb Index: test/ruby/test_module.rb =================================================================== --- test/ruby/test_module.rb (revision 25149) +++ test/ruby/test_module.rb (revision 25150) @@ -786,4 +786,32 @@ assert_equal [:f, :g, :a, :a=], memo.shift assert_equal mod.instance_method(:a=), memo.shift end + + def test_method_redefinition + stderr = EnvUtil.verbose_warning do + Module.new do + def foo; end + def foo; end + end + end + assert_match(/method redefined; discarding old foo/, stderr) + + stderr = EnvUtil.verbose_warning do + Module.new do + def foo; end + alias bar foo + alias bar foo + end + end + assert_equal("", stderr) + + stderr = EnvUtil.verbose_warning do + Module.new do + module_function + def foo; end + module_function :foo + end + end + assert_equal("", stderr, '[ruby-dev:39397]') + end end Index: test/ruby/envutil.rb =================================================================== --- test/ruby/envutil.rb (revision 25149) +++ test/ruby/envutil.rb (revision 25150) @@ -65,6 +65,19 @@ stderr.close unless !stderr || stderr.closed? end module_function :rubyexec + + + def verbose_warning + class << (stderr = "") + alias write << + end + stderr, $stderr, verbose, $VERBOSE = $stderr, stderr, $VERBOSE, true + yield stderr + ensure + stderr, $stderr, $VERBOSE = $stderr, stderr, verbose + return stderr + end + module_function :verbose_warning end module Test Index: test/ruby/test_class.rb =================================================================== --- test/ruby/test_class.rb (revision 25149) +++ test/ruby/test_class.rb (revision 25150) @@ -98,46 +98,56 @@ assert_equal(nil, BasicObject.superclass) end - def verbose_warning - class << (stderr = "") - alias write << - end - stderr, $stderr, verbose, $VERBOSE = $stderr, stderr, $VERBOSE, true - yield - ensure - stderr, $stderr, $VERBOSE = $stderr, stderr, verbose - return stderr - end - def test_module_function c = Class.new assert_raise(TypeError) do Module.instance_method(:module_function).bind(c).call(:foo) end + end - stderr = verbose_warning do - Module.new do + def test_method_redefinition + stderr = EnvUtil.verbose_warning do + Class.new do def foo; end def foo; end end end assert_match(/method redefined; discarding old foo/, stderr) - stderr = verbose_warning do - Module.new do + + stderr = EnvUtil.verbose_warning do + Class.new do def foo; end alias bar foo + def foo; end + end + end + assert_equal("", stderr) + + stderr = EnvUtil.verbose_warning do + Class.new do + def foo; end alias bar foo + alias bar foo end end assert_equal("", stderr) - stderr = verbose_warning do - Module.new do - module_function + + stderr = EnvUtil.verbose_warning do + Class.new do + define_method(:foo) do end def foo; end - module_function :foo end end - assert_equal("", stderr, '[ruby-dev:39397]') + assert_match(/method redefined; discarding old foo/, stderr) + + stderr = EnvUtil.verbose_warning do + Class.new do + define_method(:foo) do end + alias bar foo + alias barf oo + end + end + assert_equal("", stderr) end def test_check_inheritable -- ML: ruby-changes@q... Info: http://www.atdot.net/~ko1/quickml/