[前][次][番号順一覧][スレッド一覧]

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/

[前][次][番号順一覧][スレッド一覧]