1
0
Fork 0
mirror of https://github.com/ruby/ruby.git synced 2022-11-09 12:17:21 -05:00

Fix more keyword argument separation issues in Pathname

This commit is contained in:
Jeremy Evans 2019-09-25 15:32:35 -07:00
parent 3959469f24
commit 47d44510a3
Notes: git 2019-09-27 00:02:32 +09:00
2 changed files with 37 additions and 5 deletions

View file

@ -434,7 +434,7 @@ path_write(int argc, VALUE *argv, VALUE self)
args[0] = get_strpath(self); args[0] = get_strpath(self);
n = rb_scan_args(argc, argv, "03", &args[1], &args[2], &args[3]); n = rb_scan_args(argc, argv, "03", &args[1], &args[2], &args[3]);
return rb_funcallv(rb_cFile, id_write, 1+n, args); return rb_funcallv_kw(rb_cFile, id_write, 1+n, args, RB_PASS_CALLED_KEYWORDS);
} }
/* /*
@ -455,7 +455,7 @@ path_binwrite(int argc, VALUE *argv, VALUE self)
args[0] = get_strpath(self); args[0] = get_strpath(self);
n = rb_scan_args(argc, argv, "03", &args[1], &args[2], &args[3]); n = rb_scan_args(argc, argv, "03", &args[1], &args[2], &args[3]);
return rb_funcallv(rb_cFile, id_binwrite, 1+n, args); return rb_funcallv_kw(rb_cFile, id_binwrite, 1+n, args, RB_PASS_CALLED_KEYWORDS);
} }
/* /*
@ -477,7 +477,7 @@ path_readlines(int argc, VALUE *argv, VALUE self)
args[0] = get_strpath(self); args[0] = get_strpath(self);
n = rb_scan_args(argc, argv, "03", &args[1], &args[2], &args[3]); n = rb_scan_args(argc, argv, "03", &args[1], &args[2], &args[3]);
return rb_funcallv(rb_cFile, id_readlines, 1+n, args); return rb_funcallv_kw(rb_cFile, id_readlines, 1+n, args, RB_PASS_CALLED_KEYWORDS);
} }
/* /*
@ -678,10 +678,10 @@ path_open(int argc, VALUE *argv, VALUE self)
args[0] = get_strpath(self); args[0] = get_strpath(self);
n = rb_scan_args(argc, argv, "03", &args[1], &args[2], &args[3]); n = rb_scan_args(argc, argv, "03", &args[1], &args[2], &args[3]);
if (rb_block_given_p()) { if (rb_block_given_p()) {
return rb_block_call(rb_cFile, id_open, 1+n, args, 0, 0); return rb_block_call_kw(rb_cFile, id_open, 1+n, args, 0, 0, RB_PASS_CALLED_KEYWORDS);
} }
else { else {
return rb_funcallv(rb_cFile, id_open, 1+n, args); return rb_funcallv_kw(rb_cFile, id_open, 1+n, args, RB_PASS_CALLED_KEYWORDS);
} }
} }

View file

@ -745,6 +745,14 @@ class TestPathname < Test::Unit::TestCase
} }
end end
def test_readlines_opts
with_tmpchdir('rubytest-pathname') {|dir|
open("a", "w") {|f| f.puts 1, 2 }
a = Pathname("a").readlines 1, chomp: true
assert_equal(["1", "", "2", ""], a)
}
end
def test_read def test_read
with_tmpchdir('rubytest-pathname') {|dir| with_tmpchdir('rubytest-pathname') {|dir|
open("a", "w") {|f| f.puts 1, 2 } open("a", "w") {|f| f.puts 1, 2 }
@ -769,6 +777,14 @@ class TestPathname < Test::Unit::TestCase
} }
end end
def test_write_opts
with_tmpchdir('rubytest-pathname') {|dir|
path = Pathname("a")
path.write "abc", mode: "w"
assert_equal("abc", path.read)
}
end
def test_binwrite def test_binwrite
with_tmpchdir('rubytest-pathname') {|dir| with_tmpchdir('rubytest-pathname') {|dir|
path = Pathname("a") path = Pathname("a")
@ -777,6 +793,14 @@ class TestPathname < Test::Unit::TestCase
} }
end end
def test_binwrite_opts
with_tmpchdir('rubytest-pathname') {|dir|
path = Pathname("a")
path.binwrite "abc\x80", mode: 'w'
assert_equal("abc\x80".b, path.binread)
}
end
def test_sysopen def test_sysopen
with_tmpchdir('rubytest-pathname') {|dir| with_tmpchdir('rubytest-pathname') {|dir|
open("a", "w") {|f| f.write "abc" } open("a", "w") {|f| f.write "abc" }
@ -929,6 +953,10 @@ class TestPathname < Test::Unit::TestCase
assert_equal("abc", f.read) assert_equal("abc", f.read)
} }
path.open(mode: "r") {|f|
assert_equal("abc", f.read)
}
Pathname("b").open("w", 0444) {|f| f.write "def" } Pathname("b").open("w", 0444) {|f| f.write "def" }
assert_equal(0444 & ~File.umask, File.stat("b").mode & 0777) assert_equal(0444 & ~File.umask, File.stat("b").mode & 0777)
assert_equal("def", File.read("b")) assert_equal("def", File.read("b"))
@ -940,6 +968,10 @@ class TestPathname < Test::Unit::TestCase
g = path.open g = path.open
assert_equal("abc", g.read) assert_equal("abc", g.read)
g.close g.close
g = path.open(mode: "r")
assert_equal("abc", g.read)
g.close
} }
end end