From: sawadatsuyoshi@... Date: 2015-01-17T23:05:33+00:00 Subject: [ruby-core:67663] [ruby-trunk - Bug #10745] Special combinations of parameters in assert_equal (test/unit) may cause exceptions Issue #10745 has been updated by Tsuyoshi Sawada. Benoit Daloze wrote: > I disagree, the exception is more useful as an error than just assert_equal returning false. According to http://docs.ruby-lang.org/ja/2.1.0/method/Test=3a=3aUnit=3a=3aAssertions/i/assert_equal.html, it should raise `MiniTest::Assertion` error, which should wrap the message and backtrace from the `NoMethodError`. It should not raise a `NoMethodError`. This is a bug of minitest in that it could not properly handle the test object's (ipaddr) bug. ---------------------------------------- Bug #10745: Special combinations of parameters in assert_equal (test/unit) may cause exceptions https://bugs.ruby-lang.org/issues/10745#change-51080 * 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/