2011-08-25 10:05:28 +02:00
|
|
|
import platform;
|
|
|
|
import shutil;
|
|
|
|
import os;
|
|
|
|
import glob;
|
2011-08-31 16:05:15 +02:00
|
|
|
import atexit;
|
2011-09-01 14:09:25 +02:00
|
|
|
import codecs;
|
2011-09-21 17:29:18 +02:00
|
|
|
import subprocess;
|
|
|
|
import errno;
|
|
|
|
from datetime import datetime,timedelta;
|
2011-08-25 10:05:28 +02:00
|
|
|
|
2011-09-23 20:40:57 +02:00
|
|
|
srcPath = ''
|
2011-08-25 10:05:28 +02:00
|
|
|
SettingsPath = ''
|
2011-08-31 16:05:15 +02:00
|
|
|
tmpSettingsDir = ''
|
2011-08-25 10:05:28 +02:00
|
|
|
testSettings.logScreenshotOnFail = True
|
2012-01-10 12:24:06 +01:00
|
|
|
testSettings.logScreenshotOnError = True
|
2011-08-25 10:05:28 +02:00
|
|
|
|
2011-11-29 16:00:18 +01:00
|
|
|
source("../../shared/classes.py")
|
2011-08-26 12:39:04 +02:00
|
|
|
source("../../shared/utils.py")
|
2011-08-31 16:05:15 +02:00
|
|
|
source("../../shared/build_utils.py")
|
2011-10-07 15:05:55 +02:00
|
|
|
source("../../shared/project.py")
|
2011-09-21 17:29:18 +02:00
|
|
|
source("../../shared/editor_utils.py")
|
2011-11-09 16:40:35 +01:00
|
|
|
source("../../shared/project_explorer.py")
|
|
|
|
source("../../shared/hook_utils.py")
|
2012-01-31 15:49:59 +01:00
|
|
|
source("../../shared/debugger.py")
|
2011-08-25 10:05:28 +02:00
|
|
|
|
2011-09-21 17:29:18 +02:00
|
|
|
def waitForCleanShutdown(timeOut=10):
|
2011-09-06 09:12:15 +02:00
|
|
|
appCtxt = currentApplicationContext()
|
2011-10-07 15:43:45 +02:00
|
|
|
shutdownDone = (str(appCtxt)=="")
|
2011-09-21 17:29:18 +02:00
|
|
|
if platform.system() in ('Windows','Microsoft'):
|
|
|
|
endtime = datetime.utcnow() + timedelta(seconds=timeOut)
|
|
|
|
while not shutdownDone:
|
|
|
|
# following work-around because os.kill() works for win not until python 2.7
|
2011-10-07 15:43:45 +02:00
|
|
|
if appCtxt.pid==-1:
|
|
|
|
break
|
2011-09-21 17:29:18 +02:00
|
|
|
tasks = subprocess.Popen("tasklist /FI \"PID eq %d\"" % appCtxt.pid, shell=True,stdout=subprocess.PIPE)
|
|
|
|
output = tasks.communicate()[0]
|
|
|
|
tasks.stdout.close()
|
|
|
|
if (output=="INFO: No tasks are running which match the specified criteria."
|
|
|
|
or output=="" or output.find("ERROR")==0):
|
|
|
|
shutdownDone=True
|
|
|
|
if not shutdownDone and datetime.utcnow() > endtime:
|
|
|
|
break
|
|
|
|
else:
|
|
|
|
endtime = datetime.utcnow() + timedelta(seconds=timeOut)
|
|
|
|
while not shutdownDone:
|
|
|
|
try:
|
|
|
|
os.kill(appCtxt.pid,0)
|
|
|
|
except OSError, err:
|
|
|
|
if err.errno == errno.EPERM or err.errno == errno.ESRCH:
|
|
|
|
shutdownDone=True
|
|
|
|
if not shutdownDone and datetime.utcnow() > endtime:
|
|
|
|
break
|
|
|
|
|
|
|
|
def __removeTmpSettingsDir__():
|
|
|
|
waitForCleanShutdown()
|
2011-10-07 15:43:45 +02:00
|
|
|
deleteDirIfExists(os.path.dirname(os.path.dirname(tmpSettingsDir)))
|
2011-08-31 16:05:15 +02:00
|
|
|
|
2011-08-25 10:05:28 +02:00
|
|
|
if platform.system() in ('Windows', 'Microsoft'):
|
2011-09-26 16:58:39 +02:00
|
|
|
sdkPath = "C:\\QtSDK"
|
2011-08-25 10:05:28 +02:00
|
|
|
cwd = os.getcwd() # current dir is directory holding qtcreator.py
|
2011-09-26 16:58:39 +02:00
|
|
|
cwd+="\\..\\..\\settings\\windows"
|
2011-09-28 13:06:52 +02:00
|
|
|
defaultQtVersion = "Qt 4.7.4 for Desktop - MinGW 4.4 (Qt SDK)"
|
2011-08-25 10:05:28 +02:00
|
|
|
else:
|
2011-09-23 20:40:57 +02:00
|
|
|
sdkPath = os.path.expanduser("~/QtSDK")
|
2011-08-25 10:05:28 +02:00
|
|
|
cwd = os.getcwd() # current dir is directory holding qtcreator.py
|
|
|
|
cwd+="/../../settings/unix"
|
2011-09-28 13:06:52 +02:00
|
|
|
defaultQtVersion = "Desktop Qt 4.7.4 for GCC (Qt SDK)"
|
2011-12-15 13:41:25 +01:00
|
|
|
srcPath = os.getenv("SYSTEST_SRCPATH", sdkPath + "/src")
|
2011-08-31 16:05:15 +02:00
|
|
|
|
|
|
|
# the following only doesn't work if the test ends in an exception
|
2012-01-09 15:33:14 +01:00
|
|
|
if os.getenv("SYSTEST_NOSETTINGSPATH") != "1":
|
|
|
|
cwd = os.path.abspath(cwd)
|
|
|
|
tmpSettingsDir = tempDir()
|
|
|
|
tmpSettingsDir = os.path.abspath(tmpSettingsDir+"/settings")
|
|
|
|
shutil.copytree(cwd, tmpSettingsDir)
|
|
|
|
atexit.register(__removeTmpSettingsDir__)
|
|
|
|
SettingsPath = ' -settingspath "%s"' % tmpSettingsDir
|