summaryrefslogtreecommitdiff
path: root/test/ruby/test_argf.rb
diff options
context:
space:
mode:
authornobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2018-08-09 08:29:38 +0000
committernobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2018-08-09 08:29:38 +0000
commit14ad644d847138de6905200f46f177b28a67f28d (patch)
tree833b5c9d661fb03f97727d213f21f5b059d00580 /test/ruby/test_argf.rb
parent775a40f7d64cca8e04f0d709dd55fb64f5e63f14 (diff)
io.c: fix non-ascii filename inplace edit
* io.c (argf_next_argv): convert filename to the OS encoding to be dealt with by system calls. [ruby-dev:50607] [Bug #14970] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@64243 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'test/ruby/test_argf.rb')
-rw-r--r--test/ruby/test_argf.rb21
1 files changed, 19 insertions, 2 deletions
diff --git a/test/ruby/test_argf.rb b/test/ruby/test_argf.rb
index 311469aad95..d9266b40187 100644
--- a/test/ruby/test_argf.rb
+++ b/test/ruby/test_argf.rb
@@ -35,8 +35,8 @@ class TestArgf < Test::Unit::TestCase
open("#{@tmpdir}/#{basename}-#{@tmp_count}", "w")
end
- def make_tempfile
- t = make_tempfile0("argf-qux")
+ def make_tempfile(basename = "argf-qux")
+ t = make_tempfile0(basename)
t.puts "foo"
t.puts "bar"
t.puts "baz"
@@ -255,6 +255,23 @@ class TestArgf < Test::Unit::TestCase
assert_warning(/#{base}/) {argf.gets}
end
+ def test_inplace_nonascii
+ ext = Encoding.default_external or
+ skip "no default external encoding"
+ t = nil
+ ["\u{3042}", "\u{e9}"].any? {|n| t = make_tempfile(n.encode(ext))} or
+ skip "no name to test"
+ assert_in_out_err(["-i.bak", "-", t.path],
+ "#{<<~"{#"}\n#{<<~'};'}")
+ {#
+ puts ARGF.gets.chomp + '.new'
+ puts ARGF.gets.chomp + '.new'
+ puts ARGF.gets.chomp + '.new'
+ };
+ assert_equal("foo.new\n""bar.new\n""baz.new\n", File.read(t.path))
+ assert_equal("foo\n""bar\n""baz\n", File.read(t.path + ".bak"))
+ end
+
def test_inplace_no_backup
t = make_tempfile