From: eregontp@... Date: 2015-01-16T12:34:48+00:00 Subject: [ruby-core:67628] [ruby-trunk - Bug #10745] Special combinations of parameters in assert_equal (test/unit) may cause exceptions Issue #10745 has been updated by Benoit Daloze. Tsuyoshi Sawada wrote: > An interesting case. `assert_equal` seems to be assuming that the `==` method on the relevant class (`IPAddr#==` here) does not raise an error, but that should not be taken for granted. It should be wrapped in a rescue block. I disagree, the exception is more useful as an error than just assert_equal returning false. Kouhei Sutou wrote: > I think that it should be fixed in ipaddr. Indeed, the error from IPAddr could be clearer, ---------------------------------------- Bug #10745: Special combinations of parameters in assert_equal (test/unit) may cause exceptions https://bugs.ruby-lang.org/issues/10745#change-51050 * Author: Herwin . * Status: Rejected * Priority: Low * Assignee: * ruby -v: 2.1.2p95 * Backport: 2.0.0: UNKNOWN, 2.1: UNKNOWN, 2.2: UNKNOWN ---------------------------------------- ~~~ruby require 'test/unit' require 'ipaddr' class TestX < Test::Unit::TestCase def test_x assert_equal([IPAddr.new('1.2.3.4')], [[1,2,3]]) end end ~~~ This results in the following trace: ~~~ NoMethodError: undefined method `to_i' for [1, 2, 3]:Array /usr/lib/ruby/2.1.0/ipaddr.rb:471:in `initialize' /usr/lib/ruby/2.1.0/ipaddr.rb:516:in `new' /usr/lib/ruby/2.1.0/ipaddr.rb:516:in `coerce_other' /usr/lib/ruby/2.1.0/ipaddr.rb:150:in `==' /usr/lib/ruby/2.1.0/test/unit/assertions.rb:250:in `==' /usr/lib/ruby/2.1.0/test/unit/assertions.rb:250:in `assert_equal' ~~~ I don't think the `assert_equal` is supposed to throw these kind of errors -- https://bugs.ruby-lang.org/