run-tests: fixed warn detection on failures with too many output
authorSimon Heimberg <simohe@besonet.ch>
Sun, 16 Feb 2014 23:41:24 +0100
changeset 20601 72d843e8cb6d
parent 20600 2e68882852ee
child 20602 8a2dfac89ad6
run-tests: fixed warn detection on failures with too many output The state "warned" was reported too often. The problem fixed here is that warnonly was only reset when a line did not match. When there was a line too much, warnonly remained set. Fix this by setting more states to warnonly. More negative testing (testing on result "Failed") has been done this time.
tests/run-tests.py
--- a/tests/run-tests.py	Sun Feb 16 23:36:02 2014 +0100
+++ b/tests/run-tests.py	Sun Feb 16 23:41:24 2014 +0100
@@ -776,7 +776,9 @@
 
     # Merge the script output back into a unified test
 
-    warnonly = True
+    warnonly = 1 # 1: not yet, 2: yes, 3: for sure not
+    if exitcode != 0: # failure has been reported
+        warnonly = 3 # set to "for sure not"
     pos = -1
     postout = []
     for l in output:
@@ -811,7 +813,9 @@
                     lout = stringescape(lout.rstrip('\n')) + " (esc)\n"
                 postout.append("  " + lout) # let diff deal with it
                 if r != '': # if line failed
-                    warnonly = False
+                    warnonly = 3 # set to "for sure not"
+                elif warnonly == 1: # is "not yet" (and line is warn only)
+                    warnonly = 2 # set to "yes" do warn
 
         if lcmd:
             # add on last return code
@@ -826,8 +830,8 @@
     if pos in after:
         postout += after.pop(pos)
 
-    if warnonly and exitcode == 0:
-        exitcode = False
+    if warnonly == 2:
+        exitcode = False # set exitcode to warned
     return exitcode, postout
 
 wifexited = getattr(os, "WIFEXITED", lambda x: False)