-# Copyright (C) 2015-2016 CEA/DEN, EDF R&D, OPEN CASCADE
+# Copyright (C) 2015-2017 CEA/DEN, EDF R&D, OPEN CASCADE
#
# This library is free software; you can redistribute it and/or
# modify it under the terms of the GNU Lesser General Public
import subprocess
import signal
-# Run test
-def runTest(command):
- print "Running:", " ".join(command)
- p = subprocess.Popen(command)
- 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
-#
-
# Timeout management
class TimeoutException(Exception):
"""Exception raised when test timeout is reached."""
# first argument
if not args:
print "Invalid arguments for salome_test_driver.py. No command defined."
- exit(1)
+ sys.exit(1)
_, ext = os.path.splitext(args[0])
if ext == ".py":
test_and_args = [sys.executable] + args
setOmniOrbUserPath()
# Set timeout handler
- print "Test timeout explicitely set to: %s seconds"%timeout_delay
+ print "Test timeout explicitly set to: %s seconds"%timeout_delay
timeout_sec = abs(int(timeout_delay)-10)
if sys.platform == 'win32':
from threading import Timer
try:
salome_instance = SalomeInstance.start(shutdown_servers=True)
port = salome_instance.get_port()
- res = runTest(test_and_args)
+ # Run the test
+ print "Running:", " ".join(test_and_args)
+ p = subprocess.Popen(test_and_args)
+ pid = p.pid
+ 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.
except TimeoutException:
print "FAILED : timeout(%s) is reached"%timeout_delay
except:
import traceback
traceback.print_exc()
pass
-
- salome_instance.stop()
+ try:
+ salome_instance.stop()
+ os.kill(pid, signal.SIGTERM)
+ except:
+ pass
if sys.platform == 'win32':
timer.cancel()
print "Exit test with status code:", res
- exit(res)
+ sys.exit(res)
#