From 0aa267f985084e69c3e45cc3e94698eaacab5c36 Mon Sep 17 00:00:00 2001 From: Jeremy Evans Date: Wed, 25 Sep 2019 11:02:40 -0700 Subject: Fix keyword argument sepration issues when IO#open calls #to_open --- test/ruby/test_io.rb | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/test/ruby/test_io.rb b/test/ruby/test_io.rb index a610b608aa..280d11f786 100644 --- a/test/ruby/test_io.rb +++ b/test/ruby/test_io.rb @@ -2279,6 +2279,19 @@ class TestIO < Test::Unit::TestCase assert_equal(o, o2) end + def test_open_redirect_keyword + o = Object.new + def o.to_open(**kw); kw; end + assert_equal({:a=>1}, open(o, a: 1)) + assert_warn(/The last argument is used as the keyword parameter.*for `to_open'/m) do + assert_equal({:a=>1}, open(o, {a: 1})) + end + + def o.to_open(kw); kw; end + assert_equal({:a=>1}, open(o, a: 1)) + assert_equal({:a=>1}, open(o, {a: 1})) + end + def test_open_pipe open("|" + EnvUtil.rubybin, "r+") do |f| f.puts "puts 'foo'" -- cgit v1.2.3