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

ruby-changes:3284

From: ko1@a...
Date: 29 Dec 2007 04:48:15 +0900
Subject: [ruby-changes:3284] gotoyuzo - Ruby:r14777 (trunk): * lib/test/unit/assertions.rb (Test::Unit::Assertions#assert_throws):

gotoyuzo	2007-12-29 04:47:55 +0900 (Sat, 29 Dec 2007)

  New Revision: 14777

  Modified files:
    trunk/ChangeLog
    trunk/lib/test/unit/assertions.rb
    trunk/test/testunit/test_assertions.rb

  Log:
    * lib/test/unit/assertions.rb (Test::Unit::Assertions#assert_throws):
      throw won't raise NameError nor ThreadError but ArgumentError on 1.9.
      (Test::Unit::Assertions#assert_not_throws): ditto.
    
    * test/testunit/test_assertions.rb: add assertions for throwing some
      objects other than Symbol.


  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/test/testunit/test_assertions.rb?r1=14777&r2=14776
  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/ChangeLog?r1=14777&r2=14776
  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/lib/test/unit/assertions.rb?r1=14777&r2=14776

Index: ChangeLog
===================================================================
--- ChangeLog	(revision 14776)
+++ ChangeLog	(revision 14777)
@@ -1,3 +1,12 @@
+Sat Dec 29 04:46:58 2007  GOTOU Yuuzou  <gotoyuzo@n...>
+
+	* lib/test/unit/assertions.rb (Test::Unit::Assertions#assert_throws):
+	  throw won't raise NameError nor ThreadError but ArgumentError on 1.9.
+	  (Test::Unit::Assertions#assert_not_throws): ditto.
+
+	* test/testunit/test_assertions.rb: add assertions for throwing some
+	  objects other than Symbol.
+
 Sat Dec 29 03:10:12 2007  NAKAMURA Usaku  <usa@r...>
 
 	* io.c (io_unread): fix typo.
Index: lib/test/unit/assertions.rb
===================================================================
--- lib/test/unit/assertions.rb	(revision 14776)
+++ lib/test/unit/assertions.rb	(revision 14777)
@@ -369,11 +369,12 @@
         end
       end
 
-      UncaughtThrow = {NameError => /^uncaught throw \`(.+)\'$/,
-                       ThreadError => /^uncaught throw \`(.+)\' in thread /} #`
+      UncaughtThrow = {
+        ArgumentError => /^uncaught throw (.+)$/,
+      } #`
 
       ##
-      # Passes if the block throws +expected_symbol+
+      # Passes if the block throws +expected_value+
       #
       # Example:
       #   assert_throws :done do
@@ -381,23 +382,22 @@
       #   end
 
       public
-      def assert_throws(expected_symbol, message="", &proc)
+      def assert_throws(expected_value, message="", &proc)
         _wrap_assertion do
-          assert_instance_of(Symbol, expected_symbol, "assert_throws expects the symbol that should be thrown for its first argument")
           assert_block("Should have passed a block to assert_throws."){block_given?}
           caught = true
           begin
-            catch(expected_symbol) do
+            catch(expected_value) do
               proc.call
               caught = false
             end
-            full_message = build_message(message, "<?> should have been thrown.", expected_symbol)
+            full_message = build_message(message, "<?> should have been thrown.", expected_value)
             assert_block(full_message){caught}
-          rescue NameError, ThreadError => error
+          rescue ArgumentError => error
             if UncaughtThrow[error.class] !~ error.message
               raise error
             end
-            full_message = build_message(message, "<?> expected to be thrown but\n<?> was thrown.", expected_symbol, $1.intern)
+            full_message = build_message(message, "<?> expected to be thrown but\n<#$1> was thrown.", expected_value)
             flunk(full_message)
           end
         end
@@ -417,11 +417,11 @@
           assert(block_given?, "Should have passed a block to assert_nothing_thrown")
           begin
             proc.call
-          rescue NameError, ThreadError => error
+          rescue ArgumentError => error
             if UncaughtThrow[error.class] !~ error.message
               raise error
             end
-            full_message = build_message(message, "<?> was thrown when nothing was expected", $1.intern)
+            full_message = build_message(message, "<#$1> was thrown when nothing was expected")
             flunk(full_message)
           end
           assert(true, "Expected nothing to be thrown")
Index: test/testunit/test_assertions.rb
===================================================================
--- test/testunit/test_assertions.rb	(revision 14776)
+++ test/testunit/test_assertions.rb	(revision 14777)
@@ -403,6 +403,22 @@
             throw :thing
           }
         }
+        check_nothing_fails {
+          assert_throws(0, "message") {
+            throw 0
+          }
+        }
+        obj = Object.new
+        check_nothing_fails {
+          assert_throws(obj, "message") {
+            throw obj
+          }
+        }
+        check_fails("message.\n<\"string\"> expected to be thrown but\n<\"string\"> was thrown.") {
+          assert_throws("string", "message") {
+            throw "string"
+          }
+        }
         check_fails("message.\n<:thing> expected to be thrown but\n<:thing2> was thrown.") {
           assert_throws(:thing, "message") {
             throw :thing2

--
ML: ruby-changes@q...
Info: http://www.atdot.net/~ko1/quickml

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