# File lib/tf.rb, line 50
  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