forked from qt-creator/qt-creator
Merge remote-tracking branch 'origin/2.4'
Conflicts: share/qtcreator/welcomescreen/widgets/ExampleDelegate.qml src/plugins/qtsupport/exampleslistmodel.cpp src/plugins/qtsupport/exampleslistmodel.h src/plugins/qtsupport/gettingstartedwelcomepage.cpp src/plugins/qtsupport/gettingstartedwelcomepage.h Change-Id: I268072db01064d71bc4828942d71fc772ddd3539
This commit is contained in:
@@ -19,7 +19,7 @@ def modifyRunSettingsForHookInto(projectName, port):
|
||||
if result:
|
||||
clickButton(waitForObject("{container=':Qt Creator.scrollArea_QScrollArea' text='Details' "
|
||||
"type='Utils::DetailsButton' unnamed='1' visible='1' "
|
||||
"leftWidget={type='QLabel' text='Using <b>Build Environment</b>' unnamed='1' visible='1'}}"))
|
||||
"leftWidget={type='QLabel' text~='Us(e|ing) <b>Build Environment</b>' unnamed='1' visible='1'}}"))
|
||||
envVarsTableView = waitForObject("{type='QTableView' visible='1' unnamed='1'}")
|
||||
model = envVarsTableView.model()
|
||||
for row in range(model.rowCount()):
|
||||
|
||||
@@ -83,7 +83,14 @@ def __chooseTargets__(targets=QtQuickConstants.Targets.DESKTOP):
|
||||
if mustCheck:
|
||||
test.fail("Failed to check target '%s'" % QtQuickConstants.getStringForTarget(current))
|
||||
|
||||
def runAndCloseApp(withHookInto=False, executable=None, port=None):
|
||||
# run and close a Qt Quick application
|
||||
# withHookInto - if set to True the function tries to attach to the sub-process instead of simply pressing Stop inside Creator
|
||||
# executable - must be defined when using hook-into
|
||||
# port - must be defined when using hook-into
|
||||
# function - can be a string holding a function name or a reference to the function itself - this function will be called on
|
||||
# the sub-process when hooking-into has been successful - if its missing simply closing the Qt Quick app will be done
|
||||
# ATTENTION! Make sure this function won't fail and the sub-process will end when the function returns
|
||||
def runAndCloseApp(withHookInto=False, executable=None, port=None, function=None):
|
||||
global processStarted, processExited
|
||||
processStarted = processExited = False
|
||||
installLazySignalHandler("{type='ProjectExplorer::ApplicationLaucher'}", "processStarted()", "__handleProcessStarted__")
|
||||
@@ -102,7 +109,7 @@ def runAndCloseApp(withHookInto=False, executable=None, port=None):
|
||||
invokeMenuItem("File", "Exit")
|
||||
return False
|
||||
if withHookInto and not executable in ("", None):
|
||||
__closeSubprocessByHookingIntoQmlApplicationViewer__(executable, port)
|
||||
__closeSubprocessByHookingIntoQmlApplicationViewer__(executable, port, function)
|
||||
else:
|
||||
__closeSubprocessByPushingStop__()
|
||||
return True
|
||||
@@ -115,7 +122,7 @@ def __closeSubprocessByPushingStop__():
|
||||
test.verify(playButton.enabled)
|
||||
test.compare(stopButton.enabled, False)
|
||||
|
||||
def __closeSubprocessByHookingIntoQmlApplicationViewer__(executable, port):
|
||||
def __closeSubprocessByHookingIntoQmlApplicationViewer__(executable, port, function):
|
||||
global processExited
|
||||
ensureChecked(":Qt Creator_Core::Internal::OutputPaneToggleButton")
|
||||
output = waitForObject("{type='Core::OutputWindow' visible='1' windowTitle='Application Output Window'}", 20000)
|
||||
@@ -124,9 +131,28 @@ def __closeSubprocessByHookingIntoQmlApplicationViewer__(executable, port):
|
||||
else:
|
||||
waitFor("'Listening on port %d for incoming connectionsdone' in str(output.plainText)" % port, 5000)
|
||||
attachToApplication(executable)
|
||||
sendEvent("QCloseEvent", "{type='QmlApplicationViewer' unnamed='1' visible='1'}")
|
||||
if function == None:
|
||||
sendEvent("QCloseEvent", "{type='QmlApplicationViewer' unnamed='1' visible='1'}")
|
||||
setApplicationContext(applicationContext("qtcreator"))
|
||||
else:
|
||||
try:
|
||||
if isinstance(function, (str, unicode)):
|
||||
globals()[function]()
|
||||
else:
|
||||
function()
|
||||
except:
|
||||
test.fatal("Function to execute on sub-process could not be found.",
|
||||
"Using fallback of pushing STOP inside Creator.")
|
||||
setApplicationContext(applicationContext("qtcreator"))
|
||||
__closeSubprocessByPushingStop__()
|
||||
waitFor("processExited==True", 10000)
|
||||
setApplicationContext(applicationContext("qtcreator"))
|
||||
if not processExited:
|
||||
test.warning("Sub-process seems not to have closed properly.")
|
||||
try:
|
||||
setApplicationContext(applicationContext("qtcreator"))
|
||||
__closeSubprocessByPushingStop__()
|
||||
except:
|
||||
pass
|
||||
return True
|
||||
|
||||
def runAndCloseQtQuickUI():
|
||||
|
||||
@@ -23,7 +23,7 @@ def main():
|
||||
result = addExecutableAsAttachableAUT(projectName, 11223)
|
||||
allowAppThroughWinFW(workingDir, projectName)
|
||||
if result:
|
||||
result = runAndCloseApp(True, projectName, 11223)
|
||||
result = runAndCloseApp(True, projectName, 11223, "subprocessFunction")
|
||||
else:
|
||||
result = runAndCloseApp()
|
||||
removeExecutableAsAttachableAUT(projectName, 11223)
|
||||
@@ -35,6 +35,12 @@ def main():
|
||||
|
||||
invokeMenuItem("File", "Exit")
|
||||
|
||||
def subprocessFunction():
|
||||
helloWorldText = waitForObject("{container={type='QmlApplicationViewer' visible='1' unnamed='1'} "
|
||||
"enabled='true' text='Hello World' type='Text' unnamed='1' visible='true'}")
|
||||
test.log("Clicking 'Hello World' Text to close QmlApplicationViewer")
|
||||
mouseClick(helloWorldText, 5, 5, 0, Qt.LeftButton)
|
||||
|
||||
def cleanup():
|
||||
global workingDir
|
||||
# waiting for a clean exit - for a full-remove of the temp directory
|
||||
|
||||
@@ -12,10 +12,11 @@ def main():
|
||||
# using a temporary directory won't mess up an eventually exisiting
|
||||
workingDir = tempDir()
|
||||
prepareTemplate(sourceExample)
|
||||
createNewQtQuickApplication(workingDir, None, templateDir + "/qml/textselection.qml")
|
||||
projectName = createNewQtQuickApplication(workingDir, None, templateDir + "/qml/textselection.qml")
|
||||
# wait for parsing to complete
|
||||
waitForSignal("{type='CppTools::Internal::CppModelManager' unnamed='1'}", "sourceFilesRefreshed(QStringList)", 30000)
|
||||
test.log("Building project")
|
||||
result = modifyRunSettingsForHookInto(projectName, 11223)
|
||||
invokeMenuItem("Build","Build All")
|
||||
waitForSignal("{type='ProjectExplorer::BuildManager' unnamed='1'}", "buildQueueFinished(bool)", 300000)
|
||||
if not checkCompile():
|
||||
@@ -23,10 +24,33 @@ def main():
|
||||
else:
|
||||
checkLastBuild()
|
||||
test.log("Running project (includes build)")
|
||||
if runAndCloseApp():
|
||||
if result:
|
||||
result = addExecutableAsAttachableAUT(projectName, 11223)
|
||||
allowAppThroughWinFW(workingDir, projectName)
|
||||
if result:
|
||||
result = runAndCloseApp(True, projectName, 11223, subprocessFunction)
|
||||
else:
|
||||
result = runAndCloseApp()
|
||||
removeExecutableAsAttachableAUT(projectName, 11223)
|
||||
deleteAppFromWinFW(workingDir, projectName)
|
||||
else:
|
||||
result = runAndCloseApp()
|
||||
if result:
|
||||
logApplicationOutput()
|
||||
invokeMenuItem("File", "Exit")
|
||||
|
||||
def subprocessFunction():
|
||||
textEdit = waitForObject("{container={type='QmlApplicationViewer' unnamed='1' visible='1'} "
|
||||
"enabled='true' type='TextEdit' unnamed='1' visible='true'}")
|
||||
test.log("Test dragging")
|
||||
dragItemBy(textEdit, 30, 30, 50, 50, 0, Qt.LeftButton)
|
||||
test.log("Test editing")
|
||||
textEdit.cursorPosition = 0
|
||||
type(textEdit, "This text is entered by Squish...")
|
||||
type(textEdit, "<Return>")
|
||||
test.log("Closing QmlApplicationViewer")
|
||||
sendEvent("QCloseEvent", "{type='QmlApplicationViewer' unnamed='1' visible='1'}")
|
||||
|
||||
def prepareTemplate(sourceExample):
|
||||
global templateDir
|
||||
templateDir = tempDir()
|
||||
|
||||
Reference in New Issue
Block a user