summaryrefslogtreecommitdiff
path: root/spec/ruby/library/open3/popen3_spec.rb
diff options
context:
space:
mode:
Diffstat (limited to 'spec/ruby/library/open3/popen3_spec.rb')
-rw-r--r--spec/ruby/library/open3/popen3_spec.rb41
1 files changed, 41 insertions, 0 deletions
diff --git a/spec/ruby/library/open3/popen3_spec.rb b/spec/ruby/library/open3/popen3_spec.rb
new file mode 100644
index 0000000000..3651bd516c
--- /dev/null
+++ b/spec/ruby/library/open3/popen3_spec.rb
@@ -0,0 +1,41 @@
+require_relative '../../spec_helper'
+require 'open3'
+
+describe "Open3.popen3" do
+ it "returns in, out, err and a thread waiting the process" do
+ stdin, out, err, waiter = Open3.popen3(ruby_cmd("print :foo"))
+ begin
+ stdin.should.is_a? IO
+ out.should.is_a? IO
+ err.should.is_a? IO
+ waiter.should.is_a? Thread
+
+ out.read.should == "foo"
+ ensure
+ stdin.close
+ out.close
+ err.close
+ waiter.join
+ end
+ end
+
+ it "executes a process with a pipe to read stdout" do
+ Open3.popen3(ruby_cmd("print :foo")) do |stdin, out, err|
+ out.read.should == "foo"
+ end
+ end
+
+ it "executes a process with a pipe to read stderr" do
+ Open3.popen3(ruby_cmd("STDERR.print :foo")) do |stdin, out, err|
+ err.read.should == "foo"
+ end
+ end
+
+ it "executes a process with a pipe to write stdin" do
+ Open3.popen3(ruby_cmd("print STDIN.read")) do |stdin, out, err|
+ stdin.write("foo")
+ stdin.close
+ out.read.should == "foo"
+ end
+ end
+end