From: "fxn (Xavier Noria)" Date: 2012-04-26T17:07:39+09:00 Subject: [ruby-core:44643] [ruby-trunk - Feature #3219] assert now passes non-boolean result Issue #3219 has been updated by fxn (Xavier Noria). In my view those are a kind of predicates that deserve to be tested using a straightforward assertion call. They are common, for example # Says whether there's a user in the session. def logged_in? @current_user end or # Says whether the request is Ajax. def xml_http_request? @env['HTTP_X_REQUESTED_WITH'] =~ /XMLHttpRequest/i end etc. ---------------------------------------- Feature #3219: assert now passes non-boolean result https://bugs.ruby-lang.org/issues/3219#change-26212 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/