run-tests: test result shows when a failed test could not start a server stable
authorSimon Heimberg <simohe@besonet.ch>
Mon, 25 Nov 2013 22:00:46 +0100
branchstable
changeset 1370 d6cab997a43e
parent 1369 1161be3ff133
child 1371 3b0bcc658eef
child 1372 8d921a12dd31
run-tests: test result shows when a failed test could not start a server Failing to start a server happens regularly, at least on windows buildbot. Such a failure often has nothing to do with the test, but with the environment. But half the test output can change because some data is missing. Therefore this is worth an extended error message. Detect the server failure in the diff output because it is most reliable there. Checking the output only does not show if the server failure was expected. Old failure message when server start failed: Failed test-serve.t: output changed New message: Failed test-serve.t: serve failed and output changed [ original upstream message ]
tests/run-tests.py
--- a/tests/run-tests.py	Sun Apr 13 19:01:00 2014 +0200
+++ b/tests/run-tests.py	Mon Nov 25 22:00:46 2013 +0100
@@ -304,8 +304,14 @@
 
 def showdiff(expected, output, ref, err):
     print
+    servefail = False
     for line in difflib.unified_diff(expected, output, ref, err):
         sys.stdout.write(line)
+        if not servefail and line.startswith(
+                             '+  abort: child process failed to start'):
+            servefail = True
+    return {'servefail': servefail}
+
 
 verbose = False
 def vlog(*msg):
@@ -1031,17 +1037,21 @@
     elif ret == 'timeout':
         result = fail("timed out", ret)
     elif out != refout:
+        info = {}
         if not options.nodiff:
             iolock.acquire()
             if options.view:
                 os.system("%s %s %s" % (options.view, ref, err))
             else:
-                showdiff(refout, out, ref, err)
+                info = showdiff(refout, out, ref, err)
             iolock.release()
+        msg = ""
+        if info.get('servefail'): msg += "serve failed and "
         if ret:
-            result = fail("output changed and " + describe(ret), ret)
+            msg += "output changed and " + describe(ret)
         else:
-            result = fail("output changed", ret)
+            msg += "output changed"
+        result = fail(msg, ret)
     elif ret:
         result = fail(describe(ret), ret)
     else: