summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/test/unit/assertions.rb11
-rw-r--r--test/ruby/test_arity.rb4
2 files changed, 10 insertions, 5 deletions
diff --git a/lib/test/unit/assertions.rb b/lib/test/unit/assertions.rb
index 7da0c4e1eb..042adba6fd 100644
--- a/lib/test/unit/assertions.rb
+++ b/lib/test/unit/assertions.rb
@@ -88,7 +88,7 @@ module Test
# assert_raise_with_message(RuntimeError, "foo") do
# raise "foo" #Raises RuntimeError with the message, so assertion succeeds
# end
- def assert_raise_with_message(exception, expected, msg = nil)
+ def assert_raise_with_message(exception, expected, msg = nil, &block)
case expected
when String
assert = :assert_equal
@@ -100,7 +100,14 @@ module Test
ex = assert_raise(exception, *msg) {yield}
msg = message(msg, "") {"Expected Exception(#{exception}) was raised, but the message doesn't match"}
- __send__(assert, expected, ex.message, msg)
+
+ if assert == :assert_equal
+ assert_equal(expected, ex.message, msg)
+ else
+ msg = message(msg) { "Expected #{mu_pp expected} to match #{mu_pp ex.message}" }
+ assert expected =~ ex.message, msg
+ block.binding.eval("proc{|_|$~=_}").call($~)
+ end
ex
end
diff --git a/test/ruby/test_arity.rb b/test/ruby/test_arity.rb
index 18ef9b2d03..e026841749 100644
--- a/test/ruby/test_arity.rb
+++ b/test/ruby/test_arity.rb
@@ -3,7 +3,7 @@ require 'test/unit'
class TestArity < Test::Unit::TestCase
def err_mess(method_proc = nil, argc = 0)
args = (1..argc).to_a
- err = assert_raise(ArgumentError) do
+ assert_raise_with_message(ArgumentError, /wrong number of arguments \((.*)\)/) do
case method_proc
when nil
yield
@@ -13,8 +13,6 @@ class TestArity < Test::Unit::TestCase
method_proc.call(*args)
end
end
- s = err.to_s
- assert s =~ /wrong number of arguments \((.*)\)/, "Unexpected ArgumentError's message: #{s}"
$1
end