2011-09-06 09:12:15 +02:00
|
|
|
processStarted = False
|
|
|
|
processExited = False
|
|
|
|
|
|
|
|
# for easier re-usage (because Python hasn't an enum type)
|
|
|
|
class QtQuickConstants:
|
|
|
|
class Components:
|
|
|
|
BUILTIN = 1
|
|
|
|
SYMBIAN = 2
|
|
|
|
MEEGO_HARMATTAN = 4
|
|
|
|
EXISTING_QML = 8
|
|
|
|
|
2011-10-10 14:53:08 +02:00
|
|
|
class Targets:
|
2011-09-06 09:12:15 +02:00
|
|
|
DESKTOP = 1
|
|
|
|
SIMULATOR = 2
|
|
|
|
SYMBIAN = 4
|
|
|
|
MAEMO5 = 8
|
|
|
|
HARMATTAN = 16
|
|
|
|
|
|
|
|
@staticmethod
|
|
|
|
def getStringForComponents(components):
|
|
|
|
if components==QtQuickConstants.Components.BUILTIN:
|
|
|
|
return "Built-in elements only (for all platforms)"
|
|
|
|
elif components==QtQuickConstants.Components.SYMBIAN:
|
|
|
|
return "Qt Quick Components for Symbian"
|
|
|
|
elif components==QtQuickConstants.Components.MEEGO_HARMATTAN:
|
|
|
|
return "Qt Quick Components for Meego/Harmattan"
|
|
|
|
elif components==QtQuickConstants.Components.EXISTING_QML:
|
|
|
|
return "Use an existing .qml file"
|
|
|
|
else:
|
|
|
|
return None
|
|
|
|
|
|
|
|
@staticmethod
|
2011-10-10 14:53:08 +02:00
|
|
|
def getStringForTarget(target):
|
|
|
|
if target==QtQuickConstants.Targets.DESKTOP:
|
2011-09-06 09:12:15 +02:00
|
|
|
return "Desktop"
|
2011-10-10 14:53:08 +02:00
|
|
|
elif target==QtQuickConstants.Targets.SYMBIAN:
|
2011-09-06 09:12:15 +02:00
|
|
|
return "Symbian Device"
|
2011-10-10 14:53:08 +02:00
|
|
|
elif target==QtQuickConstants.Targets.MAEMO5:
|
2011-09-06 09:12:15 +02:00
|
|
|
return "Maemo5"
|
2011-10-10 14:53:08 +02:00
|
|
|
elif target==QtQuickConstants.Targets.SIMULATOR:
|
2011-09-06 09:12:15 +02:00
|
|
|
return "Qt Simulator"
|
2011-10-10 14:53:08 +02:00
|
|
|
elif target==QtQuickConstants.Targets.HARMATTAN:
|
2011-09-06 09:12:15 +02:00
|
|
|
return "Harmattan"
|
|
|
|
else:
|
|
|
|
return None
|
|
|
|
|
2011-09-21 17:29:18 +02:00
|
|
|
def __handleProcessStarted__(object):
|
2011-09-06 09:12:15 +02:00
|
|
|
global processStarted
|
|
|
|
processStarted = True
|
|
|
|
|
2011-09-21 17:29:18 +02:00
|
|
|
def __handleProcessExited__(object, exitCode):
|
2011-09-06 09:12:15 +02:00
|
|
|
global processExited
|
|
|
|
processExited = True
|
|
|
|
|
|
|
|
# parameter components can only be one of the Constants defined in QtQuickConstants.Components
|
2011-11-01 15:58:45 +01:00
|
|
|
def __chooseComponents__(components=QtQuickConstants.Components.BUILTIN):
|
2011-09-06 09:12:15 +02:00
|
|
|
rbComponentToChoose = waitForObject("{type='QRadioButton' text='%s' visible='1'}"
|
|
|
|
% QtQuickConstants.getStringForComponents(components), 20000)
|
|
|
|
if rbComponentToChoose.checked:
|
|
|
|
test.passes("Selected QRadioButton is '%s'" % QtQuickConstants.getStringForComponents(components))
|
|
|
|
else:
|
|
|
|
clickButton(rbComponentToChoose)
|
|
|
|
test.verify(rbComponentToChoose.checked, "Selected QRadioButton is '%s'"
|
|
|
|
% QtQuickConstants.getStringForComponents(components))
|
|
|
|
|
2011-10-10 14:53:08 +02:00
|
|
|
# parameter target can be an OR'd value of QtQuickConstants.Targets
|
2011-11-01 15:58:45 +01:00
|
|
|
def __chooseTargets__(targets=QtQuickConstants.Targets.DESKTOP):
|
2011-09-06 09:12:15 +02:00
|
|
|
# DESKTOP should be always accessible
|
|
|
|
destDesktop = waitForObject("{type='QCheckBox' text='%s' visible='1'}"
|
2011-10-10 14:53:08 +02:00
|
|
|
% QtQuickConstants.getStringForTarget(QtQuickConstants.Targets.DESKTOP), 20000)
|
|
|
|
mustCheck = targets & QtQuickConstants.Targets.DESKTOP==QtQuickConstants.Targets.DESKTOP
|
|
|
|
if (mustCheck ^ destDesktop.checked):
|
2011-09-06 09:12:15 +02:00
|
|
|
clickButton(destDesktop)
|
2011-10-10 14:53:08 +02:00
|
|
|
# following targets depend on the build environment - added for further/later tests
|
|
|
|
available = [QtQuickConstants.Targets.SYMBIAN, QtQuickConstants.Targets.MAEMO5,
|
|
|
|
QtQuickConstants.Targets.SIMULATOR, QtQuickConstants.Targets.HARMATTAN]
|
2011-09-06 09:12:15 +02:00
|
|
|
for current in available:
|
2011-10-10 14:53:08 +02:00
|
|
|
mustCheck = targets & current == current
|
2011-09-06 09:12:15 +02:00
|
|
|
try:
|
2011-10-10 14:53:08 +02:00
|
|
|
targetCheckbox = findObject("{type='QCheckBox' text='%s' visible='1'}" % QtQuickConstants.getStringForTarget(current))
|
|
|
|
if mustCheck ^ targetCheckbox.checked:
|
|
|
|
clickButton(targetCheckbox)
|
2011-09-06 09:12:15 +02:00
|
|
|
except LookupError:
|
|
|
|
if mustCheck:
|
2011-10-10 14:53:08 +02:00
|
|
|
test.fail("Failed to check target '%s'" % QtQuickConstants.getStringForTarget(current))
|
2011-09-06 09:12:15 +02:00
|
|
|
|
|
|
|
def runAndCloseApp():
|
2011-09-21 13:55:23 +02:00
|
|
|
global processStarted, processExited
|
|
|
|
processStarted = processExited = False
|
2011-09-21 17:29:18 +02:00
|
|
|
installLazySignalHandler("{type='ProjectExplorer::ApplicationLaucher'}", "processStarted()", "__handleProcessStarted__")
|
|
|
|
installLazySignalHandler("{type='ProjectExplorer::ApplicationLaucher'}", "processExited(int)", "__handleProcessExited__")
|
2011-09-06 09:12:15 +02:00
|
|
|
runButton = waitForObject("{type='Core::Internal::FancyToolButton' text='Run' visible='1'}", 20000)
|
|
|
|
clickButton(runButton)
|
2011-09-21 13:55:23 +02:00
|
|
|
waitForSignal("{type='ProjectExplorer::BuildManager' unnamed='1'}", "buildQueueFinished(bool)", 300000)
|
|
|
|
buildSucceeded = checkLastBuild()
|
2011-09-06 09:12:15 +02:00
|
|
|
waitFor("processStarted==True", 10000)
|
|
|
|
if not buildSucceeded:
|
|
|
|
test.log("Build inside run wasn't successful - leaving test")
|
|
|
|
invokeMenuItem("File", "Exit")
|
|
|
|
return False
|
|
|
|
if not processStarted:
|
|
|
|
test.fatal("Couldn't start application - leaving test")
|
|
|
|
invokeMenuItem("File", "Exit")
|
|
|
|
return False
|
|
|
|
# the following is currently a work-around for not using hooking into subprocesses
|
2011-09-21 17:29:18 +02:00
|
|
|
if (waitForObject(":Qt Creator_Core::Internal::OutputPaneToggleButton").checked!=True):
|
|
|
|
clickButton(":Qt Creator_Core::Internal::OutputPaneToggleButton")
|
|
|
|
clickButton(":Qt Creator.Stop_QToolButton")
|
2011-09-06 09:12:15 +02:00
|
|
|
return True
|
|
|
|
|
|
|
|
def runAndCloseQtQuickUI():
|
|
|
|
global processStarted, processExited
|
|
|
|
processStarted = processExited = False
|
2011-09-21 17:29:18 +02:00
|
|
|
installLazySignalHandler("{type='ProjectExplorer::ApplicationLaucher'}", "processStarted()", "__handleProcessStarted__")
|
|
|
|
installLazySignalHandler("{type='ProjectExplorer::ApplicationLaucher'}", "processExited(int)", "__handleProcessExited__")
|
2011-09-06 09:12:15 +02:00
|
|
|
runButton = waitForObject("{type='Core::Internal::FancyToolButton' text='Run' visible='1'}", 20000)
|
|
|
|
clickButton(runButton)
|
|
|
|
waitFor("processStarted==True", 10000)
|
|
|
|
# the following is currently a work-around for not using hooking into subprocesses
|
2011-09-21 17:29:18 +02:00
|
|
|
if (waitForObject(":Qt Creator_Core::Internal::OutputPaneToggleButton").checked!=True):
|
|
|
|
clickButton(":Qt Creator_Core::Internal::OutputPaneToggleButton")
|
2011-10-07 15:43:45 +02:00
|
|
|
stop = findObject(":Qt Creator.Stop_QToolButton")
|
|
|
|
waitFor("stop.enabled==True")
|
|
|
|
clickButton(stop)
|
2011-10-05 14:59:12 +02:00
|
|
|
if platform.system()=="Darwin":
|
2011-10-07 15:43:45 +02:00
|
|
|
waitFor("stop.enabled==False")
|
2011-10-05 14:59:12 +02:00
|
|
|
snooze(2)
|
|
|
|
nativeType("<Escape>")
|
2011-09-06 09:12:15 +02:00
|
|
|
return True
|
|
|
|
|