tests/run-tests.py
branchstable
changeset 1370 d6cab997a43e
parent 1369 1161be3ff133
equal deleted inserted replaced
1369:1161be3ff133 1370:d6cab997a43e
   302 
   302 
   303     return missing, failed
   303     return missing, failed
   304 
   304 
   305 def showdiff(expected, output, ref, err):
   305 def showdiff(expected, output, ref, err):
   306     print
   306     print
       
   307     servefail = False
   307     for line in difflib.unified_diff(expected, output, ref, err):
   308     for line in difflib.unified_diff(expected, output, ref, err):
   308         sys.stdout.write(line)
   309         sys.stdout.write(line)
       
   310         if not servefail and line.startswith(
       
   311                              '+  abort: child process failed to start'):
       
   312             servefail = True
       
   313     return {'servefail': servefail}
       
   314 
   309 
   315 
   310 verbose = False
   316 verbose = False
   311 def vlog(*msg):
   317 def vlog(*msg):
   312     if verbose is not False:
   318     if verbose is not False:
   313         iolock.acquire()
   319         iolock.acquire()
  1029         else:
  1035         else:
  1030             result = skip(missing[-1])
  1036             result = skip(missing[-1])
  1031     elif ret == 'timeout':
  1037     elif ret == 'timeout':
  1032         result = fail("timed out", ret)
  1038         result = fail("timed out", ret)
  1033     elif out != refout:
  1039     elif out != refout:
       
  1040         info = {}
  1034         if not options.nodiff:
  1041         if not options.nodiff:
  1035             iolock.acquire()
  1042             iolock.acquire()
  1036             if options.view:
  1043             if options.view:
  1037                 os.system("%s %s %s" % (options.view, ref, err))
  1044                 os.system("%s %s %s" % (options.view, ref, err))
  1038             else:
  1045             else:
  1039                 showdiff(refout, out, ref, err)
  1046                 info = showdiff(refout, out, ref, err)
  1040             iolock.release()
  1047             iolock.release()
       
  1048         msg = ""
       
  1049         if info.get('servefail'): msg += "serve failed and "
  1041         if ret:
  1050         if ret:
  1042             result = fail("output changed and " + describe(ret), ret)
  1051             msg += "output changed and " + describe(ret)
  1043         else:
  1052         else:
  1044             result = fail("output changed", ret)
  1053             msg += "output changed"
       
  1054         result = fail(msg, ret)
  1045     elif ret:
  1055     elif ret:
  1046         result = fail(describe(ret), ret)
  1056         result = fail(describe(ret), ret)
  1047     else:
  1057     else:
  1048         result = success()
  1058         result = success()
  1049 
  1059