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