mirror of
https://github.com/ruby/ruby.git
synced 2025-08-27 15:06:10 +02:00
* include/ruby/encoding.h (ECONV_NEWLINE_DECORATOR_READ_MASK,
ECONV_NEWLINE_DECORATOR_WRITE_MASK): new macro. * io.c (rb_io_extract_modeenc, pipe_open, prep_stdio, argf_next_argv): set TEXTMODE_NEWLINE_DECORATOR_ON_WRITE for textmode on creating IO if the flag is available. * io.c (make_writeconv): drop decorators for reading. * io.c (make_readconv): drop decorators for writing. * io.c (do_writeconv): existing writeconv is not the condition to raise ArgumentError. should check textmode or not. * test/ruby/test_io_m17n.rb (TestIO_M17N#test_{cr,lf,crlf}_decorator_on_stdout): test above changes. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@33662 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
4764756497
commit
add77a592b
3 changed files with 94 additions and 16 deletions
|
@ -2117,4 +2117,61 @@ EOT
|
|||
end
|
||||
end
|
||||
end if /mswin|mingw/ =~ RUBY_PLATFORM
|
||||
|
||||
def test_cr_decorator_on_stdout
|
||||
with_pipe do |in_r, in_w|
|
||||
with_pipe do |out_r, out_w|
|
||||
pid = Process.spawn({}, EnvUtil.rubybin, in: in_r, out: out_w)
|
||||
in_r.close
|
||||
out_w.close
|
||||
in_w.write <<-EOS
|
||||
STDOUT.set_encoding('locale', nil, newline: :cr)
|
||||
STDOUT.puts "abc"
|
||||
STDOUT.flush
|
||||
EOS
|
||||
in_w.close
|
||||
Process.wait pid
|
||||
assert_equal "abc\r", out_r.binmode.read
|
||||
out_r.close
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
def test_lf_decorator_on_stdout
|
||||
with_pipe do |in_r, in_w|
|
||||
with_pipe do |out_r, out_w|
|
||||
pid = Process.spawn({}, EnvUtil.rubybin, in: in_r, out: out_w)
|
||||
in_r.close
|
||||
out_w.close
|
||||
in_w.write <<-EOS
|
||||
STDOUT.set_encoding('locale', nil, newline: :lf)
|
||||
STDOUT.puts "abc"
|
||||
STDOUT.flush
|
||||
EOS
|
||||
in_w.close
|
||||
Process.wait pid
|
||||
assert_equal "abc\n", out_r.binmode.read
|
||||
out_r.close
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
def test_crlf_decorator_on_stdout
|
||||
with_pipe do |in_r, in_w|
|
||||
with_pipe do |out_r, out_w|
|
||||
pid = Process.spawn({}, EnvUtil.rubybin, in: in_r, out: out_w)
|
||||
in_r.close
|
||||
out_w.close
|
||||
in_w.write <<-EOS
|
||||
STDOUT.set_encoding('locale', nil, newline: :crlf)
|
||||
STDOUT.puts "abc"
|
||||
STDOUT.flush
|
||||
EOS
|
||||
in_w.close
|
||||
Process.wait pid
|
||||
assert_equal "abc\r\n", out_r.binmode.read
|
||||
out_r.close
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue