diff --git a/tests/system/shared/project.py b/tests/system/shared/project.py index b814680f8dda0c6317fac54a299a615c8dba45df..9a541ffe2e82693f6d302241b8af89bef08f2480 100644 --- a/tests/system/shared/project.py +++ b/tests/system/shared/project.py @@ -30,12 +30,6 @@ import __builtin__ import re -processExited = False - -def __handleProcessExited__(*args): - global processExited - processExited = True - def openQmakeProject(projectPath, targets=Targets.desktopTargetClasses(), fromWelcome=False): cleanUpUserFiles(projectPath) if fromWelcome: @@ -383,7 +377,7 @@ def __chooseTargets__(targets=Targets.DESKTOP_474_GCC, availableTargets=None): test.warning("Target '%s' is not set up correctly." % Targets.getStringForTarget(current)) return checkedTargets -def waitForProcessStarted(): +def waitForProcessRunning(running=True): outputButton = waitForObject(":Qt Creator_AppOutput_Core::Internal::OutputPaneToggleButton") if not waitFor("outputButton.checked", 10000): ensureChecked(outputButton) @@ -391,7 +385,7 @@ def waitForProcessStarted(): reRunButton = findObject(":Qt Creator.ReRun_QToolButton") waitFor("object.exists(':Qt Creator.Stop_QToolButton')", 20000) stopButton = findObject(":Qt Creator.Stop_QToolButton") - return waitFor("not reRunButton.enabled and stopButton.enabled", 10000) + return waitFor("(reRunButton.enabled != running) and (stopButton.enabled == running)", 10000) # run and close an application # withHookInto - if set to True the function tries to attach to the sub-process instead of simply pressing Stop inside Creator @@ -404,10 +398,6 @@ def waitForProcessStarted(): # by yourself (or use the function parameter) # 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, sType=None, userDefinedType=None): - global processExited - processExited = False - overrideInstallLazySignalHandler() - installLazySignalHandler("{type='QProcess'}", "finished(int,QProcess::ExitStatus)", "__handleProcessExited__") runButton = waitForObject(":*Qt Creator.Run_Core::Internal::FancyToolButton") clickButton(runButton) if sType != SubprocessType.QT_QUICK_UI: @@ -418,7 +408,7 @@ def runAndCloseApp(withHookInto=False, executable=None, port=None, function=None test.fatal("Build inside run wasn't successful - leaving test") invokeMenuItem("File", "Exit") return False - if not waitForProcessStarted(): + if not waitForProcessRunning(): test.fatal("Couldn't start application - leaving test") invokeMenuItem("File", "Exit") return False @@ -466,7 +456,6 @@ def __closeSubprocessByPushingStop__(sType): test.fatal("Subprocess does not seem to have been started.") def __closeSubprocessByHookingInto__(executable, port, function, sType, userDefType): - global processExited ensureChecked(":Qt Creator_AppOutput_Core::Internal::OutputPaneToggleButton") output = waitForObject("{type='Core::OutputWindow' visible='1' windowTitle='Application Output Window'}") if port == None: @@ -495,7 +484,7 @@ def __closeSubprocessByHookingInto__(executable, port, function, sType, userDefT switchViewTo(ViewConstants.EDIT) runButton = waitForObject(":*Qt Creator.Run_Core::Internal::FancyToolButton") clickButton(runButton) - if not waitForProcessStarted(): + if not waitForProcessRunning(): test.fatal("Something seems to be really wrong.", "Application output:" % str(output.plainText)) return False @@ -522,11 +511,10 @@ def __closeSubprocessByHookingInto__(executable, port, function, sType, userDefT "Using fallback of pushing STOP inside Creator.") resetApplicationContextToCreator() __closeSubprocessByPushingStop__(sType) - waitFor("processExited==True and 'exited with code' in str(output.plainText)", 10000) - if not processExited: + resetApplicationContextToCreator() + if not waitForProcessRunning(False) and waitFor("'exited with code' in str(output.plainText)", 10000): test.warning("Sub-process seems not to have closed properly.") try: - resetApplicationContextToCreator() __closeSubprocessByPushingStop__(sType) except: pass