From: kou@... Date: 2015-01-16T12:03:27+00:00 Subject: [ruby-core:67627] [ruby-trunk - Bug #10745] Special combinations of parameters in assert_equal (test/unit) may cause exceptions Issue #10745 has been updated by Kouhei Sutou. I think that it should be fixed in ipaddr. The following code should print false instead of raising an exception: ``` % /tmp/local/bin/ruby -v -r ipaddr -e 'puts(IPAddr.new == [])' ruby 2.3.0dev (2015-01-16 trunk 49282) [x86_64-linux] /tmp/local/lib/ruby/2.3.0/ipaddr.rb:471:in `initialize': undefined method `to_i' for []:Array (NoMethodError) from /tmp/local/lib/ruby/2.3.0/ipaddr.rb:516:in `new' from /tmp/local/lib/ruby/2.3.0/ipaddr.rb:516:in `coerce_other' from /tmp/local/lib/ruby/2.3.0/ipaddr.rb:150:in `==' from -e:1:in `
' ``` ---------------------------------------- Bug #10745: Special combinations of parameters in assert_equal (test/unit) may cause exceptions https://bugs.ruby-lang.org/issues/10745#change-51049 * 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/