def cmp_output(test)
      # test out and err
      if test.expected_out_exists? && test.expected_err_exists?
        cmp_out(test)
        cmp_err(test)
        return :success if (test.out_result && test.err_result)

      # test only out
      elsif test.expected_out_exists?
        cmp_out(test)
        return :success if test.out_result

      # test only err
      else
        cmp_err(test)
        return :success if test.err_result
      end

      return :failed
    end
def cmp_output(test)
      # test out and err
      if test.expected_out_exists? && test.expected_err_exists?
        cmp_out(test)
        cmp_err(test)
        return :success if (test.out_result && test.err_result)

      # test only out
      elsif test.expected_out_exists?
        cmp_out(test)
        return :success if test.out_result

      # test only err
      else
        cmp_err(test)
        return :success if test.err_result
      end

      return :failed
    end
Compare the result and expected output of a test that has been run

 test - A Test object that has been run
 precondition :: expected_exists?(test) is true

 Returns success or failure as a symbol