lib/braid/operations.rb in realityforge-braid-0.9.6 vs lib/braid/operations.rb in realityforge-braid-0.9.7

- old
+ new

@@ -106,16 +106,21 @@ out, err = nil status, pid = 0 log(cmd) - if defined?(JRUBY_VERSION) || Gem.win_platform? - Open3.popen3(cmd) do |stdin, stdout, stderr| + if USE_OPEN3 + status = nil + Open3.popen3(cmd) do |stdin, stdout, stderr, wait_thread| + stdin.close out = stdout.read err = stderr.read + # Under earlier jrubies this is not correctly passed so add in check + status = wait_thread.value if wait_thread # Process::Status object returned. end - status = $?.exitstatus + # Handle earlier jrubies such as 1.6.7.2 + status = $?.exitstatus if status.nil? else status = Open4.popen4(cmd) do |pid, stdin, stdout, stderr| out = stdout.read err = stderr.read end.exitstatus @@ -289,16 +294,19 @@ def apply(diff, *args) status, err = nil, nil command = "git apply --index --whitespace=nowarn #{args.join(' ')} -" - if defined?(JRUBY_VERSION) || Gem.win_platform? - Open3.popen3(command) do |stdin, stdout, stderr| + if USE_OPEN3 + Open3.popen3(command) do |stdin, stdout, stderr, wait_thread| stdin.puts(diff) stdin.close err = stderr.read + # Under earlier jrubies this is not correctly passed so add in check + status = wait_thread.value if wait_thread # Process::Status object returned. end - status = $?.exitstatus + # Handle earlier jrubies such as 1.6.7.2 + status = $?.exitstatus if status.nil? else status = Open4.popen4(command) do |pid, stdin, stdout, stderr| stdin.puts(diff) stdin.close err = stderr.read