diff --git a/doc/api/coding-style.qdoc b/doc/api/coding-style.qdoc
index 00143bcbb9a..3275dca8d4a 100644
--- a/doc/api/coding-style.qdoc
+++ b/doc/api/coding-style.qdoc
@@ -744,11 +744,10 @@
\section3 Null Pointers
- Using a plain zero (0) for null pointer constants is always correct and
- least effort to type.
+ Use nullptr for null pointer constants.
\code
- void *p = 0;
+ void *p = nullptr;
-NOT-
@@ -764,7 +763,7 @@
\endcode
\note As an exception, imported third party code as well as code
- interfacing the native APIs (src/support/os_*) can use NULL.
+ interfacing the native APIs (src/support/os_*) can use NULL or 0.
\section2 C++11 and C++14 Features
diff --git a/share/qtcreator/translations/qtcreator_ru.ts b/share/qtcreator/translations/qtcreator_ru.ts
index d87d7c58874..4a7e7ca9620 100644
--- a/share/qtcreator/translations/qtcreator_ru.ts
+++ b/share/qtcreator/translations/qtcreator_ru.ts
@@ -303,7 +303,7 @@ The minimum API level required by the kit is %1.
Android run settings
- Настройки запуска Android
+ Настройки запуска под AndroidThe project file "%1" is currently being parsed.
@@ -357,7 +357,7 @@ The minimum API level required by the kit is %1.
Install the missing emulator tool (%1) to the installed Android SDK.
- Установите отсутствующую утилиту эмуляции (%1) в установленный Android SDK.
+ Установите утилиту эмуляции (%1) в установленный Android SDK.
@@ -929,7 +929,7 @@ Do you want to uninstall the existing package?
Cannot attach jdb to the running application
- Не удалось подключить jdb к работающему приложению
+ Не удалось подключить jdb к запущенному приложению"%1" died.
@@ -1909,7 +1909,7 @@ Executable: %2
Select on what grouping the tests should be based.
- Выберите основание для группировки тестов.
+ Выберите критерий для группировки тестов.Directory
@@ -14156,7 +14156,7 @@ You can choose between waiting longer or aborting debugging.
Attached to running application.
- Присоединено к работающему приложению.
+ Присоединено к запущенному приложению.Failed to attach to application: %1
diff --git a/src/libs/utils/environment.cpp b/src/libs/utils/environment.cpp
index d7eb1e7c1dc..9b77a8b71e2 100644
--- a/src/libs/utils/environment.cpp
+++ b/src/libs/utils/environment.cpp
@@ -49,8 +49,10 @@ public:
toReplace.append(':');
toReplace.append(lib.path());
- if (ldLibraryPath.startsWith(toReplace))
- set("LD_LIBRARY_PATH", ldLibraryPath.remove(0, toReplace.length()));
+ if (ldLibraryPath.startsWith(toReplace + ':'))
+ set("LD_LIBRARY_PATH", ldLibraryPath.remove(0, toReplace.length() + 1));
+ else if (ldLibraryPath == toReplace)
+ unset("LD_LIBRARY_PATH");
}
}
};
diff --git a/src/plugins/autotest/testrunner.cpp b/src/plugins/autotest/testrunner.cpp
index ce3afcffa79..e77533431dd 100644
--- a/src/plugins/autotest/testrunner.cpp
+++ b/src/plugins/autotest/testrunner.cpp
@@ -238,7 +238,8 @@ void TestRunner::cancelCurrent(TestRunner::CancelReason reason)
void TestRunner::onProcessFinished()
{
- if (m_currentConfig) {
+ if (m_executingTests && QTC_GUARD(m_currentConfig)) {
+ QTC_CHECK(m_fakeFutureInterface);
m_fakeFutureInterface->setProgressValue(m_fakeFutureInterface->progressValue()
+ m_currentConfig->testCaseCount());
if (!m_fakeFutureInterface->isCanceled()) {
@@ -257,6 +258,10 @@ void TestRunner::onProcessFinished()
}
resetInternalPointers();
+ if (!m_fakeFutureInterface) {
+ QTC_ASSERT(!m_executingTests, m_executingTests = false);
+ return;
+ }
if (!m_selectedTests.isEmpty() && !m_fakeFutureInterface->isCanceled())
scheduleNext();
else
@@ -552,8 +557,9 @@ void TestRunner::debugTests()
outputreader, &QObject::deleteLater);
}
- connect(this, &TestRunner::requestStopTestRun, runControl,
- &ProjectExplorer::RunControl::initiateStop);
+ m_stopDebugConnect = connect(this, &TestRunner::requestStopTestRun,
+ runControl, &ProjectExplorer::RunControl::initiateStop);
+
connect(runControl, &ProjectExplorer::RunControl::stopped, this, &TestRunner::onFinished);
ProjectExplorer::ProjectExplorerPlugin::startRunControl(runControl);
}
@@ -611,6 +617,7 @@ void TestRunner::onFinished()
qDeleteAll(m_selectedTests);
m_selectedTests.clear();
+ disconnect(m_stopDebugConnect);
disconnect(m_targetConnect);
m_fakeFutureInterface = nullptr;
m_executingTests = false;
diff --git a/src/plugins/autotest/testrunner.h b/src/plugins/autotest/testrunner.h
index c73d8575051..f6cc708dcb7 100644
--- a/src/plugins/autotest/testrunner.h
+++ b/src/plugins/autotest/testrunner.h
@@ -98,6 +98,8 @@ private:
// temporarily used if building before running is necessary
QMetaObject::Connection m_buildConnect;
+ // temporarily used when debugging
+ QMetaObject::Connection m_stopDebugConnect;
// temporarily used for handling of switching the current target
QMetaObject::Connection m_targetConnect;
};
diff --git a/src/plugins/cpptools/cppvirtualfunctionassistprovider.h b/src/plugins/cpptools/cppvirtualfunctionassistprovider.h
index 52734bd71bb..83de52594b9 100644
--- a/src/plugins/cpptools/cppvirtualfunctionassistprovider.h
+++ b/src/plugins/cpptools/cppvirtualfunctionassistprovider.h
@@ -40,6 +40,7 @@ namespace CppTools {
class CPPTOOLS_EXPORT VirtualFunctionAssistProvider : public TextEditor::IAssistProvider
{
+ Q_OBJECT
public:
VirtualFunctionAssistProvider();
diff --git a/src/plugins/debugger/gdb/gdbengine.cpp b/src/plugins/debugger/gdb/gdbengine.cpp
index 2551b43177b..d16121f22ce 100644
--- a/src/plugins/debugger/gdb/gdbengine.cpp
+++ b/src/plugins/debugger/gdb/gdbengine.cpp
@@ -2603,9 +2603,13 @@ void GdbEngine::changeBreakpoint(Breakpoint bp)
cmd.callback = [this, bp](const DebuggerResponse &r) { handleBreakLineNumber(r, bp); };
} else if (data.command != response.command) {
cmd.function = "-break-commands " + bpnr;
- foreach (const QString &command, data.command.split(QLatin1String("\n"))) {
- if (!command.isEmpty())
+ for (QString command : data.command.split('\n')) {
+ if (!command.isEmpty()) {
+ // escape backslashes and quotes
+ command.replace('\\', "\\\\");
+ command.replace('"', "\\\"");
cmd.function += " \"" + command + '"';
+ }
}
cmd.callback = [this, bp](const DebuggerResponse &r) { handleBreakIgnore(r, bp); };
} else if (!data.conditionsMatch(response.condition)) {
diff --git a/src/plugins/qmakeprojectmanager/wizards/guiappwizard.cpp b/src/plugins/qmakeprojectmanager/wizards/guiappwizard.cpp
index a4df0287b15..907964b6fe6 100644
--- a/src/plugins/qmakeprojectmanager/wizards/guiappwizard.cpp
+++ b/src/plugins/qmakeprojectmanager/wizards/guiappwizard.cpp
@@ -78,8 +78,7 @@ GuiAppWizard::GuiAppWizard()
"Includes a Qt Designer-based main window.\n\n"
"Preselects a desktop Qt for building the application if available."));
setIcon(QIcon(QLatin1String(":/wizards/images/gui.png")));
- auto qt5 = Core::Id::fromString(QString(QtSupport::Constants::FEATURE_QT_PREFIX).append(".5"));
- setRequiredFeatures({QtSupport::Constants::FEATURE_QWIDGETS, qt5});
+ setRequiredFeatures({QtSupport::Constants::FEATURE_QWIDGETS});
}
Core::BaseFileWizard *GuiAppWizard::create(QWidget *parent, const Core::WizardDialogParameters ¶meters) const
diff --git a/src/plugins/qmakeprojectmanager/wizards/guiappwizarddialog.cpp b/src/plugins/qmakeprojectmanager/wizards/guiappwizarddialog.cpp
index 0bdf1a3a7de..5f12fdc41a0 100644
--- a/src/plugins/qmakeprojectmanager/wizards/guiappwizarddialog.cpp
+++ b/src/plugins/qmakeprojectmanager/wizards/guiappwizarddialog.cpp
@@ -84,7 +84,6 @@ QtProjectParameters GuiAppWizardDialog::projectParameters() const
rc.path = path();
rc.selectedModules = selectedModulesList();
rc.deselectedModules = deselectedModulesList();
- rc.qtVersionSupport = QtProjectParameters::SupportQt5Only;
return rc;
}
diff --git a/src/plugins/texteditor/codeassist/codeassistant.cpp b/src/plugins/texteditor/codeassist/codeassistant.cpp
index 06b488d282c..e94cb5e8d67 100644
--- a/src/plugins/texteditor/codeassist/codeassistant.cpp
+++ b/src/plugins/texteditor/codeassist/codeassistant.cpp
@@ -512,7 +512,7 @@ bool CodeAssistantPrivate::isDestroyEvent(int key, const QString &keyText)
{
if (keyText.isEmpty())
return key != Qt::LeftArrow && key != Qt::RightArrow && key != Qt::Key_Shift;
- else if (auto *provider = dynamic_cast(m_requestProvider))
+ if (auto *provider = qobject_cast(m_requestProvider))
return !provider->isContinuationChar(keyText.at(0));
return false;
}
diff --git a/src/shared/qbs b/src/shared/qbs
index 2440b19b288..66131652f17 160000
--- a/src/shared/qbs
+++ b/src/shared/qbs
@@ -1 +1 @@
-Subproject commit 2440b19b288096e1601674de2ac15c560af469cd
+Subproject commit 66131652f178cd1605b8a2c0ba7023392e13ad5a
diff --git a/tests/system/objects.map b/tests/system/objects.map
index ffc6e4753fe..0fdd7e14272 100644
--- a/tests/system/objects.map
+++ b/tests/system/objects.map
@@ -159,7 +159,6 @@
:Qt Creator_QmlJSEditor::Internal::QmlJSOutlineTreeView {type='QmlJSEditor::Internal::QmlJSOutlineTreeView' unnamed='1' visible='1' window=':Qt Creator_Core::Internal::MainWindow'}
:Qt Creator_QmlJSEditor::QmlJSTextEditorWidget {type='QmlJSEditor::Internal::QmlJSEditorWidget' unnamed='1' visible='1' window=':Qt Creator_Core::Internal::MainWindow'}
:Qt Creator_SearchResult_Core::Internal::OutputPaneToggleButton {occurrence='2' type='Core::Internal::OutputPaneToggleButton' unnamed='1' visible='1' window=':Qt Creator_Core::Internal::MainWindow'}
-:Qt Creator_SystemSettings.Details_Utils::DetailsButton {occurrence='4' text='Details' type='Utils::DetailsButton' unnamed='1' visible='1' window=':Qt Creator_Core::Internal::MainWindow'}
:Qt Creator_TextEditor::TextEditorWidget {type='TextEditor::TextEditorWidget' unnamed='1' visible='1' window=':Qt Creator_Core::Internal::MainWindow'}
:Qt Creator_Utils::BuildDirectoryLineEdit {name='shadowBuildDirEditLineEdit' type='Utils::FancyLineEdit' visible='1' window=':Qt Creator_Core::Internal::MainWindow'}
:Qt Creator_Utils::NavigationTreeView {type='Utils::NavigationTreeView' unnamed='1' visible='1' window=':Qt Creator_Core::Internal::MainWindow'}
@@ -220,7 +219,6 @@
:scrollArea.Edit build configuration:_QComboBox {leftWidget=':scrollArea.Edit build configuration:_QLabel' type='QComboBox' unnamed='1' visible='1'}
:scrollArea.Edit build configuration:_QLabel {text='Edit build configuration:' type='QLabel' unnamed='1' visible='1'}
:scrollArea.Library not available_QLabel {name='qmlDebuggingWarningText' text?='Library not available*' type='QLabel' visible='1' window=':Qt Creator_Core::Internal::MainWindow'}
-:scrollArea.environment_QTreeView {container=':Qt Creator.scrollArea_QScrollArea' type='QTreeView' unnamed='1' visible='1'}
:scrollArea.qmlDebuggingLibraryCheckBox_QCheckBox {name='qmlDebuggingLibraryCheckBox' type='QCheckBox' visible='1' window=':Qt Creator_Core::Internal::MainWindow'}
:sourceFileLineEdit_Utils::FileNameValidatingLineEdit {buddy=':Qt Gui Application.Source file:_QLabel' name='sourceFileLineEdit' type='Utils::FileNameValidatingLineEdit' visible='1'}
:splitter.Commit File(s)_VcsBase::QActionPushButton {text~='(Commit .+/.+ File.*)' type='VcsBase::QActionPushButton' unnamed='1' visible='1' window=':Qt Creator_Core::Internal::MainWindow'}
diff --git a/tests/system/shared/build_utils.py b/tests/system/shared/build_utils.py
index 964cec2458d..0aaab2ac33d 100644
--- a/tests/system/shared/build_utils.py
+++ b/tests/system/shared/build_utils.py
@@ -25,6 +25,11 @@
import re;
+def getBuildIssues():
+ ensureChecked(":Qt Creator_Issues_Core::Internal::OutputPaneToggleButton")
+ model = waitForObject(":Qt Creator.Issues_QListView").model()
+ return dumpBuildIssues(model)
+
# this method checks the last build (if there's one) and logs the number of errors, warnings and
# lines within the Issues output
# param expectedToFail can be used to tell this function if the build was expected to fail or not
@@ -32,20 +37,17 @@ import re;
def checkLastBuild(expectedToFail=False, createTasksFileOnError=True):
try:
# can't use waitForObject() 'cause visible is always 0
- buildProg = findObject("{type='ProjectExplorer::Internal::BuildProgress' unnamed='1' }")
+ findObject("{type='ProjectExplorer::Internal::BuildProgress' unnamed='1' }")
except LookupError:
test.log("checkLastBuild called without a build")
return
- ensureChecked(":Qt Creator_Issues_Core::Internal::OutputPaneToggleButton")
- model = waitForObject(":Qt Creator.Issues_QListView").model()
- buildIssues = dumpBuildIssues(model)
+ buildIssues = getBuildIssues()
types = map(lambda i: i[5], buildIssues)
errors = types.count("1")
warnings = types.count("2")
gotErrors = errors != 0
test.verify(not (gotErrors ^ expectedToFail), "Errors: %s | Warnings: %s" % (errors, warnings))
# additional stuff - could be removed... or improved :)
- test.log("Rows inside issues: %d" % model.rowCount())
if gotErrors and createTasksFileOnError:
createTasksFile(buildIssues)
return not gotErrors
@@ -129,15 +131,14 @@ def createTasksFile(buildIssues):
file.close()
test.log("Written tasks file %s" % outfile)
-# returns a list of pairs each containing the zero based number of a kit
+# returns a list of pairs each containing the ID of a kit (see class Targets)
# and the name of the matching build configuration
-# param kitCount specifies the number of kits currently defined (must be correct!)
# param filter is a regular expression to filter the configuration by their name
-def iterateBuildConfigs(kitCount, filter = ""):
+def iterateBuildConfigs(filter = ""):
switchViewTo(ViewConstants.PROJECTS)
configs = []
- for currentKit in range(kitCount):
- switchToBuildOrRunSettingsFor(kitCount, currentKit, ProjectSettings.BUILD)
+ for currentKit in iterateConfiguredKits():
+ switchToBuildOrRunSettingsFor(currentKit, ProjectSettings.BUILD)
model = waitForObject(":scrollArea.Edit build configuration:_QComboBox").model()
prog = re.compile(filter)
# for each row in the model, write its data to a list
@@ -149,21 +150,23 @@ def iterateBuildConfigs(kitCount, filter = ""):
return configs
# selects a build configuration for building the current project
-# param targetCount specifies the number of targets currently defined (must be correct!)
-# param currentTarget specifies the target for which to switch into the specified settings (zero based index)
+# param wantedKit specifies the ID of the kit to select (see class Targets)
# param configName is the name of the configuration that should be selected
# param afterSwitchTo the ViewConstant of the mode to switch to after selecting or None
-# returns information about the selected kit, see getQtInformationForBuildSettings
-def selectBuildConfig(targetCount, currentTarget, configName, afterSwitchTo=ViewConstants.EDIT):
+def selectBuildConfig(wantedKit, configName, afterSwitchTo=ViewConstants.EDIT):
switchViewTo(ViewConstants.PROJECTS)
- switchToBuildOrRunSettingsFor(targetCount, currentTarget, ProjectSettings.BUILD)
- if selectFromCombo(":scrollArea.Edit build configuration:_QComboBox", configName) or targetCount > 1:
+ if any((switchToBuildOrRunSettingsFor(wantedKit, ProjectSettings.BUILD),
+ selectFromCombo(":scrollArea.Edit build configuration:_QComboBox", configName))):
progressBarWait(30000)
- return getQtInformationForBuildSettings(targetCount, True, afterSwitchTo)
+ if afterSwitchTo:
+ if ViewConstants.FIRST_AVAILABLE <= afterSwitchTo <= ViewConstants.LAST_AVAILABLE:
+ switchViewTo(afterSwitchTo)
+ else:
+ test.warning("Don't know where you trying to switch to (%s)" % afterSwitchTo)
# This will not trigger a rebuild. If needed, caller has to do this.
-def verifyBuildConfig(targetCount, currentTarget, configName, shouldBeDebug=False, enableShadowBuild=False, enableQmlDebug=False):
- qtInfo = selectBuildConfig(targetCount, currentTarget, configName, None)
+def verifyBuildConfig(currentTarget, configName, shouldBeDebug=False, enableShadowBuild=False, enableQmlDebug=False):
+ selectBuildConfig(currentTarget, configName, None)
ensureChecked(waitForObject(":scrollArea.Details_Utils::DetailsButton"))
ensureChecked("{name='shadowBuildCheckBox' type='QCheckBox' visible='1'}", enableShadowBuild)
buildCfCombo = waitForObject("{type='QComboBox' name='buildConfigurationComboBox' visible='1' "
@@ -201,7 +204,6 @@ def verifyBuildConfig(targetCount, currentTarget, configName, shouldBeDebug=Fals
clickButton(waitForObject(":QML Debugging.No_QPushButton", 5000))
clickButton(waitForObject(":scrollArea.Details_Utils::DetailsButton"))
switchViewTo(ViewConstants.EDIT)
- return qtInfo
# verify if building and running of project was successful
def verifyBuildAndRun():
@@ -216,15 +218,15 @@ def verifyBuildAndRun():
"Verifying if built app started and closed successfully.")
# run project for debug and release
-def runVerify(checkedTargets):
- availableConfigs = iterateBuildConfigs(len(checkedTargets))
+def runVerify():
+ availableConfigs = iterateBuildConfigs()
if not availableConfigs:
test.fatal("Haven't found build configurations, quitting")
invokeMenuItem("File", "Save All")
invokeMenuItem("File", "Exit")
# select debug configuration
for kit, config in availableConfigs:
- selectBuildConfig(len(checkedTargets), kit, config)
+ selectBuildConfig(kit, config)
test.log("Using build config '%s'" % config)
if runAndCloseApp() == None:
checkCompile()
diff --git a/tests/system/shared/classes.py b/tests/system/shared/classes.py
index 398928366e2..a8bdbf96640 100644
--- a/tests/system/shared/classes.py
+++ b/tests/system/shared/classes.py
@@ -24,7 +24,6 @@
############################################################################
import __builtin__
-import operator
# for easier re-usage (because Python hasn't an enum type)
class Targets:
@@ -81,6 +80,13 @@ class Targets:
test.fatal("You've passed at least one unknown target!")
return result
+ @staticmethod
+ def getIdForTargetName(targetName):
+ for id in Targets.ALL_TARGETS:
+ if Targets.getStringForTarget(id) == targetName:
+ return id
+ raise Exception("'%s' is not a known target name" % targetName)
+
@staticmethod
def getDefaultKit():
return Targets.DESKTOP_5_6_1_DEFAULT
diff --git a/tests/system/shared/debugger.py b/tests/system/shared/debugger.py
index 0ff993d27d5..1a1fc39a567 100644
--- a/tests/system/shared/debugger.py
+++ b/tests/system/shared/debugger.py
@@ -23,8 +23,6 @@
#
############################################################################
-import re
-
def handleDebuggerWarnings(config, isMsvcBuild=False):
if isMsvcBuild:
try:
@@ -71,8 +69,8 @@ def setBreakpointsForCurrentProject(filesAndLines):
if not filesAndLines or not isinstance(filesAndLines, (list,tuple)):
test.fatal("This function only takes a non-empty list/tuple holding dicts.")
return False
- navTree = waitForObject("{type='Utils::NavigationTreeView' unnamed='1' visible='1' "
- "window=':Qt Creator_Core::Internal::MainWindow'}")
+ waitForObject("{type='Utils::NavigationTreeView' unnamed='1' visible='1' "
+ "window=':Qt Creator_Core::Internal::MainWindow'}")
for current in filesAndLines:
for curFile,curLine in current.iteritems():
if not openDocument(curFile):
@@ -115,25 +113,24 @@ def removeOldBreakpoints():
return test.compare(model.rowCount(), 0, "Check if all breakpoints have been removed.")
# function to do simple debugging of the current (configured) project
-# param kitCount specifies the number of kits currently defined (must be correct!)
-# param currentKit specifies the target to use (zero based index)
+# param currentKit specifies the ID of the kit to use (see class Targets)
# param currentConfigName is the name of the configuration that should be used
# param pressContinueCount defines how often it is expected to press
# the 'Continue' button while debugging
# param expectedBPOrder holds a list of dicts where the dicts contain always
# only 1 key:value pair - the key is the name of the file, the value is
# line number where the debugger should stop
-def doSimpleDebugging(kitCount, currentKit, currentConfigName, pressContinueCount=1,
+def doSimpleDebugging(currentKit, currentConfigName, pressContinueCount=1,
expectedBPOrder=[], enableQml=True):
expectedLabelTexts = ['Stopped\.', 'Stopped at breakpoint \d+ \(\d+\) in thread \d+\.']
if len(expectedBPOrder) == 0:
expectedLabelTexts.append("Running\.")
switchViewTo(ViewConstants.PROJECTS)
- switchToBuildOrRunSettingsFor(kitCount, currentKit, ProjectSettings.RUN)
+ switchToBuildOrRunSettingsFor(currentKit, ProjectSettings.RUN)
ensureChecked(waitForObject("{container=':Qt Creator.scrollArea_QScrollArea' text='Enable QML' "
"type='QCheckBox' unnamed='1' visible='1'}"), enableQml)
switchViewTo(ViewConstants.EDIT)
- if not __startDebugger__(kitCount, currentKit, currentConfigName):
+ if not __startDebugger__(currentKit, currentConfigName):
return False
statusLabel = findObject(":Debugger Toolbar.StatusText_Utils::StatusLabel")
test.log("Continuing debugging %d times..." % pressContinueCount)
@@ -167,20 +164,18 @@ def doSimpleDebugging(kitCount, currentKit, currentConfigName, pressContinueCoun
# if stopping failed - debugger had already stopped
return True
-# param kitCount specifies the number of kits currently defined (must be correct!)
-# param currentKit specifies the target to use (zero based index)
-def isMsvcConfig(kitCount, currentKit):
+# param currentKit specifies the ID of the kit to use (see class Targets)
+def isMsvcConfig(currentKit):
switchViewTo(ViewConstants.PROJECTS)
- switchToBuildOrRunSettingsFor(kitCount, currentKit, ProjectSettings.BUILD)
+ switchToBuildOrRunSettingsFor(currentKit, ProjectSettings.BUILD)
isMsvc = " -spec win32-msvc" in str(waitForObject(":qmakeCallEdit").text)
switchViewTo(ViewConstants.EDIT)
return isMsvc
-# param kitCount specifies the number of kits currently defined (must be correct!)
-# param currentKit specifies the target to use (zero based index)
+# param currentKit specifies the ID of the kit to use (see class Targets)
# param config is the name of the configuration that should be used
-def __startDebugger__(kitCount, currentKit, config):
- isMsvcBuild = isMsvcConfig(kitCount, currentKit)
+def __startDebugger__(currentKit, config):
+ isMsvcBuild = isMsvcConfig(currentKit)
clickButton(waitForObject(":*Qt Creator.Start Debugging_Core::Internal::FancyToolButton"))
handleDebuggerWarnings(config, isMsvcBuild)
try:
diff --git a/tests/system/shared/editor_utils.py b/tests/system/shared/editor_utils.py
index 09b3af6ae71..df3f7d37ea5 100644
--- a/tests/system/shared/editor_utils.py
+++ b/tests/system/shared/editor_utils.py
@@ -106,7 +106,7 @@ def openContextMenuOnTextCursorPosition(editor):
# param direction is one of "Left", "Right", "Up", "Down", but "End" and combinations work as well
# param typeCount defines how often the cursor will be moved in the given direction (while marking)
def markText(editor, direction, typeCount=1):
- for i in range(typeCount):
+ for _ in range(typeCount):
type(editor, "" % direction)
# works for all standard editors
@@ -173,7 +173,7 @@ def verifyHoveringOnEditor(editor, lines, additionalKeyPresses, expectedTypes, e
# param expectedVals a dict holding property value pairs that must match
def __handleTextTips__(textTip, expectedVals, alternativeVals):
props = object.properties(textTip)
- expFail = altFail = False
+ expFail = False
eResult = verifyProperties(props, expectedVals)
for val in eResult.itervalues():
if not val:
@@ -182,7 +182,6 @@ def __handleTextTips__(textTip, expectedVals, alternativeVals):
if expFail and alternativeVals != None:
aResult = verifyProperties(props, alternativeVals)
else:
- altFail = True
aResult = None
if not expFail:
test.passes("TextTip verified")
@@ -360,7 +359,7 @@ def invokeContextMenuItem(editorArea, command1, command2 = None):
def invokeFindUsage(editor, line, typeOperation, n=1):
if not placeCursorToLine(editor, line, True):
return False
- for i in range(n):
+ for _ in range(n):
type(editor, typeOperation)
snooze(1)
invokeContextMenuItem(editor, "Find Usages")
diff --git a/tests/system/shared/project.py b/tests/system/shared/project.py
index 313ace186cc..bd798461022 100644
--- a/tests/system/shared/project.py
+++ b/tests/system/shared/project.py
@@ -50,10 +50,9 @@ def openQmakeProject(projectPath, targets=Targets.desktopTargetClasses(), fromWe
clickButton(waitForObject("{text='Yes' type='QPushButton' unnamed='1' visible='1'}"))
except:
pass
- checkedTargets = __chooseTargets__(targets)
+ __chooseTargets__(targets)
configureButton = waitForObject(":Qt Creator.Configure Project_QPushButton")
clickButton(configureButton)
- return checkedTargets
def openCmakeProject(projectPath, buildDir):
def additionalFunction():
@@ -156,8 +155,12 @@ def __createProjectHandleQtQuickSelection__(minimumQtVersion):
# Selects the Qt versions for a project
# param checks turns tests in the function on if set to True
# param available a list holding the available targets
-def __selectQtVersionDesktop__(checks, available=None):
- checkedTargets = __chooseTargets__(Targets.desktopTargetClasses(), available)
+# withoutQt4 if True Qt4 will get unchecked / not selected while checking the targets
+def __selectQtVersionDesktop__(checks, available=None, withoutQt4=False):
+ wanted = Targets.desktopTargetClasses()
+ if withoutQt4 and Targets.DESKTOP_4_8_7_DEFAULT in wanted:
+ wanted.remove(Targets.DESKTOP_4_8_7_DEFAULT)
+ checkedTargets = __chooseTargets__(wanted, available)
if checks:
for target in checkedTargets:
detailsWidget = waitForObject("{type='Utils::DetailsWidget' unnamed='1' visible='1' "
@@ -171,7 +174,6 @@ def __selectQtVersionDesktop__(checks, available=None):
verifyChecked(cbObject % ("Release", objectMap.realName(detailsWidget)))
clickButton(detailsButton)
clickButton(waitForObject(":Next_QPushButton"))
- return checkedTargets
def __createProjectHandleLastPage__(expectedFiles=[], addToVersionControl="", addToProject=None):
if len(expectedFiles):
@@ -216,7 +218,7 @@ def createProject_Qt_GUI(path, projectName, checks = True, addToVersionControl =
template = "Qt Widgets Application"
available = __createProjectOrFileSelectType__(" Application", template)
__createProjectSetNameAndPath__(path, projectName, checks)
- checkedTargets = __selectQtVersionDesktop__(checks, available)
+ __selectQtVersionDesktop__(checks, available, True)
if checks:
exp_filename = "mainwindow"
@@ -247,7 +249,6 @@ def createProject_Qt_GUI(path, projectName, checks = True, addToVersionControl =
progressBarWait(20000)
if checks:
__verifyFileCreation__(path, expectedFiles)
- return checkedTargets
# Creates a Qt Console project
# param path specifies where to create the project
@@ -257,7 +258,7 @@ def createProject_Qt_Console(path, projectName, checks = True, buildSystem = Non
available = __createProjectOrFileSelectType__(" Application", "Qt Console Application")
__createProjectSetNameAndPath__(path, projectName, checks)
__handleBuildSystem__(buildSystem)
- checkedTargets = __selectQtVersionDesktop__(checks, available)
+ __selectQtVersionDesktop__(checks, available)
expectedFiles = []
if checks:
@@ -273,7 +274,6 @@ def createProject_Qt_Console(path, projectName, checks = True, buildSystem = Non
progressBarWait(10000)
if checks:
__verifyFileCreation__(path, expectedFiles)
- return checkedTargets
def createNewQtQuickApplication(workingDir, projectName = None,
targets=Targets.desktopTargetClasses(), minimumQtVersion="5.6",
@@ -320,7 +320,7 @@ def createNewQmlExtension(workingDir, targets=[Targets.DESKTOP_5_6_1_DEFAULT]):
if workingDir == None:
workingDir = tempDir()
__createProjectSetNameAndPath__(workingDir)
- checkedTargets = __chooseTargets__(targets, available)
+ __chooseTargets__(targets, available)
nextButton = waitForObject(":Next_QPushButton")
clickButton(nextButton)
nameLineEd = waitForObject("{buddy={type='QLabel' text='Object class-name:' unnamed='1' visible='1'} "
@@ -331,18 +331,17 @@ def createNewQmlExtension(workingDir, targets=[Targets.DESKTOP_5_6_1_DEFAULT]):
replaceEditorContent(uriLineEd, "org.qt-project.test.qmlcomponents")
clickButton(nextButton)
__createProjectHandleLastPage__()
- return checkedTargets
def createEmptyQtProject(workingDir=None, projectName=None, targets=Targets.desktopTargetClasses()):
__createProjectOrFileSelectType__(" Other Project", "Empty qmake Project")
if workingDir == None:
workingDir = tempDir()
projectName = __createProjectSetNameAndPath__(workingDir, projectName)
- checkedTargets = __chooseTargets__(targets)
+ __chooseTargets__(targets)
snooze(1)
clickButton(waitForObject(":Next_QPushButton"))
__createProjectHandleLastPage__()
- return projectName, checkedTargets
+ return projectName
def createNewNonQtProject(workingDir=None, projectName=None, target=[Targets.DESKTOP_4_8_7_DEFAULT],
plainC=False, cmake=False, qbs=False):
@@ -382,13 +381,13 @@ def createNewCPPLib(projectDir = None, projectName = None, className = None, fro
if projectDir == None:
projectDir = tempDir()
projectName = __createProjectSetNameAndPath__(projectDir, projectName, False, libType)
- checkedTargets = __chooseTargets__(target, available)
+ __chooseTargets__(target, available)
snooze(1)
clickButton(waitForObject(":Next_QPushButton"))
__createProjectHandleModuleSelection__(modules)
className = __createProjectHandleClassInformation__(className)
__createProjectHandleLastPage__()
- return checkedTargets, projectName, className
+ return projectName, className
def createNewQtPlugin(projectDir=None, projectName=None, className=None, fromWelcome=False,
target=[Targets.DESKTOP_4_8_7_DEFAULT], baseClass="QGenericPlugin"):
@@ -396,12 +395,12 @@ def createNewQtPlugin(projectDir=None, projectName=None, className=None, fromWel
if projectDir == None:
projectDir = tempDir()
projectName = __createProjectSetNameAndPath__(projectDir, projectName, False, LibType.QT_PLUGIN)
- checkedTargets = __chooseTargets__(target, available)
+ __chooseTargets__(target, available)
snooze(1)
clickButton(waitForObject(":Next_QPushButton"))
className = __createProjectHandleClassInformation__(className, baseClass)
__createProjectHandleLastPage__()
- return checkedTargets, projectName, className
+ return projectName, className
# parameter target can be a list of Targets
# parameter availableTargets should be the result of __createProjectOrFileSelectType__()
@@ -541,7 +540,7 @@ def __getSupportedPlatforms__(text, templateName, getAsStrings=False):
supports = text[text.find('Supported Platforms'):].split(":")[1].strip().split(" ")
result = []
if 'Desktop' in supports:
- if (version == None or version < "5.0") and templateName != "Qt Widgets Application":
+ if (version == None or version < "5.0"):
result.append(Targets.DESKTOP_4_8_7_DEFAULT)
if platform.system() in ("Linux", "Darwin"):
result.append(Targets.EMBEDDED_LINUX)
diff --git a/tests/system/shared/project_explorer.py b/tests/system/shared/project_explorer.py
index df67ee25ee2..2ad9a329577 100644
--- a/tests/system/shared/project_explorer.py
+++ b/tests/system/shared/project_explorer.py
@@ -42,132 +42,73 @@ def switchViewTo(view):
text = ""
pattern = ViewConstants.getToolTipForViewTab(view)
if re.match(pattern, unicode(text), re.UNICODE):
- test.passes("ToolTip verified")
+ test.passes("ToolTip verified")
else:
test.warning("ToolTip does not match", "Expected pattern: %s\nGot: %s" % (pattern, text))
mouseClick(waitForObject("{type='Core::Internal::FancyTabBar' unnamed='1' visible='1' "
"window=':Qt Creator_Core::Internal::MainWindow'}"), 20, 20 + 52 * view, 0, Qt.LeftButton)
-# this function is used to make sure that simple building prerequisites are met
-# param targetCount specifies how many build targets had been selected (it's important that this one is correct)
-# param currentTarget specifies which target should be selected for the next build (zero based index)
-# param setReleaseBuild defines whether the current target(s) will be set to a Release or a Debug build
-# param disableShadowBuild defines whether to disable shadow build or leave it unchanged (no matter what is defined)
-# param setForAll defines whether to set Release or Debug and ShadowBuild option for all targets or only for the currentTarget
-def prepareBuildSettings(targetCount, currentTarget, setReleaseBuild=True, disableShadowBuild=True, setForAll=True):
- switchViewTo(ViewConstants.PROJECTS)
- success = True
- for current in range(targetCount):
- if setForAll or current == currentTarget:
- switchToBuildOrRunSettingsFor(targetCount, current, ProjectSettings.BUILD)
- # TODO: Improve selection of Release/Debug version
- if setReleaseBuild:
- chooseThis = "Release"
- else:
- chooseThis = "Debug"
- editBuildCfg = waitForObject("{leftWidget={text='Edit build configuration:' type='QLabel' "
- "unnamed='1' visible='1'} unnamed='1' type='QComboBox' visible='1'}")
- selectFromCombo(editBuildCfg, chooseThis)
- ensureChecked("{name='shadowBuildCheckBox' type='QCheckBox' visible='1'}", not disableShadowBuild)
- # get back to the current target
- if currentTarget < 0 or currentTarget >= targetCount:
- test.warning("Parameter currentTarget is out of range - will be ignored this time!")
- else:
- switchToBuildOrRunSettingsFor(targetCount, currentTarget, ProjectSettings.BUILD)
- switchViewTo(ViewConstants.EDIT)
- return success
+def __kitIsActivated__(kit):
+ return not (str(kit.toolTip).startswith("
Click to activate:
")
+ or str(kit.toolTip).startswith("
Kit is unsuited for project
"))
-# this function switches to the build or the run settings (inside the Projects view)
-# if you haven't already switched to the Projects view this will fail and return False
-# param currentTarget specifies the target for which to switch into the specified settings (zero based index)
-# param targetCount specifies the number of targets currently defined (must be correct!)
-# param projectSettings specifies where to switch to (must be one of ProjectSettings.BUILD or ProjectSettings.RUN)
-def switchToBuildOrRunSettingsFor(targetCount, currentTarget, projectSettings):
- def kitIsActivated(kit):
- return not (str(kit.toolTip).startswith("
Click to activate:
")
- or str(kit.toolTip).startswith("
Kit is unsuited for project
"))
-
- try:
- treeView = waitForObject(":Projects.ProjectNavigationTreeView")
- except LookupError:
- return False
+# returns a list of the IDs (see class Targets) of all kits
+# which are currently configured for the active project
+# Creator must be in projects mode when calling
+def iterateConfiguredKits():
+ treeView = waitForObject(":Projects.ProjectNavigationTreeView")
bAndRIndex = getQModelIndexStr("text='Build & Run'", ":Projects.ProjectNavigationTreeView")
+ kitIndices = dumpIndices(treeView.model(), waitForObject(bAndRIndex))
+ configuredKitNames = map(lambda t: str(t.data(0)),
+ filter(__kitIsActivated__, kitIndices))
+ return map(Targets.getIdForTargetName, configuredKitNames)
- targetIndices = dumpIndices(treeView.model(), waitForObject(bAndRIndex))
- targets = map(lambda t: str(t.data(0)),
- filter(kitIsActivated, targetIndices))
- if not test.compare(targetCount, len(targets), "Check whether all chosen targets are listed."):
- return False
- # we assume the targets are still ordered the same way
- currentTargetIndex = getQModelIndexStr("text='%s'" % targets[currentTarget], bAndRIndex)
- if not test.verify(kitIsActivated(findObject(currentTargetIndex)),
- "Verifying target '%s' is enabled." % targets[currentTarget]):
- return False
- index = waitForObject(currentTargetIndex)
- treeView.scrollTo(index)
- mouseClick(index)
+
+# This function switches to the build or the run settings (inside the Projects view).
+# If you haven't already switched to the Projects view this will raise a LookupError.
+# It will return a boolean value indicating whether the selected Kit was changed by the function.
+# Note that a 'False' return does not indicate any error.
+# param wantedKit specifies the ID of the kit (see class Targets)
+# for which to switch into the specified settings
+# param projectSettings specifies where to switch to (must be one of
+# ProjectSettings.BUILD or ProjectSettings.RUN)
+def switchToBuildOrRunSettingsFor(wantedKit, projectSettings):
+ treeView = waitForObject(":Projects.ProjectNavigationTreeView")
+ bAndRIndex = getQModelIndexStr("text='Build & Run'", ":Projects.ProjectNavigationTreeView")
+ wantedKitName = Targets.getStringForTarget(wantedKit)
+ wantedKitIndexString = getQModelIndexStr("text='%s'" % wantedKitName, bAndRIndex)
+ if not test.verify(__kitIsActivated__(findObject(wantedKitIndexString)),
+ "Verifying target '%s' is enabled." % wantedKitName):
+ raise Exception("Kit '%s' is not activated in the project." % wantedKitName)
+ index = waitForObject(wantedKitIndexString)
+ projectAlreadySelected = index.font.bold
+ if projectAlreadySelected:
+ test.log("Kit '%s' is already selected." % wantedKitName)
+ else:
+ test.log("Selecting kit '%s'..." % wantedKitName)
+ treeView.scrollTo(index)
+ mouseClick(index)
if projectSettings == ProjectSettings.BUILD:
- settingsIndex = getQModelIndexStr("text='Build'", currentTargetIndex)
+ settingsIndex = getQModelIndexStr("text='Build'", wantedKitIndexString)
elif projectSettings == ProjectSettings.RUN:
- settingsIndex = getQModelIndexStr("text='Run'", currentTargetIndex)
+ settingsIndex = getQModelIndexStr("text='Run'", wantedKitIndexString)
else:
- test.fatal("Don't know what you're trying to switch to")
- return False
+ raise Exception("Unexpected projectSettings parameter (%s), needs to be BUILD or RUN."
+ % str(projectSettings))
mouseClick(waitForObject(settingsIndex))
- return True
+ return not projectAlreadySelected
# this function switches "Run in terminal" on or off in a project's run settings
-# param targetCount specifies the number of targets currently defined (must be correct!)
-# param currentTarget specifies the target for which to switch into the specified settings (zero based index)
+# param wantedKit specifies the ID of the kit to edit (see class Targets)
# param runInTerminal specifies if "Run in terminal should be turned on (True) or off (False)
-def setRunInTerminal(targetCount, currentTarget, runInTerminal=True):
+def setRunInTerminal(wantedKit, runInTerminal=True):
switchViewTo(ViewConstants.PROJECTS)
- switchToBuildOrRunSettingsFor(targetCount, currentTarget, ProjectSettings.RUN)
+ switchToBuildOrRunSettingsFor(wantedKit, ProjectSettings.RUN)
ensureChecked("{window=':Qt Creator_Core::Internal::MainWindow' text='Run in terminal'\
type='QCheckBox' unnamed='1' visible='1'}", runInTerminal)
switchViewTo(ViewConstants.EDIT)
-# helper function to get some Qt information for the current (already configured) project
-# param kitCount is the number of kits cofigured for the current project
-# param alreadyOnProjectsBuildSettings if set to True you have to make sure that you're
-# on the Projects view on the Build settings page (otherwise this function will end
-# up in a ScriptError)
-# param afterSwitchTo if you want to leave the Projects view/Build settings when returning
-# from this function you can set this parameter to one of the ViewConstants
-# this function returns an array of 4 elements (all could be None):
-# * the first element holds the Qt version
-# * the second element holds the mkspec
-# * the third element holds the Qt bin path
-# * the fourth element holds the Qt lib path
-# of the current active project
-def getQtInformationForBuildSettings(kitCount, alreadyOnProjectsBuildSettings=False, afterSwitchTo=None):
- if not alreadyOnProjectsBuildSettings:
- switchViewTo(ViewConstants.PROJECTS)
- switchToBuildOrRunSettingsFor(kitCount, 0, ProjectSettings.BUILD)
- clickButton(waitForObject(":Qt Creator_SystemSettings.Details_Utils::DetailsButton"))
- model = waitForObject(":scrollArea.environment_QTreeView").model()
- qtDir = None
- for row in range(model.rowCount()):
- index = model.index(row, 0)
- text = str(model.data(index).toString())
- if text == "QTDIR":
- qtDir = str(model.data(model.index(row, 1)).toString())
- break
- if qtDir == None:
- test.fatal("UI seems to have changed - couldn't get QTDIR for this configuration.")
- return None, None, None, None
-
- qmakeCallLabel = waitForObject("{text?='qmake: qmake*' type='QLabel' unnamed='1' visible='1' "
- "window=':Qt Creator_Core::Internal::MainWindow'}")
- qtVersion = getQtInformationByQMakeCall(qtDir)
- if afterSwitchTo:
- if ViewConstants.FIRST_AVAILABLE <= afterSwitchTo <= ViewConstants.LAST_AVAILABLE:
- switchViewTo(afterSwitchTo)
- else:
- test.warning("Don't know where you trying to switch to (%s)" % afterSwitchTo)
- return qtVersion
-
def __getTargetFromToolTip__(toolTip):
if toolTip == None or not isinstance(toolTip, (str, unicode)):
test.warning("Parameter toolTip must be of type str or unicode and can't be None!")
@@ -192,19 +133,6 @@ def getExecutableAndTargetFromToolTip(toolTip):
return None, target
return exe.group(1).strip(), target
-# this function queries the version number from qmake
-# param qtDir set this to a path that holds a valid Qt
-# the function will return the wanted information or None if something went wrong
-def getQtInformationByQMakeCall(qtDir):
- qmake = os.path.join(qtDir, "bin", "qmake")
- if platform.system() in ('Microsoft', 'Windows'):
- qmake += ".exe"
- if not os.path.exists(qmake):
- test.fatal("Given Qt directory does not exist or does not contain bin/qmake.",
- "Constructed path: '%s'" % qmake)
- return None
- return getOutputFromCmdline([qmake, "-query", "QT_VERSION"]).strip()
-
def invokeContextMenuOnProject(projectName, menuItem):
try:
projItem = waitForObjectItem(":Qt Creator_Utils::NavigationTreeView", projectName, 3000)
@@ -230,7 +158,7 @@ def addAndActivateKit(kit):
kitString = Targets.getStringForTarget(kit)
switchViewTo(ViewConstants.PROJECTS)
try:
- treeView = waitForObject(":Projects.ProjectNavigationTreeView")
+ waitForObject(":Projects.ProjectNavigationTreeView")
wanted = getQModelIndexStr("text='%s'" % kitString, bAndRIndex)
index = findObject(wanted)
if str(index.toolTip).startswith(clickToActivate):
diff --git a/tests/system/shared/utils.py b/tests/system/shared/utils.py
index e89e969a7e0..097772769d0 100644
--- a/tests/system/shared/utils.py
+++ b/tests/system/shared/utils.py
@@ -458,7 +458,7 @@ def iterateQtVersions(keepOptionsOpen=False, alreadyOnOptionsDialog=False,
currResult = additionalFunction(target, version, *argsForAdditionalFunc)
except:
import sys
- t,v,tb = sys.exc_info()
+ t,v,_ = sys.exc_info()
currResult = None
test.fatal("Function to additionally execute on Options Dialog could not be found or "
"an exception occurred while executing it.", "%s(%s)" % (str(t), str(v)))
@@ -521,7 +521,7 @@ def iterateKits(keepOptionsOpen=False, alreadyOnOptionsDialog=False,
currResult = additionalFunction(item, kitName, *argsForAdditionalFunc)
except:
import sys
- t,v,tb = sys.exc_info()
+ t,v,_ = sys.exc_info()
currResult = None
test.fatal("Function to additionally execute on Options Dialog could not be "
"found or an exception occurred while executing it.", "%s(%s)" %
@@ -605,10 +605,8 @@ def progressBarWait(timeout=60000, warn=True):
checkIfObjectExists(":Qt Creator_Core::Internal::ProgressBar", False, timeout)
def readFile(filename):
- f = open(filename, "r")
- content = f.read()
- f.close()
- return content
+ with open(filename, "r") as f:
+ return f.read()
def simpleFileName(navigatorFileName):
# try to find the last part of the given name, assume it's inside a (folder) structure
diff --git a/tests/system/suite_APTW/tst_APTW01/test.py b/tests/system/suite_APTW/tst_APTW01/test.py
index e6fcc937c12..52ae22b787f 100644
--- a/tests/system/suite_APTW/tst_APTW01/test.py
+++ b/tests/system/suite_APTW/tst_APTW01/test.py
@@ -32,8 +32,8 @@ def main():
startCreator(False)
if not startedWithoutPluginError():
return
- checkedTargets = createProject_Qt_GUI(tempDir(), "SampleApp")
+ createProject_Qt_GUI(tempDir(), "SampleApp")
# run project for debug and release and verify results
- runVerify(checkedTargets)
+ runVerify()
#close Qt Creator
invokeMenuItem("File", "Exit")
diff --git a/tests/system/suite_APTW/tst_APTW02/test.py b/tests/system/suite_APTW/tst_APTW02/test.py
index 6294be9edda..dd76b788d3e 100644
--- a/tests/system/suite_APTW/tst_APTW02/test.py
+++ b/tests/system/suite_APTW/tst_APTW02/test.py
@@ -30,8 +30,8 @@ def main():
startApplication("qtcreator" + SettingsPath)
if not startedWithoutPluginError():
return
- checkedTargets, projectName = createNewQtQuickApplication(tempDir(), "SampleApp")
+ createNewQtQuickApplication(tempDir(), "SampleApp")
# run project for debug and release and verify results
- runVerify(checkedTargets)
+ runVerify()
#close Qt Creator
invokeMenuItem("File", "Exit")
diff --git a/tests/system/suite_APTW/tst_APTW03/test.py b/tests/system/suite_APTW/tst_APTW03/test.py
index 905dea914e4..ca1378196af 100644
--- a/tests/system/suite_APTW/tst_APTW03/test.py
+++ b/tests/system/suite_APTW/tst_APTW03/test.py
@@ -56,11 +56,11 @@ def handleInsertVirtualFunctions(expected):
clickButton("{text='OK' type='QPushButton' unnamed='1' visible='1'}")
def checkSimpleCppLib(projectName, static):
- checkedTargets, projectName, className = createNewCPPLib(tempDir(), projectName, "MyClass",
- target=Targets.desktopTargetClasses(),
- isStatic=static)
- for kit, config in iterateBuildConfigs(len(checkedTargets), "Release"):
- verifyBuildConfig(len(checkedTargets), kit, config, False, True)
+ projectName, className = createNewCPPLib(tempDir(), projectName, "MyClass",
+ target=Targets.desktopTargetClasses(),
+ isStatic=static)
+ for kit, config in iterateBuildConfigs("Release"):
+ verifyBuildConfig(kit, config, False, True)
invokeMenuItem('Build', 'Build Project "%s"' % projectName)
waitForCompile(10000)
checkCompile()
@@ -81,12 +81,12 @@ def main():
# Qt Plugin needs Qt4.8 for QGenericPlugin which is tested by default
targets = Targets.desktopTargetClasses()
- checkedTargets, projectName, className = createNewQtPlugin(tempDir(), "SampleApp3", "MyPlugin",
- target=targets)
+ projectName, className = createNewQtPlugin(tempDir(), "SampleApp3", "MyPlugin",
+ target=targets)
virtualFunctionsAdded = False
- for kit, config in iterateBuildConfigs(len(checkedTargets), "Debug"):
- is487Kit = checkedTargets[kit] in (Targets.DESKTOP_4_8_7_DEFAULT, Targets.EMBEDDED_LINUX)
- verifyBuildConfig(len(checkedTargets), kit, config, True, True)
+ for kit, config in iterateBuildConfigs("Debug"):
+ is487Kit = kit in (Targets.DESKTOP_4_8_7_DEFAULT, Targets.EMBEDDED_LINUX)
+ verifyBuildConfig(kit, config, True, True)
if virtualFunctionsAdded and platform.system() in ('Microsoft', 'Windows') and is487Kit:
test.warning("Skipping building of Qt4.8 targets because of QTCREATORBUG-12251.")
continue
@@ -98,7 +98,7 @@ def main():
test.fail("Could not open %s.h - continuing." % className.lower())
continue
editor = getEditorForFileSuffix("%s.h" % className.lower())
- oldContent = str(editor.plainText)
+ str(editor.plainText)
placeCursorToLine(editor, "class %s.*" % className, True)
snooze(4) # avoid timing issue with the parser
invokeContextMenuItem(editor, "Refactor", "Insert Virtual Functions of Base Classes")
diff --git a/tests/system/suite_CCOM/tst_CCOM01/test.py b/tests/system/suite_CCOM/tst_CCOM01/test.py
index 6e75e634f2e..432c916cb86 100755
--- a/tests/system/suite_CCOM/tst_CCOM01/test.py
+++ b/tests/system/suite_CCOM/tst_CCOM01/test.py
@@ -42,13 +42,13 @@ def main():
# open example project, supports only Qt 5
targets = Targets.desktopTargetClasses()
targets.remove(Targets.DESKTOP_4_8_7_DEFAULT)
- checkedTargets = openQmakeProject(examplePath, targets)
+ openQmakeProject(examplePath, targets)
# build and wait until finished - on all build configurations
- availableConfigs = iterateBuildConfigs(len(checkedTargets))
+ availableConfigs = iterateBuildConfigs()
if not availableConfigs:
test.fatal("Haven't found a suitable Qt version - leaving without building.")
for kit, config in availableConfigs:
- selectBuildConfig(len(checkedTargets), kit, config)
+ selectBuildConfig(kit, config)
# try to build project
test.log("Testing build configuration: " + config)
invokeMenuItem("Build", "Build All")
diff --git a/tests/system/suite_CSUP/tst_CSUP04/test.py b/tests/system/suite_CSUP/tst_CSUP04/test.py
index e922281d4b8..d6eaf7086ea 100644
--- a/tests/system/suite_CSUP/tst_CSUP04/test.py
+++ b/tests/system/suite_CSUP/tst_CSUP04/test.py
@@ -70,7 +70,7 @@ def main():
openDocument("openglwindow.Sources.main\\.cpp")
if not placeCursorToLine(editorWidget, 'm_posAttr = m_program->attributeLocation("posAttr");'):
return
- for i in range(13):
+ for _ in range(13):
type(editorWidget, "")
type(editorWidget, "")
# wait until search finished and verify search results
diff --git a/tests/system/suite_CSUP/tst_CSUP05/test.py b/tests/system/suite_CSUP/tst_CSUP05/test.py
index 466b77b5fbb..0824ef48fdc 100644
--- a/tests/system/suite_CSUP/tst_CSUP05/test.py
+++ b/tests/system/suite_CSUP/tst_CSUP05/test.py
@@ -76,7 +76,7 @@ def main():
# select some other word in .cpp file and select "Edit" -> "Find/Replace".
clickButton(waitForObject(":Qt Creator.CloseFind_QToolButton"))
placeCursorToLine(editorWidget, "void Trianglefind::render()")
- for i in range(10):
+ for _ in range(10):
type(editorWidget, "")
markText(editorWidget, "Left", 12)
invokeMenuItem("Edit", "Find/Replace", "Find/Replace")
diff --git a/tests/system/suite_HELP/tst_HELP06/test.py b/tests/system/suite_HELP/tst_HELP06/test.py
index d1d87f0b048..11ef0e7c0e8 100755
--- a/tests/system/suite_HELP/tst_HELP06/test.py
+++ b/tests/system/suite_HELP/tst_HELP06/test.py
@@ -107,7 +107,7 @@ def main():
checkIfObjectExists(manualQModelIndex, verboseOnFail = True),
"Verifying if all folders and bookmarks are present")
mouseClick(waitForObject(":Qt Creator_Bookmarks_TreeView"), 5, 5, 0, Qt.LeftButton)
- for i in range(6):
+ for _ in range(6):
type(waitForObject(":Qt Creator_Bookmarks_TreeView"), "")
type(waitForObject(":Qt Creator_Bookmarks_TreeView"), "")
test.verify(textForQtVersion("Building and Running an Example") in getHelpTitle(),
diff --git a/tests/system/suite_QMLS/tst_QMLS02/test.py b/tests/system/suite_QMLS/tst_QMLS02/test.py
index 687f53a53f5..752bf3a05e5 100644
--- a/tests/system/suite_QMLS/tst_QMLS02/test.py
+++ b/tests/system/suite_QMLS/tst_QMLS02/test.py
@@ -48,7 +48,7 @@ def main():
"Verifying if error is properly reported")
# repair error - go to written line
placeCursorToLine(editorArea, testingCodeLine)
- for i in range(14):
+ for _ in range(14):
type(editorArea, "")
markText(editorArea, "Right")
type(editorArea, "c")
diff --git a/tests/system/suite_QMLS/tst_QMLS03/test.py b/tests/system/suite_QMLS/tst_QMLS03/test.py
index 0287c352f36..16120b81fe4 100644
--- a/tests/system/suite_QMLS/tst_QMLS03/test.py
+++ b/tests/system/suite_QMLS/tst_QMLS03/test.py
@@ -90,7 +90,7 @@ def main():
if not placeCursorToLine(editorArea, "Rectangle {"):
invokeMenuItem("File", "Exit")
return
- for i in range(5):
+ for _ in range(5):
type(editorArea, "")
invokeContextMenuItem(editorArea, "Find Usages")
# check if usage was properly found
@@ -109,7 +109,7 @@ def main():
if not placeCursorToLine(editorArea, "anchors { left: parent.left; top: parent.top; right: parent.right; bottom: parent.verticalCenter }"):
invokeMenuItem("File", "Exit")
return
- for i in range(87):
+ for _ in range(87):
type(editorArea, "")
invokeMenuItem("Tools", "QML/JS", "Find Usages")
# check if usage was properly found
@@ -128,7 +128,7 @@ def main():
if not placeCursorToLine(editorArea, "SequentialAnimation on opacity {"):
invokeMenuItem("File", "Exit")
return
- for i in range(5):
+ for _ in range(5):
type(editorArea, "")
type(editorArea, "")
# check if usage was properly found
diff --git a/tests/system/suite_QMLS/tst_QMLS04/test.py b/tests/system/suite_QMLS/tst_QMLS04/test.py
index 6d4d9624775..b6336700c43 100644
--- a/tests/system/suite_QMLS/tst_QMLS04/test.py
+++ b/tests/system/suite_QMLS/tst_QMLS04/test.py
@@ -37,7 +37,7 @@ def main():
saveAndExit()
return
placeCursorToLine(editorArea, "TextEdit {")
- for i in range(5):
+ for _ in range(5):
type(editorArea, "")
# invoke Refactoring - Move Component into separate file
invokeContextMenuItem(editorArea, "Refactoring", "Move Component into Separate File")
diff --git a/tests/system/suite_QMLS/tst_QMLS05/test.py b/tests/system/suite_QMLS/tst_QMLS05/test.py
index 111bf68f391..9f78d8b8c4f 100644
--- a/tests/system/suite_QMLS/tst_QMLS05/test.py
+++ b/tests/system/suite_QMLS/tst_QMLS05/test.py
@@ -32,13 +32,13 @@ def main():
homeKey = ""
if platform.system() == "Darwin":
homeKey = ""
- for i in range(2):
+ for _ in range(2):
type(editorArea, homeKey)
type(editorArea, "")
type(editorArea, "")
type(editorArea, "")
type(editorArea, "Item { x: 10; y: 20; width: 10 }")
- for i in range(30):
+ for _ in range(30):
type(editorArea, "")
invokeMenuItem("File", "Save All")
# activate menu and apply 'Refactoring - Split initializer'
diff --git a/tests/system/suite_QMLS/tst_QMLS06/test.py b/tests/system/suite_QMLS/tst_QMLS06/test.py
index f4e9a12d92d..9c61188e1f3 100644
--- a/tests/system/suite_QMLS/tst_QMLS06/test.py
+++ b/tests/system/suite_QMLS/tst_QMLS06/test.py
@@ -32,14 +32,14 @@ def main():
homeKey = ""
if platform.system() == "Darwin":
homeKey = ""
- for i in range(2):
+ for _ in range(2):
type(editorArea, homeKey)
type(editorArea, "")
type(editorArea, "")
type(editorArea, "")
testingItemText = "Item { x: 10; y: 20; width: 10 }"
type(editorArea, testingItemText)
- for i in range(30):
+ for _ in range(30):
type(editorArea, "")
invokeMenuItem("File", "Save All")
# invoke Refactoring - Wrap Component in Loader
diff --git a/tests/system/suite_QMLS/tst_QMLS07/test.py b/tests/system/suite_QMLS/tst_QMLS07/test.py
index 631aff02205..054332e5213 100644
--- a/tests/system/suite_QMLS/tst_QMLS07/test.py
+++ b/tests/system/suite_QMLS/tst_QMLS07/test.py
@@ -31,7 +31,7 @@ def main():
return
type(editorArea, "")
type(editorArea, "Color")
- for i in range(3):
+ for _ in range(3):
type(editorArea, "")
invokeMenuItem("File", "Save All")
# invoke Refactoring - Add a message suppression comment.
diff --git a/tests/system/suite_QMLS/tst_QMLS08/test.py b/tests/system/suite_QMLS/tst_QMLS08/test.py
index bb5f9e4c14d..5e0b3aefea9 100644
--- a/tests/system/suite_QMLS/tst_QMLS08/test.py
+++ b/tests/system/suite_QMLS/tst_QMLS08/test.py
@@ -71,7 +71,7 @@ def main():
return
# cancel indentation
type(editorArea, "")
- for i in range(5):
+ for _ in range(5):
type(editorArea, "")
# select unindented block
type(editorArea, "")
diff --git a/tests/system/suite_SCOM/tst_SCOM01/test.py b/tests/system/suite_SCOM/tst_SCOM01/test.py
index 7be524372d2..593ef2e6fd7 100644
--- a/tests/system/suite_SCOM/tst_SCOM01/test.py
+++ b/tests/system/suite_SCOM/tst_SCOM01/test.py
@@ -31,13 +31,13 @@ def main():
if not startedWithoutPluginError():
return
# create qt quick application
- checkedTargets, projectName = createNewQtQuickApplication(tempDir(), "SampleApp")
+ createNewQtQuickApplication(tempDir(), "SampleApp")
# build it - on all build configurations
- availableConfigs = iterateBuildConfigs(len(checkedTargets))
+ availableConfigs = iterateBuildConfigs()
if not availableConfigs:
test.fatal("Haven't found a suitable Qt version - leaving without building.")
for kit, config in availableConfigs:
- selectBuildConfig(len(checkedTargets), kit, config)
+ selectBuildConfig(kit, config)
# try to compile
test.log("Testing build configuration: " + config)
clickButton(waitForObject(":*Qt Creator.Build Project_Core::Internal::FancyToolButton"))
diff --git a/tests/system/suite_SCOM/tst_SCOM04/test.py b/tests/system/suite_SCOM/tst_SCOM04/test.py
index a2590b6740e..1fbf2088f0c 100644
--- a/tests/system/suite_SCOM/tst_SCOM04/test.py
+++ b/tests/system/suite_SCOM/tst_SCOM04/test.py
@@ -39,7 +39,7 @@ def main():
if not startedWithoutPluginError():
return
# create qt quick application
- checkedTargets, projectName = createNewQtQuickApplication(tempDir(), "SampleApp")
+ createNewQtQuickApplication(tempDir(), "SampleApp")
# create syntax error in cpp file
openDocument("SampleApp.Sources.main\\.cpp")
if not appendToLine(waitForObject(":Qt Creator_CppEditor::Internal::CPPEditorWidget"), "QQmlApplicationEngine engine;", "SyntaxError"):
@@ -48,11 +48,11 @@ def main():
# save all
invokeMenuItem("File", "Save All")
# build it - on all build configurations
- availableConfigs = iterateBuildConfigs(len(checkedTargets))
+ availableConfigs = iterateBuildConfigs()
if not availableConfigs:
test.fatal("Haven't found a suitable Qt version - leaving without building.")
for kit, config in availableConfigs:
- selectBuildConfig(len(checkedTargets), kit, config)
+ selectBuildConfig(kit, config)
# try to compile
test.log("Testing build configuration: " + config)
clickButton(waitForObject(":*Qt Creator.Build Project_Core::Internal::FancyToolButton"))
diff --git a/tests/system/suite_debugger/tst_build_new_project/test.py b/tests/system/suite_debugger/tst_build_new_project/test.py
index 93cfaa8d035..f977435328e 100644
--- a/tests/system/suite_debugger/tst_build_new_project/test.py
+++ b/tests/system/suite_debugger/tst_build_new_project/test.py
@@ -31,12 +31,12 @@ def main():
startApplication("qtcreator" + SettingsPath)
if not startedWithoutPluginError():
return
- checkedTargets = createProject_Qt_Console(tempDir(), project)
- availableConfigs = iterateBuildConfigs(len(checkedTargets))
+ createProject_Qt_Console(tempDir(), project)
+ availableConfigs = iterateBuildConfigs()
if not availableConfigs:
test.fatal("Haven't found a suitable Qt version - leaving without building.")
for kit, config in availableConfigs:
- selectBuildConfig(len(checkedTargets), kit, config)
+ selectBuildConfig(kit, config)
test.log("Testing build configuration: " + config)
if runAndCloseApp() == None:
checkCompile()
diff --git a/tests/system/suite_debugger/tst_cli_output_console/test.py b/tests/system/suite_debugger/tst_cli_output_console/test.py
index 1add5fe028c..298fdb8dfc5 100644
--- a/tests/system/suite_debugger/tst_cli_output_console/test.py
+++ b/tests/system/suite_debugger/tst_cli_output_console/test.py
@@ -34,7 +34,7 @@ def main():
startApplication("qtcreator" + SettingsPath)
if not startedWithoutPluginError():
return
- checkedTargets = createProject_Qt_Console(tempDir(), project)
+ createProject_Qt_Console(tempDir(), project)
mainEditor = waitForObject(":Qt Creator_CppEditor::Internal::CPPEditorWidget")
replaceEditorContent(mainEditor, "")
@@ -52,15 +52,15 @@ def main():
test.verify("CONFIG += c++11 console" in str(proEditor.plainText),
"Verifying that program is configured with console")
- availableConfigs = iterateBuildConfigs(len(checkedTargets))
+ availableConfigs = iterateBuildConfigs()
if not availableConfigs:
test.fatal("Haven't found a suitable Qt version - leaving without building.")
for kit, config in availableConfigs:
- selectBuildConfig(len(checkedTargets), kit, config)
+ selectBuildConfig(kit, config)
test.log("Testing build configuration: " + config)
test.log("Running application")
- setRunInTerminal(len(checkedTargets), kit, False)
+ setRunInTerminal(kit, False)
clickButton(waitForObject(":*Qt Creator.Run_Core::Internal::FancyToolButton"))
outputButton = waitForObject(":Qt Creator_AppOutput_Core::Internal::OutputPaneToggleButton")
waitFor("outputButton.checked", 20000) # Not ensureChecked(), avoid race condition
@@ -71,7 +71,7 @@ def main():
appOutput = str(waitForObject(":Qt Creator_Core::OutputWindow").plainText)
verifyOutput(appOutput, outputStdOut, "std::cout", "Application Output")
verifyOutput(appOutput, outputStdErr, "std::cerr", "Application Output")
- if (checkedTargets[kit] == Targets.DESKTOP_5_4_1_GCC
+ if (kit == Targets.DESKTOP_5_4_1_GCC
and platform.system() in ('Windows', 'Microsoft')):
test.log("Skipping qDebug() from %s (unstable, QTCREATORBUG-15067)"
% Targets.getStringForTarget(Targets.DESKTOP_5_4_1_GCC))
@@ -84,7 +84,7 @@ def main():
"Did the application run at all?")
test.log("Debugging application")
- isMsvc = isMsvcConfig(len(checkedTargets), kit)
+ isMsvc = isMsvcConfig(kit)
invokeMenuItem("Debug", "Start Debugging", "Start Debugging")
handleDebuggerWarnings(config, isMsvc)
ensureChecked(":Qt Creator_AppOutput_Core::Internal::OutputPaneToggleButton")
diff --git a/tests/system/suite_debugger/tst_debug_empty_main/test.py b/tests/system/suite_debugger/tst_debug_empty_main/test.py
index be7f15fc2f8..d49f77e4542 100644
--- a/tests/system/suite_debugger/tst_debug_empty_main/test.py
+++ b/tests/system/suite_debugger/tst_debug_empty_main/test.py
@@ -50,12 +50,12 @@ def main():
# empty Qt
workingDir = tempDir()
- projectName, checkedTargets = createEmptyQtProject(workingDir, "EmptyQtProj", targets)
+ projectName = createEmptyQtProject(workingDir, "EmptyQtProj", targets)
addFileToProject(os.path.join(workingDir, projectName), " C++", "C++ Source File", "main.cpp")
editor = waitForObject(":Qt Creator_CppEditor::Internal::CPPEditorWidget")
typeLines(editor, ["int main() {"])
invokeMenuItem("File", "Save All")
- performDebugging(projectName, checkedTargets)
+ performDebugging(projectName)
invokeMenuItem("File", "Close All Projects and Editors")
# C/C++
for name,isC in {"C":True, "CPP":False}.items():
@@ -74,8 +74,8 @@ def main():
typeLines(editor, ["int main() {"])
invokeMenuItem("File", "Save All")
progressBarWait(15000)
- setRunInTerminal(1, 0, False)
- performDebugging(projectName, [singleTarget])
+ setRunInTerminal(singleTarget, False)
+ performDebugging(projectName)
invokeMenuItem("File", "Close All Projects and Editors")
invokeMenuItem("File", "Exit")
@@ -89,14 +89,14 @@ def __handleAppOutputWaitForDebuggerFinish__():
invokeMenuItem("Debug", "Abort Debugging")
waitFor("str(appOutput.plainText).endswith('Debugging has finished')", 5000)
-def performDebugging(projectName, checkedTargets):
- for kit, config in iterateBuildConfigs(len(checkedTargets), "Debug"):
+def performDebugging(projectName):
+ for kit, config in iterateBuildConfigs("Debug"):
test.log("Selecting '%s' as build config" % config)
- verifyBuildConfig(len(checkedTargets), kit, config, True, True)
+ verifyBuildConfig(kit, config, True, True)
waitForObject(":*Qt Creator.Build Project_Core::Internal::FancyToolButton")
invokeMenuItem("Build", "Rebuild All")
waitForCompile()
- isMsvc = isMsvcConfig(len(checkedTargets), kit)
+ isMsvc = isMsvcConfig(kit)
clickButton(waitForObject(":*Qt Creator.Start Debugging_Core::Internal::FancyToolButton"))
handleDebuggerWarnings(config, isMsvc)
waitForObject(":Qt Creator.DebugModeWidget_QSplitter")
diff --git a/tests/system/suite_debugger/tst_qml_js_console/test.py b/tests/system/suite_debugger/tst_qml_js_console/test.py
index 7187fc9ceaa..1d193541bcd 100644
--- a/tests/system/suite_debugger/tst_qml_js_console/test.py
+++ b/tests/system/suite_debugger/tst_qml_js_console/test.py
@@ -68,7 +68,6 @@ def debuggerHasStopped():
def getQmlJSConsoleOutput():
try:
- result = []
consoleView = waitForObject(":DebugModeWidget_Debugger::Internal::ConsoleView")
model = consoleView.model()
# old input, output, new input > 2
@@ -129,13 +128,13 @@ def main():
if test.verify(waitFor('fancyDebugButton.enabled', 5000), "Start Debugging is enabled."):
# make sure QML Debugging is enabled
switchViewTo(ViewConstants.PROJECTS)
- switchToBuildOrRunSettingsFor(1, 0, ProjectSettings.RUN)
+ switchToBuildOrRunSettingsFor(Targets.getDefaultKit(), ProjectSettings.RUN)
ensureChecked("{container=':Qt Creator.scrollArea_QScrollArea' text='Enable QML' "
"type='QCheckBox' unnamed='1' visible='1'}")
switchViewTo(ViewConstants.EDIT)
# start debugging
clickButton(fancyDebugButton)
- locAndExprTV = waitForObject(":Locals and Expressions_Debugger::Internal::WatchTreeView")
+ waitForObject(":Locals and Expressions_Debugger::Internal::WatchTreeView")
rootIndex = getQModelIndexStr("text='Rectangle'",
":Locals and Expressions_Debugger::Internal::WatchTreeView")
# make sure the items inside the root item are visible
diff --git a/tests/system/suite_debugger/tst_qml_locals/test.py b/tests/system/suite_debugger/tst_qml_locals/test.py
index d78e02d48f7..3429d5725f9 100644
--- a/tests/system/suite_debugger/tst_qml_locals/test.py
+++ b/tests/system/suite_debugger/tst_qml_locals/test.py
@@ -56,7 +56,7 @@ def main():
earlyExit("Something went wrong opening Qml project - probably missing Qt5.")
return
switchViewTo(ViewConstants.PROJECTS)
- switchToBuildOrRunSettingsFor(1, 0, ProjectSettings.RUN)
+ switchToBuildOrRunSettingsFor(Targets.getDefaultKit(), ProjectSettings.RUN)
ensureChecked("{container=':Qt Creator.scrollArea_QScrollArea' text='Enable QML' "
"type='QCheckBox' unnamed='1' visible='1'}")
switchViewTo(ViewConstants.EDIT)
@@ -117,7 +117,7 @@ def fetchItems(index, valIndex, treeView):
tree.setName(name)
tree.setValue(value)
for row in range(model.rowCount(index)):
- tree.addChild(fetchItems(model.index(row, 0, index), model.index(row, 1, index), treeView))
+ tree.addChild(fetchItems(model.index(row, 0, index), model.index(row, 1, index), treeView))
return tree
def checkForEmptyRows(items, isRootCheck=True):
diff --git a/tests/system/suite_debugger/tst_simple_analyze/test.py b/tests/system/suite_debugger/tst_simple_analyze/test.py
index 8b73e7aa722..b752a4b586f 100644
--- a/tests/system/suite_debugger/tst_simple_analyze/test.py
+++ b/tests/system/suite_debugger/tst_simple_analyze/test.py
@@ -31,9 +31,7 @@ def main():
return
# using a temporary directory won't mess up a potentially existing
workingDir = tempDir()
- # we need a Qt >= 5.3 - we use checkedTargets, so we should get only valid targets
- analyzerTargets = Targets.desktopTargetClasses()
- checkedTargets, projectName = createNewQtQuickApplication(workingDir, targets=analyzerTargets)
+ projectName = createNewQtQuickApplication(workingDir)[1]
editor = waitForObject(":Qt Creator_QmlJSEditor::QmlJSTextEditorWidget")
if placeCursorToLine(editor, "}"):
type(editor, '')
@@ -52,14 +50,14 @@ def main():
'var j = i * i;',
'console.log(j);'])
invokeMenuItem("File", "Save All")
- availableConfigs = iterateBuildConfigs(len(checkedTargets), "Debug")
+ availableConfigs = iterateBuildConfigs("Debug")
if not availableConfigs:
test.fatal("Haven't found a suitable Qt version (need Qt 5.3+) - leaving without debugging.")
else:
- performTest(workingDir, projectName, len(checkedTargets), availableConfigs)
+ performTest(workingDir, projectName, availableConfigs)
invokeMenuItem("File", "Exit")
-def performTest(workingDir, projectName, targetCount, availableConfigs):
+def performTest(workingDir, projectName, availableConfigs):
def __elapsedTime__(elapsedTimeLabelText):
return float(re.search("Elapsed:\s+(-?\d+\.\d+) s", elapsedTimeLabelText).group(1))
@@ -67,7 +65,8 @@ def performTest(workingDir, projectName, targetCount, availableConfigs):
# switching from MSVC to MinGW build will fail on the clean step of 'Rebuild All' because
# of differences between MSVC's and MinGW's Makefile (so clean before switching kits)
invokeMenuItem('Build', 'Clean Project "%s"' % projectName)
- qtVersion = verifyBuildConfig(targetCount, kit, config, True, True, True)
+ verifyBuildConfig(kit, config, True, True, True)
+ qtVersion = "5.6.1" if kit == Targets.DESKTOP_5_6_1_DEFAULT else "5.10.1"
test.log("Selected kit using Qt %s" % qtVersion)
# explicitly build before start debugging for adding the executable as allowed program to WinFW
invokeMenuItem("Build", "Rebuild All")
diff --git a/tests/system/suite_debugger/tst_simple_debug/test.py b/tests/system/suite_debugger/tst_simple_debug/test.py
index c726d6468bb..9067361c28f 100644
--- a/tests/system/suite_debugger/tst_simple_debug/test.py
+++ b/tests/system/suite_debugger/tst_simple_debug/test.py
@@ -29,11 +29,9 @@ def main():
startApplication("qtcreator" + SettingsPath)
if not startedWithoutPluginError():
return
- # Requires Qt 4.8
- targets = Targets.desktopTargetClasses()
# using a temporary directory won't mess up a potentially existing
workingDir = tempDir()
- checkedTargets, projectName = createNewQtQuickApplication(workingDir, targets=targets)
+ projectName = createNewQtQuickApplication(workingDir)[1]
editor = waitForObject(":Qt Creator_QmlJSEditor::QmlJSTextEditorWidget")
if placeCursorToLine(editor, "}"):
type(editor, '')
@@ -54,13 +52,13 @@ def main():
if result:
expectedBreakpointsOrder = [{os.path.join(workingDir, projectName, "main.cpp"):10},
{os.path.join(workingDir, projectName, "main.qml"):13}]
- availableConfigs = iterateBuildConfigs(len(checkedTargets), "Debug")
+ availableConfigs = iterateBuildConfigs("Debug")
progressBarWait()
if not availableConfigs:
test.fatal("Haven't found a suitable Qt version - leaving without debugging.")
for kit, config in availableConfigs:
test.log("Selecting '%s' as build config" % config)
- verifyBuildConfig(len(checkedTargets), kit, config, True, True, True)
+ verifyBuildConfig(kit, config, True, True, True)
# explicitly build before start debugging for adding the executable as allowed program to WinFW
invokeMenuItem("Build", "Rebuild All")
waitForCompile(300000)
@@ -69,12 +67,12 @@ def main():
continue
if platform.system() in ('Microsoft' 'Windows'):
switchViewTo(ViewConstants.PROJECTS)
- switchToBuildOrRunSettingsFor(len(checkedTargets), kit, ProjectSettings.BUILD)
+ switchToBuildOrRunSettingsFor(kit, ProjectSettings.BUILD)
buildDir = os.path.join(str(waitForObject(":Qt Creator_Utils::BuildDirectoryLineEdit").text),
"debug")
switchViewTo(ViewConstants.EDIT)
allowAppThroughWinFW(buildDir, projectName, None)
- if not doSimpleDebugging(len(checkedTargets), kit, config,
+ if not doSimpleDebugging(kit, config,
len(expectedBreakpointsOrder), expectedBreakpointsOrder):
try:
stopB = findObject(':Qt Creator.Stop_QToolButton')
diff --git a/tests/system/suite_editors/tst_qml_indent/test.py b/tests/system/suite_editors/tst_qml_indent/test.py
index f05da16317e..2be24a94ce9 100644
--- a/tests/system/suite_editors/tst_qml_indent/test.py
+++ b/tests/system/suite_editors/tst_qml_indent/test.py
@@ -44,7 +44,6 @@ def prepareQmlFile():
editor = waitForObject(":Qt Creator_QmlJSEditor::QmlJSTextEditorWidget")
isDarwin = platform.system() == 'Darwin'
for i in range(3):
- content = "%s" % editor.plainText
if not placeCursorToLine(editor, 'title: qsTr("Hello World")'):
test.fatal("Couldn't find line(s) I'm looking for - QML file seems to "
"have changed!\nLeaving test...")
diff --git a/tests/system/suite_editors/tst_rename_macros/test.py b/tests/system/suite_editors/tst_rename_macros/test.py
index 581247bfdfb..5a4177daad4 100644
--- a/tests/system/suite_editors/tst_rename_macros/test.py
+++ b/tests/system/suite_editors/tst_rename_macros/test.py
@@ -118,7 +118,7 @@ def testRenameMacroAfterSourceMoving():
return True
def performMacroRenaming(newMacroName):
- for i in range(10):
+ for _ in range(10):
type(cppEditorStr, "")
invokeContextMenuItem(waitForObject(cppEditorStr), "Refactor",
"Rename Symbol Under Cursor")
diff --git a/tests/system/suite_general/tst_build_speedcrunch/test.py b/tests/system/suite_general/tst_build_speedcrunch/test.py
index 686943b422a..1d7eda90884 100644
--- a/tests/system/suite_general/tst_build_speedcrunch/test.py
+++ b/tests/system/suite_general/tst_build_speedcrunch/test.py
@@ -24,7 +24,6 @@
############################################################################
source("../../shared/qtcreator.py")
-import re
SpeedCrunchPath = ""
@@ -42,16 +41,16 @@ def main():
startApplication("qtcreator" + SettingsPath)
if not startedWithoutPluginError():
return
- checkedTargets = openQmakeProject(SpeedCrunchPath, [Targets.DESKTOP_4_8_7_DEFAULT])
+ openQmakeProject(SpeedCrunchPath, [Targets.DESKTOP_4_8_7_DEFAULT])
progressBarWait(30000)
fancyToolButton = waitForObject(":*Qt Creator_Core::Internal::FancyToolButton")
- availableConfigs = iterateBuildConfigs(len(checkedTargets), "Release")
+ availableConfigs = iterateBuildConfigs("Release")
if not availableConfigs:
test.fatal("Haven't found a suitable Qt version (need Release build) - leaving without building.")
for kit, config in availableConfigs:
- selectBuildConfig(len(checkedTargets), kit, config)
+ selectBuildConfig(kit, config)
buildConfig = buildConfigFromFancyToolButton(fancyToolButton)
if buildConfig != config:
test.fatal("Build configuration %s is selected instead of %s" % (buildConfig, config))
diff --git a/tests/system/suite_general/tst_create_proj_wizard/test.py b/tests/system/suite_general/tst_create_proj_wizard/test.py
index adfe3d60442..34878b9566a 100644
--- a/tests/system/suite_general/tst_create_proj_wizard/test.py
+++ b/tests/system/suite_general/tst_create_proj_wizard/test.py
@@ -45,7 +45,6 @@ def main():
projects = catModel.index(0, 0)
test.compare("Projects", str(projects.data()))
comboBox = findObject(":New.comboBox_QComboBox")
- targets = zip(*kits.values())[0]
test.verify(comboBox.enabled, "Verifying whether combobox is enabled.")
test.compare(comboBox.currentText, "All Templates")
try:
diff --git a/tests/system/suite_general/tst_default_settings/test.py b/tests/system/suite_general/tst_default_settings/test.py
index 72ff89c7e38..bb75bf9b326 100644
--- a/tests/system/suite_general/tst_default_settings/test.py
+++ b/tests/system/suite_general/tst_default_settings/test.py
@@ -26,8 +26,6 @@
source("../../shared/qtcreator.py")
import re
-import tempfile
-import __builtin__
currentSelectedTreeItem = None
warningOrError = re.compile('
((Error|Warning).*?)
')
diff --git a/tests/system/suite_general/tst_opencreator_qbs/test.py b/tests/system/suite_general/tst_opencreator_qbs/test.py
index a20426d3599..3b7a86a42b4 100644
--- a/tests/system/suite_general/tst_opencreator_qbs/test.py
+++ b/tests/system/suite_general/tst_opencreator_qbs/test.py
@@ -46,4 +46,9 @@ def main():
else:
test.warning("Parsing project timed out")
compareProjectTree(rootNodeTemplate % "Qt Creator", "projecttree_creator.tsv")
+ buildIssuesTexts = map(lambda i: str(i[3]), getBuildIssues())
+ deprecationWarnings = filter(lambda s: "deprecated" in s, buildIssuesTexts)
+ if deprecationWarnings:
+ test.warning("Creator claims that the .qbs file uses deprecated features.",
+ "\n".join(set(deprecationWarnings)))
invokeMenuItem("File", "Exit")
diff --git a/tests/system/suite_qtquick/tst_qml_outline/test.py b/tests/system/suite_qtquick/tst_qml_outline/test.py
index e14c5eb5394..7b806afc28a 100644
--- a/tests/system/suite_qtquick/tst_qml_outline/test.py
+++ b/tests/system/suite_qtquick/tst_qml_outline/test.py
@@ -139,9 +139,9 @@ def verifyOutline(outlinePseudoTree, datasetFileName):
"Found %d elements, but expected %d" % (len(outlinePseudoTree), len(expected)))
return
for counter, (expectedItem, foundItem) in enumerate(zip(expected, outlinePseudoTree)):
- if expectedItem != foundItem:
- test.fail("Mismatch in element number %d for '%s'" % (counter + 1, fileName),
+ if expectedItem != foundItem:
+ test.fail("Mismatch in element number %d for '%s'" % (counter + 1, fileName),
"%s != %s" % (str(expectedItem), str(foundItem)))
- return
+ return
test.passes("All nodes (%d) inside outline match expected nodes for '%s'."
% (len(expected), fileName))
diff --git a/tests/system/suite_qtquick/tst_qtquick_creation/test.py b/tests/system/suite_qtquick/tst_qtquick_creation/test.py
index 0289d277834..3eda2c6e0ee 100644
--- a/tests/system/suite_qtquick/tst_qtquick_creation/test.py
+++ b/tests/system/suite_qtquick/tst_qtquick_creation/test.py
@@ -34,12 +34,11 @@ def main():
for qtVersion, controls in available:
targ = [Targets.DESKTOP_5_6_1_DEFAULT]
- quick = "2.6"
# using a temporary directory won't mess up a potentially existing
workingDir = tempDir()
- checkedTargets, projectName = createNewQtQuickApplication(workingDir, targets=targ,
- minimumQtVersion=qtVersion,
- withControls = controls)
+ checkedTargets = createNewQtQuickApplication(workingDir, targets=targ,
+ minimumQtVersion=qtVersion,
+ withControls = controls)[0]
if len(checkedTargets) == 0:
if controls and qtVersion < "5.7":
test.xfail("Could not check wanted target.", "Quick Controls 2 wizard needs Qt5.7+")
diff --git a/tests/system/suite_tools/tst_codepasting/test.py b/tests/system/suite_tools/tst_codepasting/test.py
index 998b36bf84f..b91ce2e5585 100644
--- a/tests/system/suite_tools/tst_codepasting/test.py
+++ b/tests/system/suite_tools/tst_codepasting/test.py
@@ -25,10 +25,14 @@
source("../../shared/qtcreator.py")
import random
+from datetime import date
+
+def __platformToBeRunToday__():
+ return (('Linux'), ('Darwin'), ('Microsoft', 'Windows'))[date.today().day % 3]
# Be careful with Pastebin.Com, there are only 10 pastes per 24h
# for all machines using the same IP-address like you.
-skipPastingToPastebinCom = True
+skipPastingToPastebinCom = platform.system() not in __platformToBeRunToday__()
NAME_KDE = "Paste.KDE.Org"
NAME_PBCA = "Pastebin.Ca"
@@ -43,15 +47,20 @@ def invalidPasteId(protocol):
return -1
def closeHTTPStatusAndPasterDialog(protocol, pasterDialog):
- mBoxStr = "{type='QMessageBox' unnamed='1' visible='1' windowTitle?='%s *'}" % protocol
- mBox = waitForObject(mBoxStr, 1000)
- text = str(mBox.text)
- # close message box and paster window
- clickButton("{type='QPushButton' text='Cancel' visible='1' window=%s}" % mBoxStr)
- clickButton("{type='QPushButton' text='Cancel' visible='1' window='%s'}" % pasterDialog)
- if 'Service Unavailable' in text:
- test.warning(text)
- return True
+ try:
+ mBoxStr = "{type='QMessageBox' unnamed='1' visible='1' windowTitle?='%s *'}" % protocol
+ mBox = waitForObject(mBoxStr, 1000)
+ text = str(mBox.text)
+ # close message box and paster window
+ clickButton("{type='QPushButton' text='Cancel' visible='1' window=%s}" % mBoxStr)
+ clickButton("{type='QPushButton' text='Cancel' visible='1' window='%s'}" % pasterDialog)
+ if 'Service Unavailable' in text:
+ test.warning(text)
+ return True
+ except:
+ t,v = sys.exc_info()[:2]
+ test.warning("An exception occurred in closeHTTPStatusAndPasterDialog(): %s(%s)"
+ % (str(t), str(v)))
test.log("Closed dialog without expected error.", text)
return False
@@ -90,11 +99,9 @@ def pasteFile(sourceFile, protocol):
output = str(outputWindow.plainText).splitlines()[-1]
except:
output = ""
- try:
- if closeHTTPStatusAndPasterDialog(protocol, ':Send to Codepaster_CodePaster::PasteView'):
- raise Exception(serverProblems)
- except:
- pass
+ if closeHTTPStatusAndPasterDialog(protocol, ':Send to Codepaster_CodePaster::PasteView'):
+ resetFiles()
+ raise Exception(serverProblems)
stdErrOut = aut.readStderr()
match = re.search("^%s protocol error: (.*)$" % protocol, stdErrOut, re.MULTILINE)
if match:
@@ -123,11 +130,8 @@ def fetchSnippet(protocol, description, pasteId, skippedPasting):
try:
pasteModel = waitForObject(":PasteSelectDialog.listWidget_QListWidget").model()
except:
- try:
- if closeHTTPStatusAndPasterDialog(protocol, ':PasteSelectDialog_CodePaster::PasteSelectDialog'):
- return -1
- except:
- pass
+ closeHTTPStatusAndPasterDialog(protocol, ':PasteSelectDialog_CodePaster::PasteSelectDialog')
+ return -1
waitFor("pasteModel.rowCount() > 1", 20000)
if (not skippedPasting and not protocol == NAME_PBCA
and not any(map(lambda str:pasteId in str, dumpItems(pasteModel)))):
@@ -177,44 +181,53 @@ def main():
openGeneralMessages()
clickButton(waitForObject(":*Qt Creator.Clear_QToolButton"))
for protocol in protocolsToTest:
- skippedPasting = True
- description = "Paste from 2017-05-11"
- if protocol == NAME_KDE:
- pasteId = "pysjk6n2i"
- pastedText = readFile(os.path.join(os.getcwd(), "testdata", "main-prepasted.cpp"))
- elif skipPastingToPastebinCom and protocol == NAME_PBCOM:
- pasteId = "8XHP0ZgH"
- pastedText = readFile(os.path.join(os.getcwd(), "testdata", "main-prepasted.cpp"))
- else:
- skippedPasting = False
- try:
- pasteId, description, pastedText = pasteFile(sourceFile, protocol)
- except Exception as e:
- if e.message == serverProblems:
- test.warning("Ignoring server side issues")
- continue
- else: # if it was not our own exception re-raise
- raise e
- if not pasteId:
- test.fatal("Could not get id of paste to %s" % protocol)
+ with TestSection(protocol):
+ skippedPasting = True
+ description = "Paste from 2017-05-11"
+ if protocol == NAME_KDE:
+ pasteId = "pysjk6n2i"
+ pastedText = readFile(os.path.join(os.getcwd(), "testdata", "main-prepasted.cpp"))
+ elif skipPastingToPastebinCom and protocol == NAME_PBCOM:
+ pasteId = "8XHP0ZgH"
+ pastedText = readFile(os.path.join(os.getcwd(), "testdata", "main-prepasted.cpp"))
+ else:
+ skippedPasting = False
+ try:
+ pasteId, description, pastedText = pasteFile(sourceFile, protocol)
+ except Exception as e:
+ if e.message == serverProblems:
+ test.warning("Ignoring server side issues")
+ continue
+ else: # if it was not our own exception re-raise
+ raise e
+ if not pasteId:
+ message = "Could not get id of paste to %s" % protocol
+ if protocol == NAME_PBCOM:
+ test.log("%s, using prepasted file instead" % message)
+ skippedPasting = True
+ pasteId = "8XHP0ZgH"
+ pastedText = readFile(os.path.join(os.getcwd(),
+ "testdata", "main-prepasted.cpp"))
+ else:
+ test.fatal(message)
+ continue
+ pasteId = fetchSnippet(protocol, description, pasteId, skippedPasting)
+ if pasteId == -1:
continue
- pasteId = fetchSnippet(protocol, description, pasteId, skippedPasting)
- if pasteId == -1:
- continue
- filenameCombo = waitForObject(":Qt Creator_FilenameQComboBox")
- waitFor("not filenameCombo.currentText.isEmpty()", 20000)
- try:
- editor = waitForObject(":Qt Creator_CppEditor::Internal::CPPEditorWidget")
- except:
- outputWindow = waitForObject(":Qt Creator_Core::OutputWindow")
- test.fail("Could not find editor with snippet", str(outputWindow.plainText))
- clickButton(waitForObject(":*Qt Creator.Clear_QToolButton"))
- continue
- test.compare(filenameCombo.currentText, "%s: %s" % (protocol, pasteId), "Verify title of editor")
- if protocol in (NAME_KDE, NAME_PBCOM) and pastedText.endswith("\n"):
- pastedText = pastedText[:-1]
- test.compare(editor.plainText, pastedText, "Verify that pasted and fetched texts are the same")
- invokeMenuItem("File", "Close All")
+ filenameCombo = waitForObject(":Qt Creator_FilenameQComboBox")
+ waitFor("not filenameCombo.currentText.isEmpty()", 20000)
+ try:
+ editor = waitForObject(":Qt Creator_CppEditor::Internal::CPPEditorWidget")
+ except:
+ outputWindow = waitForObject(":Qt Creator_Core::OutputWindow")
+ test.fail("Could not find editor with snippet", str(outputWindow.plainText))
+ clickButton(waitForObject(":*Qt Creator.Clear_QToolButton"))
+ continue
+ test.compare(filenameCombo.currentText, "%s: %s" % (protocol, pasteId), "Verify title of editor")
+ if protocol in (NAME_KDE, NAME_PBCOM) and pastedText.endswith("\n"):
+ pastedText = pastedText[:-1]
+ test.compare(editor.plainText, pastedText, "Verify that pasted and fetched texts are the same")
+ invokeMenuItem("File", "Close All")
invokeMenuItem("File", "Open File or Project...")
selectFromFileDialog(sourceFile)
editor = waitForObject(":Qt Creator_CppEditor::Internal::CPPEditorWidget")
diff --git a/tests/system/suite_tools/tst_git_local/test.py b/tests/system/suite_tools/tst_git_local/test.py
index 0206885fa28..4998c393e03 100644
--- a/tests/system/suite_tools/tst_git_local/test.py
+++ b/tests/system/suite_tools/tst_git_local/test.py
@@ -92,7 +92,7 @@ def __clickCommit__(count):
test.fail("Could not find the %d. commit - leaving test" % count)
return False
placeCursorToLine(gitEditor, line)
- for i in range(30):
+ for _ in range(30):
type(gitEditor, "")
# get the current cursor rectangle which should be positioned on the commit ID
rect = gitEditor.cursorRect()
@@ -234,7 +234,7 @@ def deleteProject():
if os.path.exists(path):
try:
# Make files in .git writable to remove them
- for root, dirs, files in os.walk(path):
+ for root, _, files in os.walk(path):
for name in files:
os.chmod(os.path.join(root, name), stat.S_IWUSR)
shutil.rmtree(path)