forked from qt-creator/qt-creator
		
	
		
			
	
	
		
			126 lines
		
	
	
		
			6.0 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
		
		
			
		
	
	
			126 lines
		
	
	
		
			6.0 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| 
								 | 
							
								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
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    class Destinations:
							 | 
						||
| 
								 | 
							
								        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
							 | 
						||
| 
								 | 
							
								    def getStringForDestination(destination):
							 | 
						||
| 
								 | 
							
								        if destination==QtQuickConstants.Destinations.DESKTOP:
							 | 
						||
| 
								 | 
							
								            return "Desktop"
							 | 
						||
| 
								 | 
							
								        elif destination==QtQuickConstants.Destinations.SYMBIAN:
							 | 
						||
| 
								 | 
							
								            return "Symbian Device"
							 | 
						||
| 
								 | 
							
								        elif destination==QtQuickConstants.Destinations.MAEMO5:
							 | 
						||
| 
								 | 
							
								            return "Maemo5"
							 | 
						||
| 
								 | 
							
								        elif destination==QtQuickConstants.Destinations.SIMULATOR:
							 | 
						||
| 
								 | 
							
								            return "Qt Simulator"
							 | 
						||
| 
								 | 
							
								        elif destination==QtQuickConstants.Destinations.HARMATTAN:
							 | 
						||
| 
								 | 
							
								            return "Harmattan"
							 | 
						||
| 
								 | 
							
								        else:
							 | 
						||
| 
								 | 
							
								            return None
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								def handleProcessStarted(object):
							 | 
						||
| 
								 | 
							
								    global processStarted
							 | 
						||
| 
								 | 
							
								    processStarted = True
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								def handleProcessExited(object, exitCode):
							 | 
						||
| 
								 | 
							
								    global processExited
							 | 
						||
| 
								 | 
							
								    processExited = True
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# parameter components can only be one of the Constants defined in QtQuickConstants.Components
							 | 
						||
| 
								 | 
							
								def chooseComponents(components=QtQuickConstants.Components.BUILTIN):
							 | 
						||
| 
								 | 
							
								    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))
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# parameter destination can be an OR'd value of QtQuickConstants.Destinations
							 | 
						||
| 
								 | 
							
								def chooseDestination(destination=QtQuickConstants.Destinations.DESKTOP):
							 | 
						||
| 
								 | 
							
								     # DESKTOP should be always accessible
							 | 
						||
| 
								 | 
							
								    destDesktop = waitForObject("{type='QCheckBox' text='%s' visible='1'}"
							 | 
						||
| 
								 | 
							
								                                % QtQuickConstants.getStringForDestination(QtQuickConstants.Destinations.DESKTOP), 20000)
							 | 
						||
| 
								 | 
							
								    mustCheck = destination & QtQuickConstants.Destinations.DESKTOP==QtQuickConstants.Destinations.DESKTOP
							 | 
						||
| 
								 | 
							
								    if (mustCheck and not destDesktop.checked) or (not mustCheck and destDesktop.checked):
							 | 
						||
| 
								 | 
							
								        clickButton(destDesktop)
							 | 
						||
| 
								 | 
							
								    # following destinations depend on the build environment - added for further/later tests
							 | 
						||
| 
								 | 
							
								    available = [QtQuickConstants.Destinations.SYMBIAN, QtQuickConstants.Destinations.MAEMO5,
							 | 
						||
| 
								 | 
							
								                 QtQuickConstants.Destinations.SIMULATOR, QtQuickConstants.Destinations.HARMATTAN]
							 | 
						||
| 
								 | 
							
								    for current in available:
							 | 
						||
| 
								 | 
							
								        mustCheck = destination & current == current
							 | 
						||
| 
								 | 
							
								        try:
							 | 
						||
| 
								 | 
							
								            target = findObject("{type='QCheckBox' text='%s' visible='1'}" % QtQuickConstants.getStringForDestination(current))
							 | 
						||
| 
								 | 
							
								            if (mustCheck and not target.checked) or (not mustCheck and target.checked):
							 | 
						||
| 
								 | 
							
								                clickButton(target)
							 | 
						||
| 
								 | 
							
								        except LookupError:
							 | 
						||
| 
								 | 
							
								            if mustCheck:
							 | 
						||
| 
								 | 
							
								                test.fail("Failed to check destination '%s'" % QtQuickConstants.getStringForDestination(current))
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								def runAndCloseApp():
							 | 
						||
| 
								 | 
							
								    global buildSucceeded, buildFinished, processStarted, processExited
							 | 
						||
| 
								 | 
							
								    buildSucceeded = buildFinished = processStarted = processExited = False
							 | 
						||
| 
								 | 
							
								    installLazySignalHandler("{type='ProjectExplorer::ApplicationLaucher'}", "processStarted()", "handleProcessStarted")
							 | 
						||
| 
								 | 
							
								    installLazySignalHandler("{type='ProjectExplorer::ApplicationLaucher'}", "processExited(int)", "handleProcessExited")
							 | 
						||
| 
								 | 
							
								    runButton = waitForObject("{type='Core::Internal::FancyToolButton' text='Run' visible='1'}", 20000)
							 | 
						||
| 
								 | 
							
								    clickButton(runButton)
							 | 
						||
| 
								 | 
							
								    waitForBuildFinished()
							 | 
						||
| 
								 | 
							
								    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
							 | 
						||
| 
								 | 
							
								    setWindowState(waitForObject(":Qt Creator_Core::Internal::MainWindow", 20000), WindowState.Minimize)
							 | 
						||
| 
								 | 
							
								    nativeType("<Alt+F4>")
							 | 
						||
| 
								 | 
							
								    waitFor("processExited==True",10000)
							 | 
						||
| 
								 | 
							
								    setWindowState(waitForObject(":Qt Creator_Core::Internal::MainWindow", 20000), WindowState.Normal)
							 | 
						||
| 
								 | 
							
								    return True
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								def runAndCloseQtQuickUI():
							 | 
						||
| 
								 | 
							
								    global processStarted, processExited
							 | 
						||
| 
								 | 
							
								    processStarted = processExited = False
							 | 
						||
| 
								 | 
							
								    installLazySignalHandler("{type='ProjectExplorer::ApplicationLaucher'}", "processStarted()", "handleProcessStarted")
							 | 
						||
| 
								 | 
							
								    installLazySignalHandler("{type='ProjectExplorer::ApplicationLaucher'}", "processExited(int)", "handleProcessExited")
							 | 
						||
| 
								 | 
							
								    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
							 | 
						||
| 
								 | 
							
								    setWindowState(waitForObject(":Qt Creator_Core::Internal::MainWindow", 20000), WindowState.Minimize)
							 | 
						||
| 
								 | 
							
								    nativeType("<Alt+F4>")
							 | 
						||
| 
								 | 
							
								    waitFor("processExited==True", 10000)
							 | 
						||
| 
								 | 
							
								    setWindowState(waitForObject(":Qt Creator_Core::Internal::MainWindow", 20000), WindowState.Normal)
							 | 
						||
| 
								 | 
							
								    return True
							 | 
						||
| 
								 | 
							
								
							 |