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