source("../../shared/qtcreator.py") import re import tempfile import __builtin__ currentSelectedTreeItem = None warningOrError = re.compile('
((Error|Warning).*?)
') def main(): emptySettings = tempDir() __createMinimumIni__(emptySettings) SettingsPath = ' -settingspath "%s"' % emptySettings startApplication("qtcreator" + SettingsPath) if not startedWithoutPluginError(): return invokeMenuItem("Tools", "Options...") __checkBuildAndRun__() clickButton(waitForObject(":Options.Cancel_QPushButton")) invokeMenuItem("File", "Exit") __checkCreatedSettings__(emptySettings) def __createMinimumIni__(emptyParent): qtProjDir = os.path.join(emptyParent, "QtProject") os.mkdir(qtProjDir) iniFile = open(os.path.join(qtProjDir, "QtCreator.ini"), "w") iniFile.write("[%General]\n") iniFile.write("OverrideLanguage=C\n") iniFile.close() def __checkBuildAndRun__(): waitForObjectItem(":Options_QListView", "Build & Run") clickItem(":Options_QListView", "Build & Run", 14, 15, 0, Qt.LeftButton) # check compilers expectedCompilers = __getExpectedCompilers__() foundCompilers = [] foundCompilerNames = [] clickTab(waitForObject(":Options.qt_tabwidget_tabbar_QTabBar"), "Compilers") compilerTV = waitForObject(":Kits_Or_Compilers_QTreeView") __iterateTree__(compilerTV, __compFunc__, foundCompilers, foundCompilerNames) test.verify(__compareCompilers__(foundCompilers, expectedCompilers), "Verifying found and expected compilers are equal.") # check Qt versions qmakePath = which("qmake") foundQt = [] clickTab(waitForObject(":Options.qt_tabwidget_tabbar_QTabBar"), "Qt Versions") qtTW = waitForObject(":QtSupport__Internal__QtVersionManager.qtdirList_QTreeWidget") __iterateTree__(qtTW, __qtFunc__, foundQt, qmakePath) if foundQt: foundQt = foundQt[0] # check kits clickTab(waitForObject(":Options.qt_tabwidget_tabbar_QTabBar"), "Kits") kitsTV = waitForObject(":Kits_Or_Compilers_QTreeView") __iterateTree__(kitsTV, __kitFunc__, foundQt, foundCompilerNames) def __iterateTree__(treeObj, additionalFunc, *additionalParameters): global currentSelectedTreeItem model = treeObj.model() # 1st row: Auto-detected, 2nd row: Manual for sect in dumpIndices(model): sObj = "%s container=%s}" % (objectMap.realName(sect)[:-1], objectMap.realName(treeObj)) items = dumpIndices(model, sect) doneItems = [] for it in items: indexName = str(it.data().toString()) itObj = "%s container=%s}" % (objectMap.realName(it)[:-1], sObj) alreadyDone = doneItems.count(itObj) doneItems.append(itObj) if alreadyDone: itObj = "%s occurrence='%d'}" % (itObj[:-1], alreadyDone + 1) currentSelectedTreeItem = waitForObject(itObj, 3000) mouseClick(currentSelectedTreeItem, 5, 5, 0, Qt.LeftButton) additionalFunc(indexName, *additionalParameters) currentSelectedTreeItem = None def __compFunc__(it, foundComp, foundCompNames): try: waitFor("object.exists(':CompilerPath.Utils_BaseValidatingLineEdit')", 1000) pathLineEdit = findObject(":CompilerPath.Utils_BaseValidatingLineEdit") foundComp.append(str(pathLineEdit.text)) except: label = findObject("{buddy={container=':qt_tabwidget_stackedwidget_QWidget' " "text='Initialization:' type='QLabel' unnamed='1' visible='1'} " "type='QLabel' unnamed='1' visible='1'}") foundComp.append({it:str(label.text)}) foundCompNames.append(it) def __qtFunc__(it, foundQt, qmakePath): foundQt.append(it) qtPath = str(waitForObject(":QtSupport__Internal__QtVersionManager.qmake_QLabel").text) if platform.system() in ('Microsoft', 'Windows'): qtPath = qtPath.lower() qmakePath = qmakePath.lower() test.compare(qtPath, qmakePath, "Verifying found and expected Qt version are equal.") try: errorLabel = findObject(":QtSupport__Internal__QtVersionManager.errorLabel.QLabel") test.warning("Detected error or warning: '%s'" % errorLabel.text) except: pass def __kitFunc__(it, foundQt, foundCompNames): global currentSelectedTreeItem, warningOrError qtVersionStr = str(waitForObject(":Kits_QtVersion_QComboBox").currentText) test.compare(it, "Desktop (default)", "Verifying whether default Desktop kit has been created.") if foundQt: test.compare(qtVersionStr, foundQt, "Verifying if Qt versions match.") compilerCombo = waitForObject("{occurrence='3' type='QComboBox' unnamed='1' visible='1' " "window=':Qt Creator_Core::Internal::MainWindow'}") test.verify(str(compilerCombo.currentText) in foundCompNames, "Verifying if one of the found compilers had been set.") if currentSelectedTreeItem: foundWarningOrError = warningOrError.search(str(currentSelectedTreeItem.toolTip)) if foundWarningOrError: details = str(foundWarningOrError.group(1)).replace("