* lib/open3.rb (Open3.capture3): Ignore Errno::EPIPE for writing

stdin_data.
  (Open3.capture2): Ditto.
  (Open3.capture2e): Ditto.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@45229 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
akr 2014-03-01 10:56:39 +00:00
Родитель 44f58afa75
Коммит 14ad015896
3 изменённых файлов: 38 добавлений и 3 удалений

Просмотреть файл

@ -1,3 +1,10 @@
Sat Mar 1 19:51:42 2014 Tanaka Akira <akr@fsij.org>
* lib/open3.rb (Open3.capture3): Ignore Errno::EPIPE for writing
stdin_data.
(Open3.capture2): Ditto.
(Open3.capture2e): Ditto.
Sat Mar 1 19:06:47 2014 Eric Wong <e@80x24.org>
* gc.c (ruby_gc_set_params): simplify condition

Просмотреть файл

@ -257,7 +257,10 @@ module Open3
end
out_reader = Thread.new { o.read }
err_reader = Thread.new { e.read }
i.write stdin_data
begin
i.write stdin_data
rescue Errno::EPIPE
end
i.close
[out_reader.value, err_reader.value, t.value]
}
@ -300,7 +303,10 @@ module Open3
o.binmode
end
out_reader = Thread.new { o.read }
i.write stdin_data
begin
i.write stdin_data
rescue Errno::EPIPE
end
i.close
[out_reader.value, t.value]
}
@ -330,7 +336,10 @@ module Open3
oe.binmode
end
outerr_reader = Thread.new { oe.read }
i.write stdin_data
begin
i.write stdin_data
rescue Errno::EPIPE
end
i.close
[outerr_reader.value, t.value]
}

Просмотреть файл

@ -149,6 +149,25 @@ class TestOpen3 < Test::Unit::TestCase
assert(s.success?)
end
def test_capture3_stdin_data
o, e, s = Open3.capture3(RUBY, '-e', '', :stdin_data=>"z"*(1024*1024))
assert_equal("", o)
assert_equal("", e)
assert(s.success?)
end
def test_capture2_stdin_data
o, s = Open3.capture2(RUBY, '-e', '', :stdin_data=>"z"*(1024*1024))
assert_equal("", o)
assert(s.success?)
end
def test_capture2e_stdin_data
oe, s = Open3.capture2e(RUBY, '-e', '', :stdin_data=>"z"*(1024*1024))
assert_equal("", oe)
assert(s.success?)
end
def test_pipeline_rw
Open3.pipeline_rw([RUBY, '-e', 'print STDIN.read + "1"'],
[RUBY, '-e', 'print STDIN.read + "2"']) {|i,o,ts|