module RSpec::Support::ShellOut
Constants
- FakeProcessStatus
popen3 doesn't provide the exit status so we fake it out.
Public Instance Methods
run_ruby_with_current_load_path(ruby_command, *flags)
click to toggle source
# File lib/rspec/support/spec/shell_out.rb, line 41 def run_ruby_with_current_load_path(ruby_command, *flags) command = [ FileUtils::RUBY, "-I#{$LOAD_PATH.map(&:shellescape).join(File::PATH_SEPARATOR)}", "-e", ruby_command, *flags ] # Unset these env vars because `ruby -w` will issue warnings whenever # they are set to non-default values. with_env 'RUBY_GC_HEAP_FREE_SLOTS' => nil, 'RUBY_GC_MALLOC_LIMIT' => nil, 'RUBY_FREE_MIN' => nil do shell_out(*command) end end
shell_out(*command)
click to toggle source
# File lib/rspec/support/spec/shell_out.rb, line 20 def shell_out(*command) stdout, stderr, status = Open3.capture3(*command) return stdout, filter(stderr), status end
with_env(vars) { || ... }
click to toggle source
# File lib/rspec/support/spec/shell_out.rb, line 8 def with_env(vars) original = ENV.to_hash vars.each { |k, v| ENV[k] = v } begin yield ensure ENV.replace(original) end end
Private Instance Methods
filter(output)
click to toggle source
# File lib/rspec/support/spec/shell_out.rb, line 59 def filter(output) output.each_line.reject do |line| line.include?("lib/ruby/shared/rubygems/defaults/jruby") end.join($/) end