aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorakr <akr@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2014-03-01 10:56:39 +0000
committerakr <akr@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2014-03-01 10:56:39 +0000
commit14ad015896fb58e7ce2ddb9d829789327ca159d7 (patch)
tree053496d4268d18da8345a81c81cabf58e995a6e0
parent44f58afa751e98ec9fe5b89a5a5e71ca474e99cf (diff)
downloadruby-14ad015896fb58e7ce2ddb9d829789327ca159d7.tar.gz
* 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
-rw-r--r--ChangeLog7
-rw-r--r--lib/open3.rb15
-rw-r--r--test/test_open3.rb19
3 files changed, 38 insertions, 3 deletions
diff --git a/ChangeLog b/ChangeLog
index e913ff96ed..94f7c0b8e8 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -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
diff --git a/lib/open3.rb b/lib/open3.rb
index a54e1b3886..7595265a93 100644
--- a/lib/open3.rb
+++ b/lib/open3.rb
@@ -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]
}
diff --git a/test/test_open3.rb b/test/test_open3.rb
index 20e91c702a..cd63034f1e 100644
--- a/test/test_open3.rb
+++ b/test/test_open3.rb
@@ -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|