From: "fxn (Xavier Noria)" <fxn@...> Date: 2012-04-26T16:58:24+09:00 Subject: [ruby-core:44642] [ruby-trunk - Feature #3219] assert now passes non-boolean result Issue #3219 has been updated by fxn (Xavier Noria). Hmmm... if I have # Returns true if the user has first and last names. def name_complete? @first_name && @last_name end I'd like to be able to continue testing that as assert user.name_complete? the alternative assert_send([user, :name_complete?]) seems very obscure to me for testing such an ordinary method. (And since the contract says nothing about the return value, there's no point in testing that if true you get the last name.) ---------------------------------------- Feature #3219: assert now passes non-boolean result https://bugs.ruby-lang.org/issues/3219#change-26210 Author: nobu (Nobuyoshi Nakada) Status: Assigned Priority: Normal Assignee: sorah (Shota Fukumori) Category: Target version: =begin Hi, Test::Unit::Assertions#assert now passes non-boolean values (neither true nor false). It is not only an incompatibility against former TestUnit, also makes wrong tests (e.g., [ruby-core:29861]) passing. diff --git a/lib/test/unit/assertions.rb b/lib/test/unit/assertions.rb index 821faf5..52d5201 100644 --- a/lib/test/unit/assertions.rb +++ b/lib/test/unit/assertions.rb @@ -10,6 +10,16 @@ module Test obj.pretty_inspect.chomp end + def assert(result, *args, &b) + super(result == true || result == false, "assertion result must be true or false") + super + end + + def refute(result, *args, &b) + super(result == true || result == false, "assertion result must be true or false") + super + end + def assert_raise(*args, &b) assert_raises(*args, &b) end -- Nobu Nakada =end -- http://bugs.ruby-lang.org/