зеркало из https://github.com/github/ruby.git
Fix more keyword argument separation issues in Pathname
This commit is contained in:
Родитель
3959469f24
Коммит
47d44510a3
|
@ -434,7 +434,7 @@ path_write(int argc, VALUE *argv, VALUE self)
|
|||
|
||||
args[0] = get_strpath(self);
|
||||
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);
|
||||
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);
|
||||
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);
|
||||
n = rb_scan_args(argc, argv, "03", &args[1], &args[2], &args[3]);
|
||||
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 {
|
||||
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);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -745,6 +745,14 @@ class TestPathname < Test::Unit::TestCase
|
|||
}
|
||||
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
|
||||
with_tmpchdir('rubytest-pathname') {|dir|
|
||||
open("a", "w") {|f| f.puts 1, 2 }
|
||||
|
@ -769,6 +777,14 @@ class TestPathname < Test::Unit::TestCase
|
|||
}
|
||||
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
|
||||
with_tmpchdir('rubytest-pathname') {|dir|
|
||||
path = Pathname("a")
|
||||
|
@ -777,6 +793,14 @@ class TestPathname < Test::Unit::TestCase
|
|||
}
|
||||
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
|
||||
with_tmpchdir('rubytest-pathname') {|dir|
|
||||
open("a", "w") {|f| f.write "abc" }
|
||||
|
@ -929,6 +953,10 @@ class TestPathname < Test::Unit::TestCase
|
|||
assert_equal("abc", f.read)
|
||||
}
|
||||
|
||||
path.open(mode: "r") {|f|
|
||||
assert_equal("abc", f.read)
|
||||
}
|
||||
|
||||
Pathname("b").open("w", 0444) {|f| f.write "def" }
|
||||
assert_equal(0444 & ~File.umask, File.stat("b").mode & 0777)
|
||||
assert_equal("def", File.read("b"))
|
||||
|
@ -940,6 +968,10 @@ class TestPathname < Test::Unit::TestCase
|
|||
g = path.open
|
||||
assert_equal("abc", g.read)
|
||||
g.close
|
||||
|
||||
g = path.open(mode: "r")
|
||||
assert_equal("abc", g.read)
|
||||
g.close
|
||||
}
|
||||
end
|
||||
|
||||
|
|
Загрузка…
Ссылка в новой задаче