diff --git a/ChangeLog b/ChangeLog index 7ca33c8f8f..7ab497199b 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,15 @@ +Fri Dec 5 23:22:30 2003 Nobuyoshi Nakada + + * lib/test/unit/assertions.rb (Test::Unit::Assertions::assert_raises, + Test::Unit::Assertions::assert_nothing_raised): use the last + argument as message unless non-class object. + + * test/testunit/test_assertions.rb (test_assert_raises): test for + multiple exception list. [ruby-core:01891] + + * test/testunit/test_assertions.rb (test_assert_nothing_raised): test + for non-exception classes. + Fri Dec 5 22:23:04 2003 NAKAMURA, Hiroshi * lib/soap/netHttpClient.rb: proxy support did not work. fixed. diff --git a/lib/test/unit/assertions.rb b/lib/test/unit/assertions.rb index 02126badca..3076b7fd02 100644 --- a/lib/test/unit/assertions.rb +++ b/lib/test/unit/assertions.rb @@ -60,13 +60,13 @@ EOT public def assert_raises(*args) _wrap_assertion do - if Class === args.last and Exception >= args.last + if Class === args.last message = "" else message = args.pop end args.each do |klass| - assert(Exception >= klass, "Should expect a class of exception") + assert(Exception >= klass, "Should expect a class of exception, #{klass}") end expected = args.size == 1 ? args.first : args actual_exception = nil @@ -182,13 +182,13 @@ EOT public def assert_nothing_raised(*args) _wrap_assertion do - if Class === args.last and Exception >= args.last + if Class === args.last message = "" else message = args.pop end args.each do |klass| - assert(Exception >= klass, "Should expect a class of exception") + assert(Exception >= klass, "Should expect a class of exception, #{klass}") end begin yield diff --git a/test/testunit/test_assertions.rb b/test/testunit/test_assertions.rb index f62a6186e9..6d0283174c 100644 --- a/test/testunit/test_assertions.rb +++ b/test/testunit/test_assertions.rb @@ -138,6 +138,38 @@ module Test raise "Error" } } + check_fails("Should expect a class of exception, Object.\n is not true.") { + assert_nothing_raised(Object) { + 1 + 1 + } + } + + exceptions = [ArgumentError, TypeError] + exceptions.each do |exc| + check_nothing_fails(true) { + return_value = assert_raises(*exceptions) { + raise exc, "Error" + } + } + check(return_value.instance_of?(exc), "Should have returned #{exc} but was #{return_value.class}") + check(return_value.message == "Error", "Should have returned the correct exception from a successful assert_raises") + end + check_fails("<[ArgumentError, TypeError]> exception expected but none was thrown.") { + assert_raises(*exceptions) { + 1 + 1 + } + } + check_fails(%r{\Afailed assert_raises. +<\[ArgumentError, TypeError\]> exception expected but was +Class: +Message: <"Error"> +---Backtrace--- +.+ +---------------\Z}m) { + assert_raises(ArgumentError, TypeError, "failed assert_raises") { + raise "Error" + } + } end def test_assert_instance_of @@ -272,6 +304,11 @@ module Test rescue ZeroDivisionError end } + check_fails("Should expect a class of exception, Object.\n is not true.") { + assert_nothing_raised(Object) { + 1 + 1 + } + } check_fails(%r{\AException raised:\nClass: \nMessage: <"Error">\n---Backtrace---\n.+\n---------------\Z}m) { assert_nothing_raised { raise "Error"