p = subprocess.Popen(command, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
out, err = p.communicate()
res = p.returncode
-
+ # About res value:
+ # A negative value -N indicates that the child was terminated by signal N (Unix only).
+ # On Unix, the value 11 generally corresponds to a segmentation fault.
return res, out, err
#
+def processResultSpecialParavis(res, out, err):
+ # :TRICKY: Special case of returncode=127
+ # When using paraview in SALOME environment, the following error
+ # systematically appears when exiting paraview (it's also true when using
+ # PARAVIS and exiting SALOME):
+ # Inconsistency detected by ld.so: dl-close.c: 738: _dl_close: Assertion `map->l_init_called' failed!
+ # For PARAVIS tests purpose, paraview functionalities are accessed in each
+ # test; these tests are run in the above subprocess call.
+ # The assertion error implies a subprocess return code of 127, and the test
+ # status is considered as "failed".
+ # The tricky part here is to discard such return codes, waiting for a fix
+ # maybe in paraview...
+ if res == 127 and err.startswith("Inconsistency detected by ld.so: dl-close.c"):
+ print " ** THE FOLLOWING MESSAGE IS DISCARDED WHEN ANALYZING TEST SUCCESSFULNESS **"
+ print err,
+ print " ** end of message **"
+ res = 0
+ elif err:
+ print " ** Detected error **"
+ print "Error code: ", res
+ print err,
+ print " ** end of message **"
+ pass
+
+ if out:
+ print out
+ return res
+#
+
# Display output and errors
def processResult(res, out, err):
if out:
if err:
print err
print "Status code: ", res
+ return res
#
# Timeout management
try:
port = startSession()
res, out, err = runTest(test_and_args)
- processResult(res, out, err)
+ #res = processResult(res, out, err)
+ res = processResultSpecialParavis(res, out, err)
except TimeoutException:
print "FAILED : timeout(%s) is reached"%timeout_delay
except:
pass
terminateSession(port)
+ print "Exit test with status code:", res
exit(res)
#