# grep command is unavailable
from subprocess import Popen, PIPE
if sys.platform == "win32":
- stdout, _ = Popen(['netstat','-a','-n','-p tcp'], stdout=PIPE).communicate()
+ out, _ = Popen(['netstat','-a','-n','-p tcp'], stdout=PIPE).communicate()
else:
- stdout, _ = Popen(['netstat','-ant'], stdout=PIPE).communicate()
+ out, _ = Popen(['netstat','-ant'], stdout=PIPE).communicate()
import StringIO
- buf = StringIO.StringIO(stdout)
+ buf = StringIO.StringIO(out)
ports = buf.readlines()
# search for TCP - LISTEN connections
import re
context.addToVariable(key,val)
# Start SALOME, parsing command line arguments
- (out, err), returncode = context.runSalome(args)
+ out, err, returncode = context.runSalome(args)
if out:
sys.stdout.write(out)
if err:
# tests must be in ${ABSOLUTE_APPLI_PATH}/${__testSubDir}/
__testSubDir = "bin/salome/test"
-# Both display process stdout&stderr to console and capture them to variables
def __runTest(command, workdir):
- p = subprocess.Popen(command, cwd=workdir, stdout=subprocess.PIPE, stderr=subprocess.PIPE, bufsize=0)
- stdout = []
- stderr = []
+ p = subprocess.Popen(command, cwd=workdir, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
while True:
- reads = [p.stdout.fileno(), p.stderr.fileno()]
- ret = select.select(reads, [], [])
-
- for fd in ret[0]:
- if fd == p.stdout.fileno():
- read = p.stdout.readline()
- sys.stdout.write(read)
- stdout.append(read)
- pass
- if fd == p.stderr.fileno():
- read = p.stderr.readline()
- sys.stderr.write(read)
- stderr.append(read)
- pass
+ try:
+ out = p.stdout.readline()
+ sys.stdout.write(out)
+ except: # raised IOError or OSError if output is empty
pass
- if p.poll() != None:
+ returncode = p.poll()
+ if not returncode is None:
+ sys.stdout.flush()
break
pass
- return p.returncode, "".join(stdout), "".join(stderr)
+ return p.returncode
#
def runTests(args, exe=None):
testPath = os.path.join(appliPath, __testSubDir)
command = ["ctest"] + args
- res, out, err = __runTest(command, testPath)
+ res = __runTest(command, testPath)
sys.exit(res)
#
absoluteAppliPath = os.getenv('ABSOLUTE_APPLI_PATH','')
env_copy = os.environ.copy()
proc = subprocess.Popen(['python', os.path.join(absoluteAppliPath,"bin","salome","salomeContext.py"), pickle.dumps(self), pickle.dumps(args)], shell=False, close_fds=True, env=env_copy)
- msg = proc.communicate()
- return msg, proc.returncode
+ out, err = proc.communicate()
+ return out, err, proc.returncode
#
"""Append value to PATH environment variable"""