diff options
Diffstat (limited to 'test/rake/support/ruby_runner.rb')
-rw-r--r-- | test/rake/support/ruby_runner.rb | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/test/rake/support/ruby_runner.rb b/test/rake/support/ruby_runner.rb new file mode 100644 index 0000000000..404e61a668 --- /dev/null +++ b/test/rake/support/ruby_runner.rb @@ -0,0 +1,33 @@ +module RubyRunner + include FileUtils + + # Run a shell Ruby command with command line options (using the + # default test options). Output is captured in @out and @err + def ruby(*option_list) + run_ruby(@ruby_options + option_list) + end + + # Run a command line rake with the give rake options. Default + # command line ruby options are included. Output is captured in + # @out and @err + def rake(*rake_options) + run_ruby @ruby_options + [@rake_exec] + rake_options + end + + # Low level ruby command runner ... + def run_ruby(option_list) + puts "COMMAND: [#{RUBY} #{option_list.join ' '}]" if @verbose + + inn, out, err, wait = Open3.popen3(RUBY, *option_list) + inn.close + + @exit = wait ? wait.value : $? + @out = out.read + @err = err.read + + puts "OUTPUT: [#{@out}]" if @verbose + puts "ERROR: [#{@err}]" if @verbose + puts "EXIT: [#{@exit.inspect}]" if @verbose + puts "PWD: [#{Dir.pwd}]" if @verbose + end +end |