Bug #12989 » io-pipe-binmode.patch
| io.c | ||
|---|---|---|
|
rb_io_synchronized(fptr2);
|
||
|
extract_binmode(opt, &fmode);
|
||
|
if ((fmode & FMODE_BINMODE) && v1 == Qnil) {
|
||
|
rb_io_ascii8bit_binmode(r);
|
||
|
rb_io_ascii8bit_binmode(w);
|
||
|
}
|
||
|
#if DEFAULT_TEXTMODE
|
||
|
if ((fptr->mode & FMODE_TEXTMODE) && (fmode & FMODE_BINMODE)) {
|
||
|
fptr->mode &= ~FMODE_TEXTMODE;
|
||
| test/ruby/test_io.rb | ||
|---|---|---|
|
].each{|thr| thr.join}
|
||
|
end
|
||
|
def test_binmode_pipe
|
||
|
EnvUtil.with_default_internal(Encoding::UTF_8) do
|
||
|
EnvUtil.with_default_external(Encoding::UTF_8) do
|
||
|
reader, writer = IO.pipe
|
||
|
reader.binmode
|
||
|
writer.binmode
|
||
|
reader1, writer1 = IO.pipe
|
||
|
reader2, writer2 = IO.pipe(binmode: true)
|
||
|
assert writer.binmode?
|
||
|
assert writer2.binmode?
|
||
|
assert_equal writer.binmode?, writer2.binmode?
|
||
|
assert_equal writer.external_encoding, writer2.external_encoding
|
||
|
assert_equal writer.internal_encoding, writer2.internal_encoding
|
||
|
assert reader.binmode?
|
||
|
assert reader2.binmode?
|
||
|
assert_equal reader.binmode?, reader2.binmode?
|
||
|
assert_equal reader.external_encoding, reader2.external_encoding
|
||
|
assert_equal reader.internal_encoding, reader2.internal_encoding
|
||
|
reader3, writer3 = IO.pipe("UTF-8:UTF-8", binmode: true)
|
||
|
assert writer3.binmode?
|
||
|
assert_equal writer1.external_encoding, writer3.external_encoding
|
||
|
assert_equal writer1.internal_encoding, writer3.internal_encoding
|
||
|
assert reader3.binmode?
|
||
|
assert_equal reader1.external_encoding, reader3.external_encoding
|
||
|
assert_equal reader1.internal_encoding, reader3.internal_encoding
|
||
|
reader4, writer4 = IO.pipe("UTF-8:UTF-8", binmode: true)
|
||
|
assert writer4.binmode?
|
||
|
assert_equal writer1.external_encoding, writer4.external_encoding
|
||
|
assert_equal writer1.internal_encoding, writer4.internal_encoding
|
||
|
assert reader4.binmode?
|
||
|
assert_equal reader1.external_encoding, reader4.external_encoding
|
||
|
assert_equal reader1.internal_encoding, reader4.internal_encoding
|
||
|
reader5, writer5 = IO.pipe("UTF-8", "UTF-8", binmode: true)
|
||
|
assert writer5.binmode?
|
||
|
assert_equal writer1.external_encoding, writer5.external_encoding
|
||
|
assert_equal writer1.internal_encoding, writer5.internal_encoding
|
||
|
assert reader5.binmode?
|
||
|
assert_equal reader1.external_encoding, reader5.external_encoding
|
||
|
assert_equal reader1.internal_encoding, reader5.internal_encoding
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
def test_pipe_block
|
||
|
x = nil
|
||
|
ret = IO.pipe {|r, w|
|
||
- « Previous
- 1
- 2
- Next »