Sha256: 3e9037fbedbb20bf36f315378f9b3d90149a05985a6b92024c7eb183788b34a0
Contents?: true
Size: 1.89 KB
Versions: 5
Compression:
Stored size: 1.89 KB
Contents
require 'test_case' module Open4 class POpen4Test < TestCase UNKNOWN_CMD = 'asdfadsfjlkkk' UNKNOWN_CMD_ERRORS = [Errno::ENOENT, Errno::EINVAL] def test_unknown_command_propagates_exception err = assert_raises(*UNKNOWN_CMD_ERRORS) { popen4 UNKNOWN_CMD } assert_match /#{UNKNOWN_CMD}/, err.to_s if on_mri? end def test_exception_propagation_avoids_zombie_child_process assert_raises(*UNKNOWN_CMD_ERRORS) { popen4 UNKNOWN_CMD } assert_empty Process.waitall end def test_exit_failure code = 43 cid, _ = popen4 %{ruby -e "exit #{43}"} assert_equal code, wait_status(cid) end def test_exit_success cid, _ = popen4 %{ruby -e "exit"} assert_equal 0, wait_status(cid) end def test_passes_child_pid_to_block cmd = %{ruby -e "STDOUT.print Process.pid"} cid_in_block = nil cid_in_fun = nil status = popen4(cmd) do |cid, _, stdout, _| cid_in_block = cid cid_in_fun = stdout.read.to_i end assert_equal cid_in_fun, cid_in_block end def test_io_pipes_without_block via_msg = 'foo' err_msg = 'bar' cmd = <<-END ruby -e " STDOUT.write STDIN.read STDERR.write '#{err_msg}' " END cid, stdin, stdout, stderr = popen4 cmd stdin.write via_msg stdin.close out_actual = stdout.read err_actual = stderr.read assert_equal via_msg, out_actual assert_equal err_msg, err_actual assert_equal 0, wait_status(cid) end def test_io_pipes_with_block via_msg = 'foo' err_msg = 'bar' out_actual, err_actual = nil cmd = <<-END ruby -e " STDOUT.write STDIN.read STDERR.write '#{err_msg}' " END status = popen4(cmd) do |_, stdin, stdout, stderr| stdin.write via_msg stdin.close out_actual = stdout.read err_actual = stderr.read end assert_equal via_msg, out_actual assert_equal err_msg, err_actual assert_equal 0, status.exitstatus end end end
Version data entries
5 entries across 5 versions & 1 rubygems
Version | Path |
---|---|
open4-1.3.3 | test/popen4_test.rb |
open4-1.3.2 | test/popen4_test.rb |
open4-1.3.1 | test/popen4_test.rb |
open4-1.3.0 | test/popen4_test.rb |
open4-1.2.0 | test/popen4_test.rb |