def process_test test
name, commands, execution_shell = test[:name], test[:commands], test[:shell]
shell = Session::Sh.new(:prog => execution_shell)
_env = env(shell)
@plugins.output_plugins(:start_test, test, _env)
commands.each do |line|
command, tests = line[:cmd], line[:tests]
@plugins.output_plugins(:start_command, line)
_stdout = StringIO.new
_stderr = StringIO.new
_stdboth = StringIO.new
shell.execute "#{command}" do |out, err|
if out
@plugins.output_plugins(:command_out, out)
_stdout << out
_stdboth << out
end
if err
@plugins.output_plugins(:command_err, err)
_stderr << err
_stdboth << err
end
end
_status = shell.status
_env = env(shell)
@plugins.output_plugins(:end_command, line, _status, _env)
process_command_tests _stdout.string, _stderr.string, _stdboth.string, _status, _env, tests
end
@plugins.output_plugins(:end_test, test)
rescue SystemExit, Interrupt
shell.close!
raise
end