diff --git a/dist/changes-3.0.1 b/dist/changes-3.0.1
new file mode 100644
index 0000000000000000000000000000000000000000..1c0227b519cae1f3cb692bca44b7ad2e826250ee
--- /dev/null
+++ b/dist/changes-3.0.1
@@ -0,0 +1,70 @@
+Qt Creator version 3.0.1 is a bugfix release.
+
+The most important changes are listed in this document. For a complete
+list of changes, see the Git log for the Qt Creator sources that
+you can check out from the public Git repository. For example:
+
+git clone git://gitorious.org/qt-creator/qt-creator.git
+git log --cherry-pick --pretty=oneline v3.0.0..v3.0.1
+
+Compilers
+   * MSVC
+      * Added detection of native 64 bit arm toolchain
+      * Fixed issue with duplicate entries
+
+QMake Projects
+   * Fixed issue with duplicate entries when configuring projects
+
+Debugging
+   * GDB and LLDB
+      * Added pretty printer for QTimeZone
+      * Fixed pretty printer for QSharedDataPointer
+      * Fixed display of multiple inheritance from std::list
+        (QTCREATORBUG-11023)
+   * GDB
+      * Fixed inserting breakpoints while application is running
+        (QTCREATORBUG-11084)
+      * Fixed display of std::array<some_struct>
+   * LLDB
+      * Fixed display of bases in case of multiple inheritance
+        (QTCREATORBUG-11109)
+   * CDB
+      * Fixed stepping through sources of Qt 5.2 binary package
+        (QTCREATORBUG-11233)
+
+C++ Support
+   * Fixed selecting project to use for specific file
+   * Fixed completion for nested enums (QTCREATORBUG-5456)
+
+QML Profiler
+   * Improved performance (QTCREATORBUG-10950)
+   * Fixed issue with missing details for bindings in events pane
+
+Qt Quick Designer
+   * Added missing Qt Quick 2 specific properties
+   * Fixed crash when anchoring root item (QTCREATORBUG-11078)
+   * Fixed crash when dragging item from library and imports need to change
+     (QTCREATORBUG-11139)
+   * Fixed crash with invalid anchors (QTCREATORBUG-11255)
+   * Fixed crash when editing text without pressing enter or return key
+     (QTCREATORBUG-11249)
+   * Fixed crash with Anchors > Fill and Qt Quick Controls (QTCREATORBUG-10476)
+   * Fixed updating the UI when switching between states (QTCREATORBUG-10674)
+
+FakeVim
+   * Fixed that user command left editor in overwrite mode (QTCREATORBUG-10460)
+
+Platform Specific
+
+Android
+   * Fixed too short timeouts when calling external tools (QTCREATORBUG-10944)
+   * Fixed issues with build paths with non-latin characters (QTBUG-34316)
+   * Fixed issue with symbol search path for debugging (QTCREATORBUG-10382)
+
+iOS
+   * Improved startup performance of on-device debugging (QTCREATORBUG-10884)
+   * Fixed executable path shown in run configuration UI (QTCREATORBUG-11080)
+   * Fixed handling of control characters in application output
+     (QTCREATORBUG-11219)
+   * Fixed that custom application arguments were lost after restart
+
diff --git a/qtcreator.pri b/qtcreator.pri
index fa636ac21041533b19976bf30c8828db5026362c..faa528fc19e7820e5f2a9f0033105f67424cab3a 100644
--- a/qtcreator.pri
+++ b/qtcreator.pri
@@ -156,6 +156,7 @@ INCLUDEPATH += \
     $$IDE_SOURCE_TREE/src/libs \
     $$IDE_SOURCE_TREE/tools
 
+QTC_PLUGIN_DIRS = $$(QTC_PLUGIN_DIRS)
 QTC_PLUGIN_DIRS += $$IDE_SOURCE_TREE/src/plugins
 for(dir, QTC_PLUGIN_DIRS) {
     INCLUDEPATH += $$dir
diff --git a/share/qtcreator/qml/qmlpuppet/qml2puppet/qml2puppet.pro b/share/qtcreator/qml/qmlpuppet/qml2puppet/qml2puppet.pro
index 22f71911f0842e0ad402d558404ba0b293f91f85..71551a476fc42fe6fe9c4d1855c4abda3964d168 100644
--- a/share/qtcreator/qml/qmlpuppet/qml2puppet/qml2puppet.pro
+++ b/share/qtcreator/qml/qmlpuppet/qml2puppet/qml2puppet.pro
@@ -1,6 +1,7 @@
 TARGET = qml2puppet
 
 TEMPLATE = app
+CONFIG += console
 
 DESTDIR = $$[QT_INSTALL_BINS]
 
diff --git a/share/qtcreator/qmldesigner/propertyEditorQmlSources/PropertyTemplates/StringEditorTemplate.template b/share/qtcreator/qmldesigner/propertyEditorQmlSources/PropertyTemplates/StringEditorTemplate.template
index 3619dd5d4e4352c7581b5d6a1de0ff309872fad9..f770a686363cbb5b045608ae595cbc93f090359a 100644
--- a/share/qtcreator/qmldesigner/propertyEditorQmlSources/PropertyTemplates/StringEditorTemplate.template
+++ b/share/qtcreator/qmldesigner/propertyEditorQmlSources/PropertyTemplates/StringEditorTemplate.template
@@ -4,4 +4,5 @@ Label {
 }
 LineEdit {
     backendValue: backendValues.%2
-}
\ No newline at end of file
+    Layout.fillWidth: true
+}
diff --git a/share/qtcreator/qmldesigner/propertyEditorQmlSources/PropertyTemplates/TemplateTypes.qml b/share/qtcreator/qmldesigner/propertyEditorQmlSources/PropertyTemplates/TemplateTypes.qml
index 7c14041197153f57e8fb02a91925507ca7fe71d3..a4a404bedf537958e3a989bed6abf051eaef215a 100644
--- a/share/qtcreator/qmldesigner/propertyEditorQmlSources/PropertyTemplates/TemplateTypes.qml
+++ b/share/qtcreator/qmldesigner/propertyEditorQmlSources/PropertyTemplates/TemplateTypes.qml
@@ -1,6 +1,6 @@
 
 AutoTypes {
-    imports: [ "import HelperWidgets 2.0", "import QtQuick 2.1" ]
+    imports: [ "import HelperWidgets 2.0", "import QtQuick 2.1", "import QtQuick.Layouts 1.1" ]
 
     Type {
        typeNames: ["int"]
diff --git a/share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/BorderImageSpecifics.qml b/share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/BorderImageSpecifics.qml
index e5ea40efd734cc61bd1d39cf397e8f92c42b2d1f..18b1ce045fe8cd49c0c19518e4f23deb0ee87c5b 100644
--- a/share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/BorderImageSpecifics.qml
+++ b/share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/BorderImageSpecifics.qml
@@ -46,7 +46,7 @@ Column {
             }
 
             SecondColumnLayout {
-                LineEdit {
+                UrlChooser {
                     backendValue: backendValues.source
                     implicitWidth: 180
                 }
diff --git a/share/qtcreator/translations/qtcreator_ru.ts b/share/qtcreator/translations/qtcreator_ru.ts
index 21312796dee44482f89a86e8febb7f61fa228a51..5a414338565d762faa48be5cbc99c66c33697473 100644
--- a/share/qtcreator/translations/qtcreator_ru.ts
+++ b/share/qtcreator/translations/qtcreator_ru.ts
@@ -7,6 +7,10 @@
         <source>Advanced</source>
         <translation>Дополнительно</translation>
     </message>
+    <message>
+        <source>Origin</source>
+        <translation>Происхождение</translation>
+    </message>
     <message>
         <source>Scale</source>
         <translation>Масштаб</translation>
@@ -15,6 +19,30 @@
         <source>Rotation</source>
         <translation>Вращение</translation>
     </message>
+    <message>
+        <source>Enabled</source>
+        <translation>Включено</translation>
+    </message>
+    <message>
+        <source>Accept mouse and keyboard events</source>
+        <translation>Принимать события мыши и клавиатуры</translation>
+    </message>
+    <message>
+        <source>Smooth</source>
+        <translation>Сглаживание</translation>
+    </message>
+    <message>
+        <source>Smooth sampling active</source>
+        <translation>Включение сглаживания</translation>
+    </message>
+    <message>
+        <source>Antialiasing</source>
+        <translation>Антиалиасинг</translation>
+    </message>
+    <message>
+        <source>Anti-aliasing active</source>
+        <translation>Включение антиалиасинга</translation>
+    </message>
 </context>
 <context>
     <name>Analyzer</name>
@@ -14905,7 +14933,7 @@ Commit now?</source>
     </message>
     <message>
         <source>Git Reflog &quot;%1&quot;</source>
-        <translation type="unfinished">Git - reflog «%1»</translation>
+        <translation>Git - reflog «%1»</translation>
     </message>
     <message>
         <source>Cannot describe &quot;%1&quot;.</source>
@@ -15588,7 +15616,7 @@ Commit now?</source>
     </message>
     <message>
         <source>Reflog</source>
-        <translation type="unfinished">Reflog</translation>
+        <translation>Reflog</translation>
     </message>
     <message>
         <source>&amp;Patch</source>
@@ -15660,7 +15688,7 @@ Commit now?</source>
     </message>
     <message>
         <source>Git Gui</source>
-        <translation type="unfinished">Git Gui</translation>
+        <translation>Интерфейс Git</translation>
     </message>
     <message>
         <source>Repository Browser</source>
@@ -26374,8 +26402,12 @@ For qmlproject projects, use the importPaths property to add import paths.</sour
         <translation>Требуется импорт QtQuick.tooling.</translation>
     </message>
     <message>
-        <source>Expected version 1.1 or lower.</source>
-        <translation>Требуется версия 1.1 или ниже.</translation>
+        <source>Major version different from 1 not supported.</source>
+        <translation>Версия с основным номером отличным от 1 не поддерживается.</translation>
+    </message>
+    <message>
+        <source>Reading only version 1.1 parts.</source>
+        <translation>Чтение разделов версии 1.1.</translation>
     </message>
     <message>
         <source>Expected document to contain a single object definition.</source>
diff --git a/share/qtcreator/welcomescreen/widgets/SearchBar.qml b/share/qtcreator/welcomescreen/widgets/SearchBar.qml
index 5e592ed7ff5468d7fc9bee1f716d7a6886af0381..68690640c7c5f6eaad8386f7253d36c2217ce23b 100644
--- a/share/qtcreator/welcomescreen/widgets/SearchBar.qml
+++ b/share/qtcreator/welcomescreen/widgets/SearchBar.qml
@@ -27,7 +27,9 @@
 **
 ****************************************************************************/
 
-import QtQuick 2.1
+import QtQuick 2.2
+import QtQuick.Controls 1.1
+import QtQuick.Controls.Styles 1.1
 
 Rectangle {
     id: searchBar
@@ -38,10 +40,10 @@ Rectangle {
     radius: 6
     border.color: "#cccccc"
 
-    property alias placeholderText: placeHolderText.text
+    property alias placeholderText: lineEdit.placeholderText
     property alias text: lineEdit.text
 
-    TextInput {
+    TextField {
         id: lineEdit
         anchors.topMargin: 1
         anchors.left: parent.left
@@ -50,18 +52,11 @@ Rectangle {
         anchors.leftMargin: 12
         anchors.fill: parent
         verticalAlignment: Text.AlignVCenter
-        renderType: Text.NativeRendering
         font.pixelSize: 14
-        font.family: "Helvetica"
-    }
-
-    NativeText {
-        id: placeHolderText
-        visible: !lineEdit.text.length
-        text: qsTr("Search...")
-        anchors.fill: lineEdit
-        font: lineEdit.font
-        verticalAlignment: Text.AlignVCenter
-        color: "gray"
+        placeholderText:  qsTr("Search...")
+        style: TextFieldStyle {
+            background: Item {
+            }
+        }
     }
 }
diff --git a/share/qtcreator/welcomescreen/widgets/SideBar.qml b/share/qtcreator/welcomescreen/widgets/SideBar.qml
index c2d4153409e49cad2b35d7156dc9bf3498333146..521bf45c5d59d9cf2dbb1946eac0ba8e2a5217dc 100644
--- a/share/qtcreator/welcomescreen/widgets/SideBar.qml
+++ b/share/qtcreator/welcomescreen/widgets/SideBar.qml
@@ -121,7 +121,7 @@ ColumnLayout {
 
             Button {
                 text: qsTr("Get Started Now")
-                onClicked: gettingStarted.openSplitHelp("qthelp://org.qt-project.qtcreator/doc/creator-getting-started.html")
+                onClicked: gettingStarted.openHelp("qthelp://org.qt-project.qtcreator/doc/index.html")
             }
 
             Item {
diff --git a/src/libs/utils/filenamevalidatinglineedit.cpp b/src/libs/utils/filenamevalidatinglineedit.cpp
index 8202f03baae9080f28a6551c09346b43ba964441..9fea015c5bfa539db235fd608e9d9e9ba6e482cd 100644
--- a/src/libs/utils/filenamevalidatinglineedit.cpp
+++ b/src/libs/utils/filenamevalidatinglineedit.cpp
@@ -98,7 +98,7 @@ void FileNameValidatingLineEdit::setForceFirstCapitalLetter(bool b)
 #define SLASHES "/\\"
 
 static const char notAllowedCharsSubDir[]   = ",^@=+{}[]~!?:&*\"|#%<>$\"'();`' ";
-static const char notAllowedCharsNoSubDir[] = ",^@=+{}[]~!?:&*\"|#%<>$\"'();`' " SLASHES;
+static const char notAllowedCharsNoSubDir[] = ",^@={}[]~!?:&*\"|#%<>$\"'();`' " SLASHES;
 
 static const char *notAllowedSubStrings[] = {".."};
 
diff --git a/src/libs/utils/projectnamevalidatinglineedit.cpp b/src/libs/utils/projectnamevalidatinglineedit.cpp
index 3d54c4b5744bbd768565ed2445b9c9c9cf182120..642f9deed6cca62c95c975fc8af1604ab07fc104 100644
--- a/src/libs/utils/projectnamevalidatinglineedit.cpp
+++ b/src/libs/utils/projectnamevalidatinglineedit.cpp
@@ -54,7 +54,7 @@ bool ProjectNameValidatingLineEdit::validateProjectName(const QString &name, QSt
     if (name.contains(QLatin1Char('.'))) {
         if (errorMessage)
             *errorMessage = tr("Invalid character '.'.");
-          return false;
+        return false;
     }
     return true;
 }
diff --git a/src/plugins/coreplugin/coreconstants.h b/src/plugins/coreplugin/coreconstants.h
index 547277f7d01f803cf32f9da448a0621a4c4ee58c..34225188708e51c6f9f1a7095ae3766c2012ac2e 100644
--- a/src/plugins/coreplugin/coreconstants.h
+++ b/src/plugins/coreplugin/coreconstants.h
@@ -175,6 +175,7 @@ const char G_WINDOW_OTHER[]        = "QtCreator.Group.Window.Other";
 
 // Help groups (global)
 const char G_HELP_HELP[]           = "QtCreator.Group.Help.Help";
+const char G_HELP_SUPPORT[]        = "QtCreator.Group.Help.Supprt";
 const char G_HELP_ABOUT[]          = "QtCreator.Group.Help.About";
 
 const char ICON_MINUS[]              = ":/core/images/minus.png";
diff --git a/src/plugins/coreplugin/mainwindow.cpp b/src/plugins/coreplugin/mainwindow.cpp
index 08e00627c93175bacc6eef24077700d44b717220..383e302ae0ddd27f5d21734789c589a33eb7060b 100644
--- a/src/plugins/coreplugin/mainwindow.cpp
+++ b/src/plugins/coreplugin/mainwindow.cpp
@@ -509,6 +509,7 @@ void MainWindow::registerDefaultContainers()
     menubar->addMenu(ac, Constants::G_HELP);
     ac->menu()->setTitle(tr("&Help"));
     ac->appendGroup(Constants::G_HELP_HELP);
+    ac->appendGroup(Constants::G_HELP_SUPPORT);
     ac->appendGroup(Constants::G_HELP_ABOUT);
 }
 
@@ -744,6 +745,11 @@ void MainWindow::registerDefaultActions()
     mwindow->addMenu(mviews, Constants::G_WINDOW_VIEWS);
     mviews->menu()->setTitle(tr("&Views"));
 
+    // "Help" separators
+    mhelp->addSeparator(globalContext, Constants::G_HELP_SUPPORT);
+    if (!Utils::HostOsInfo::isMacHost())
+        mhelp->addSeparator(globalContext, Constants::G_HELP_ABOUT);
+
     // About IDE Action
     icon = QIcon::fromTheme(QLatin1String("help-about"));
     if (Utils::HostOsInfo::isMacHost())
diff --git a/src/plugins/help/helpplugin.cpp b/src/plugins/help/helpplugin.cpp
index 9dccbc6e59622e6480bcdd638a73010cbc8530ee..840a39e42d0657a23bcf20c78ac9eab8c66b5509 100644
--- a/src/plugins/help/helpplugin.cpp
+++ b/src/plugins/help/helpplugin.cpp
@@ -229,7 +229,7 @@ bool HelpPlugin::initialize(const QStringList &arguments, QString *error)
     cmd->setDefaultKeySequence(QKeySequence(UseMacShortcuts ? tr("Meta+M") : tr("Ctrl+M")));
     connect(action, SIGNAL(triggered()), this, SLOT(addBookmark()));
 
-    // Add Contents, Index, and Context menu items and a separator to the Help menu
+    // Add Contents, Index, and Context menu items
     action = new QAction(QIcon::fromTheme(QLatin1String("help-contents")),
         tr(SB_CONTENTS), this);
     cmd = ActionManager::registerAction(action, "Help.Contents", globalcontext);
@@ -247,30 +247,16 @@ bool HelpPlugin::initialize(const QStringList &arguments, QString *error)
     cmd->setDefaultKeySequence(QKeySequence(Qt::Key_F1));
     connect(action, SIGNAL(triggered()), this, SLOT(activateContext()));
 
-    if (!Utils::HostOsInfo::isMacHost()) {
-        action = new QAction(this);
-        action->setSeparator(true);
-        cmd = ActionManager::registerAction(action, "Help.Separator", globalcontext);
-        ActionManager::actionContainer(Core::Constants::M_HELP)->addAction(cmd, Core::Constants::G_HELP_HELP);
-    }
-
     action = new QAction(tr("Technical Support"), this);
     cmd = ActionManager::registerAction(action, "Help.TechSupport", globalcontext);
-    ActionManager::actionContainer(Core::Constants::M_HELP)->addAction(cmd, Core::Constants::G_HELP_HELP);
+    ActionManager::actionContainer(Core::Constants::M_HELP)->addAction(cmd, Core::Constants::G_HELP_SUPPORT);
     connect(action, SIGNAL(triggered()), this, SLOT(slotOpenSupportPage()));
 
     action = new QAction(tr("Report Bug..."), this);
     cmd = ActionManager::registerAction(action, "Help.ReportBug", globalcontext);
-    ActionManager::actionContainer(Core::Constants::M_HELP)->addAction(cmd, Core::Constants::G_HELP_HELP);
+    ActionManager::actionContainer(Core::Constants::M_HELP)->addAction(cmd, Core::Constants::G_HELP_SUPPORT);
     connect(action, SIGNAL(triggered()), this, SLOT(slotReportBug()));
 
-    if (!Utils::HostOsInfo::isMacHost()) {
-        action = new QAction(this);
-        action->setSeparator(true);
-        cmd = ActionManager::registerAction(action, "Help.Separator2", globalcontext);
-        ActionManager::actionContainer(Core::Constants::M_HELP)->addAction(cmd, Core::Constants::G_HELP_HELP);
-    }
-
     action = new QAction(this);
     ActionManager::registerAction(action, Core::Constants::PRINT, modecontext);
     connect(action, SIGNAL(triggered()), m_centralWidget, SLOT(print()));
diff --git a/src/plugins/ios/iosrunconfiguration.cpp b/src/plugins/ios/iosrunconfiguration.cpp
index b4994f4e26a3501e6bf3c82768ae7da276026a32..f607d311c98a0660ad589ddafe797e1816c3e1c5 100644
--- a/src/plugins/ios/iosrunconfiguration.cpp
+++ b/src/plugins/ios/iosrunconfiguration.cpp
@@ -54,6 +54,8 @@ using namespace QmakeProjectManager;
 namespace Ios {
 namespace Internal {
 
+const QLatin1String runConfigurationKey("Ios.run_arguments");
+
 class IosRunConfigurationWidget : public RunConfigWidget
 {
     Q_OBJECT
@@ -84,6 +86,7 @@ IosRunConfiguration::IosRunConfiguration(Target *parent, Core::Id id, const QStr
 IosRunConfiguration::IosRunConfiguration(Target *parent, IosRunConfiguration *source)
     : RunConfiguration(parent, source)
     , m_profilePath(source->m_profilePath)
+    , m_arguments(source->m_arguments)
 {
     init();
 }
@@ -194,6 +197,19 @@ Utils::FileName IosRunConfiguration::exePath() const
     return bundleDir().appendPath(appName());
 }
 
+bool IosRunConfiguration::fromMap(const QVariantMap &map)
+{
+    m_arguments = map.value(runConfigurationKey).toStringList();
+    return RunConfiguration::fromMap(map);
+}
+
+QVariantMap IosRunConfiguration::toMap() const
+{
+    QVariantMap res = RunConfiguration::toMap();
+    res[runConfigurationKey] = m_arguments;
+    return res;
+}
+
 IosRunConfigurationWidget::IosRunConfigurationWidget(IosRunConfiguration *runConfiguration) :
     m_ui(new Ui::IosRunConfiguration), m_runConfiguration(runConfiguration)
 {
diff --git a/src/plugins/ios/iosrunconfiguration.h b/src/plugins/ios/iosrunconfiguration.h
index 0acf6f8ec1f264522add6b7141e6b75af63d1856..0c394361fd154ff40667066ae3f0e6366c684d31 100644
--- a/src/plugins/ios/iosrunconfiguration.h
+++ b/src/plugins/ios/iosrunconfiguration.h
@@ -61,6 +61,9 @@ public:
     Utils::FileName bundleDir() const;
     Utils::FileName exePath() const;
 
+    bool fromMap(const QVariantMap &map) QTC_OVERRIDE;
+    QVariantMap toMap() const QTC_OVERRIDE;
+
 protected:
     IosRunConfiguration(ProjectExplorer::Target *parent, IosRunConfiguration *source);
     QString defaultDisplayName();
diff --git a/src/plugins/qmldesigner/components/propertyeditor/fileresourcesmodel.cpp b/src/plugins/qmldesigner/components/propertyeditor/fileresourcesmodel.cpp
index 7ebfa5d645da0a254963b7b9a4e2a46988dc227e..6e3a1e90f873529f1c781871516fe0010eed2c98 100644
--- a/src/plugins/qmldesigner/components/propertyeditor/fileresourcesmodel.cpp
+++ b/src/plugins/qmldesigner/components/propertyeditor/fileresourcesmodel.cpp
@@ -29,6 +29,8 @@
 
 #include "fileresourcesmodel.h"
 
+#include <coreplugin/icore.h>
+
 #include <model.h>
 
 #include <QFileDialog>
@@ -130,7 +132,7 @@ void FileResourcesModel::openFileDialog()
     if (!QFileInfo(path).exists())
         path = modelPath;
 
-    QString newFile = QFileDialog::getOpenFileName(0, tr("Open File"), path, m_filter);
+    QString newFile = QFileDialog::getOpenFileName(Core::ICore::mainWindow(), tr("Open File"), path, m_filter);
 
     if (!newFile.isEmpty()) {
         setFileNameStr(newFile);
diff --git a/src/plugins/qmldesigner/components/stateseditor/stateseditorimageprovider.cpp b/src/plugins/qmldesigner/components/stateseditor/stateseditorimageprovider.cpp
index a5febcab8f69b3cee362c5f2e72ad01ca1636c2b..6e8d65029debeb12c906dda26ae5dde374660113 100644
--- a/src/plugins/qmldesigner/components/stateseditor/stateseditorimageprovider.cpp
+++ b/src/plugins/qmldesigner/components/stateseditor/stateseditorimageprovider.cpp
@@ -42,17 +42,20 @@ StatesEditorImageProvider::StatesEditorImageProvider()
 
 QImage StatesEditorImageProvider::requestImage(const QString &id, QSize *size, const QSize &requestedSize)
 {
-    if (m_nodeInstanceView.isNull())
-        return QImage();
-
-    if (!m_nodeInstanceView->model())
-        return QImage(); //NodeInstanceView might be detached
 
     QSize newSize = requestedSize;
 
     if (newSize.isEmpty())
         newSize = QSize (100, 100);
 
+    if (m_nodeInstanceView.isNull() || !m_nodeInstanceView->model()) {
+        //NodeInstanceView might be detached
+        //Return white QImage
+        QImage image(newSize, QImage::Format_ARGB32);
+        image.fill(0xFFFFFFFF);
+        return image;
+    }
+
     QString imageId = id.split(QLatin1Char('-')).first();
     QImage image;
 
diff --git a/src/plugins/qmldesigner/components/stateseditor/stateslist.qml b/src/plugins/qmldesigner/components/stateseditor/stateslist.qml
index f35376b0d4523fc4db32566a24724f6e76f9b5bd..c838d13b21fcb1598ff89d2146fc0e8cedb78571 100644
--- a/src/plugins/qmldesigner/components/stateseditor/stateslist.qml
+++ b/src/plugins/qmldesigner/components/stateseditor/stateslist.qml
@@ -397,7 +397,6 @@ Rectangle {
     Component {
         id: underlay
         Item {
-            anchors.fill:parent
             property variant color: parent.color
             clip:true
             Rectangle {
diff --git a/src/plugins/qnx/qnxdeviceconfigurationwizard.cpp b/src/plugins/qnx/qnxdeviceconfigurationwizard.cpp
index e7cd6505f877a9ac381af31271937db5eb9f3b7c..e0522373716ca17e34da60b3246a58701cdaf972 100644
--- a/src/plugins/qnx/qnxdeviceconfigurationwizard.cpp
+++ b/src/plugins/qnx/qnxdeviceconfigurationwizard.cpp
@@ -65,7 +65,8 @@ IDevice::Ptr QnxDeviceConfigurationWizard::device()
     sshParams.port = 22;
     sshParams.timeout = 10;
     sshParams.authenticationType = m_setupPage->authenticationType();
-    if (sshParams.authenticationType == QSsh::SshConnectionParameters::AuthenticationTypePassword)
+    if (sshParams.authenticationType == QSsh::SshConnectionParameters::AuthenticationTypeTryAllPasswordBasedMethods
+        || sshParams.authenticationType == QSsh::SshConnectionParameters::AuthenticationTypePassword)
         sshParams.password = m_setupPage->password();
     else
         sshParams.privateKeyFile = m_setupPage->privateKeyFilePath();
diff --git a/src/plugins/remotelinux/remotelinuxsignaloperation.cpp b/src/plugins/remotelinux/remotelinuxsignaloperation.cpp
index a926aafc3cdcd4ca8394083b74e469e230823dae..223a655ca6892ec9c76055b4cbc67cf903ac9cda 100644
--- a/src/plugins/remotelinux/remotelinuxsignaloperation.cpp
+++ b/src/plugins/remotelinux/remotelinuxsignaloperation.cpp
@@ -78,7 +78,7 @@ static QString signalProcessByNameCommandLine(const QString &filePath, int signa
                 "cd /proc; for pid in `ls -d [0123456789]*`; "
                 "do "
                 "if [ \"`readlink /proc/$pid/exe`\" = \"%1\" ]; then "
-                "    kill %2 $pid;"
+                "    kill -%2 $pid;"
                 "fi; "
                 "done").arg(filePath).arg(signal);
 }
diff --git a/src/qtcreatorplugin.pri b/src/qtcreatorplugin.pri
index 21dc0d78ceaedea708681aa6729791cee827ab2d..b90b9b9b83f9429aee1eaf8e9c01acaa7e92380a 100644
--- a/src/qtcreatorplugin.pri
+++ b/src/qtcreatorplugin.pri
@@ -17,11 +17,29 @@ include(../qtcreator.pri)
 # for substitution in the .pluginspec
 dependencyList = "<dependencyList>"
 for(dep, plugin_deps) {
-    include($$PWD/plugins/$$dep/$${dep}_dependencies.pri)
+    dependencies_file =
+    for(dir, QTC_PLUGIN_DIRS) {
+        exists($$dir/$$dep/$${dep}_dependencies.pri) {
+            dependencies_file = $$dir/$$dep/$${dep}_dependencies.pri
+            break()
+        }
+    }
+    isEmpty(dependencies_file): \
+        error("Plugin dependency $$dep not found")
+    include($$dependencies_file)
     dependencyList += "        <dependency name=\"$$QTC_PLUGIN_NAME\" version=\"$$QTCREATOR_VERSION\"/>"
 }
 for(dep, plugin_recmds) {
-    include($$PWD/plugins/$$dep/$${dep}_dependencies.pri)
+    dependencies_file =
+    for(dir, QTC_PLUGIN_DIRS) {
+        exists($$dir/$$dep/$${dep}_dependencies.pri) {
+            dependencies_file = $$dir/$$dep/$${dep}_dependencies.pri
+            break()
+        }
+    }
+    isEmpty(dependencies_file): \
+        error("Plugin dependency $$dep not found")
+    include($$dependencies_file)
     dependencyList += "        <dependency name=\"$$QTC_PLUGIN_NAME\" version=\"$$QTCREATOR_VERSION\" type=\"optional\"/>"
 }
 dependencyList += "    </dependencyList>"
diff --git a/src/shared/proparser/qmakebuiltins.cpp b/src/shared/proparser/qmakebuiltins.cpp
index 0cf81ce30c8be54c8eff7245b08939713475489d..d51b476d8d3195d1cabeb98e4d6972d1d1642469 100644
--- a/src/shared/proparser/qmakebuiltins.cpp
+++ b/src/shared/proparser/qmakebuiltins.cpp
@@ -508,7 +508,7 @@ ProStringList QMakeEvaluator::evaluateBuiltinExpand(
             QString tmp = args.at(0).toQString(m_tmp1);
             for (int i = 1; i < args.count(); ++i)
                 tmp = tmp.arg(args.at(i).toQString(m_tmp2));
-            ret << ProString(tmp);
+            ret << (tmp.isSharedWith(m_tmp1) ? args.at(0) : ProString(tmp).setSource(args.at(0)));
         }
         break;
     case E_FORMAT_NUMBER:
@@ -1526,7 +1526,7 @@ QMakeEvaluator::VisitReturn QMakeEvaluator::evaluateBuiltinConditional(
         if (args.count() >= 2) {
             const ProStringList &vals = values(args.at(1).toKey());
             if (!vals.isEmpty())
-                contents = vals.join(fL1S("\n")) + QLatin1Char('\n');
+                contents = vals.join(QLatin1Char('\n')) + QLatin1Char('\n');
             if (args.count() >= 3)
                 if (!args.at(2).toQString(m_tmp1).compare(fL1S("append"), Qt::CaseInsensitive))
                     mode = QIODevice::Append;
diff --git a/tests/system/objects.map b/tests/system/objects.map
index d7c3c9a7c77eb48f49b4bb7f321bb1b0f06b8603..a6777ec688f9bc5c5fb6efdcdd459f63512fba2b 100644
--- a/tests/system/objects.map
+++ b/tests/system/objects.map
@@ -29,6 +29,7 @@
 :Add to Version Control.No_QPushButton	{text='No' type='QPushButton' unnamed='1' visible='1' window=':Add to Version Control_QMessageBox'}
 :Add to Version Control_QMessageBox	{text~='Add the file.*to version control (.*)?' type='QMessageBox' unnamed='1' visible='1'}
 :Analyzer Toolbar.AnalyzerManagerToolBox_QComboBox	{container=':Qt Creator.Analyzer Toolbar_QDockWidget' name='AnalyzerManagerToolBox' type='QComboBox' visible='1'}
+:Analyzer Toolbar.Clear_QToolButton	{container=':Qt Creator.Analyzer Toolbar_QDockWidget' toolTip='Discard data' type='QToolButton' unnamed='1' visible='1'}
 :Analyzer Toolbar.Elapsed:_QLabel	{container=':Qt Creator.Analyzer Toolbar_QDockWidget' text~='Elapsed:    \\\\d+.\\\\d s' type='QLabel' unnamed='1' visible='1'}
 :Analyzer Toolbar.Start_QToolButton	{container=':Qt Creator.Analyzer Toolbar_QDockWidget' text='Start' type='QToolButton' unnamed='1' visible='1'}
 :Behavior.Autocomplete common prefix_QCheckBox	{container=':CppTools__Internal__CompletionSettingsPage.Behavior_QGroupBox' name='partiallyComplete' text='Autocomplete common prefix' type='QCheckBox' visible='1'}
diff --git a/tests/system/shared/build_utils.py b/tests/system/shared/build_utils.py
index 83188d5ed7f03dfa5568b96f7a55c3b503d32f30..d5710f970d3c661ff86e183884d09e460c47b202 100644
--- a/tests/system/shared/build_utils.py
+++ b/tests/system/shared/build_utils.py
@@ -29,38 +29,9 @@
 
 import re;
 
-# dictionary to hold a list of all installed handler functions for all object-signalSignature pairs
-installedSignalHandlers = {}
-# flag to indicate whether overrideInstallLazySignalHandler() has been called already
-overridenInstallLazySignalHandlers = False
 # flag to indicate whether a tasks file should be created when building ends with errors
 createTasksFileOnError = True
 
-# call this function to override installLazySignalHandler()
-def overrideInstallLazySignalHandler():
-    global overridenInstallLazySignalHandlers
-    if overridenInstallLazySignalHandlers:
-        return
-    overridenInstallLazySignalHandlers = True
-    global installLazySignalHandler
-    installLazySignalHandler = __addSignalHandlerDict__(installLazySignalHandler)
-
-# avoids adding a handler to a signal twice or more often
-# do not call this function directly - use overrideInstallLazySignalHandler() instead
-def __addSignalHandlerDict__(lazySignalHandlerFunction):
-    global installedSignalHandlers
-    def wrappedFunction(name, signalSignature, handlerFunctionName):
-        handlers = installedSignalHandlers.get("%s____%s" % (name,signalSignature))
-        if handlers == None:
-            lazySignalHandlerFunction(name, signalSignature, handlerFunctionName)
-            installedSignalHandlers.setdefault("%s____%s" % (name,signalSignature), [handlerFunctionName])
-        else:
-            if not handlerFunctionName in handlers:
-                lazySignalHandlerFunction(name, signalSignature, handlerFunctionName)
-                handlers.append(handlerFunctionName)
-                installedSignalHandlers.setdefault("%s____%s" % (name,signalSignature), handlers)
-    return wrappedFunction
-
 # this method checks the last build (if there's one) and logs the number of errors, warnings and
 # lines within the Issues output
 # optional parameter can be used to tell this function if the build was expected to fail or not
@@ -105,6 +76,13 @@ def compileSucceeded(compileOutput):
     return None != re.match(".*exited normally\.\n\d\d:\d\d:\d\d: Elapsed time: "
                             "(\d:)?\d{2}:\d\d\.$", str(compileOutput), re.S)
 
+def waitForCompile(timeout=60000):
+    progressBarWait(10000) # avoids switching to Issues pane after checking Compile Output
+    ensureChecked(":Qt Creator_CompileOutput_Core::Internal::OutputPaneToggleButton")
+    output = waitForObject(":Qt Creator.Compile Output_Core::OutputWindow")
+    if not waitFor("re.match('.*Elapsed time: (\d:)?\d{2}:\d\d\.$', str(output.plainText), re.S)", timeout):
+        test.warning("Waiting for compile timed out after %d s." % (timeout / 1000))
+
 def dumpBuildIssues(listModel):
     issueDump = []
     for row in range(listModel.rowCount()):
@@ -254,7 +232,8 @@ def runVerify(checkedTargets):
     for kit, config in availableConfigs:
         selectBuildConfig(len(checkedTargets), kit, config)
         test.log("Using build config '%s'" % config)
-        if not runAndCloseApp():
-            return
+        if runAndCloseApp() == None:
+            checkCompile()
+            continue
         verifyBuildAndRun()
         mouseClick(waitForObject(":*Qt Creator.Clear_QToolButton"))
diff --git a/tests/system/shared/classes.py b/tests/system/shared/classes.py
index 5a7e84bbf054f3f78f42694307cad2af3035fbea..b1f86d9f881a5d4e2a7dc764cdd749cfec1afa8d 100644
--- a/tests/system/shared/classes.py
+++ b/tests/system/shared/classes.py
@@ -136,13 +136,16 @@ class SubprocessType:
     USER_DEFINED=3
 
     @staticmethod
-    def getWindowType(subprocessType):
+    def getWindowType(subprocessType, qtQuickVersion=1):
         if subprocessType == SubprocessType.QT_WIDGET:
             return "QMainWindow"
         if subprocessType == SubprocessType.QT_QUICK_APPLICATION:
-            return "QmlApplicationViewer"
+            return "QtQuick%dApplicationViewer" % qtQuickVersion
         if subprocessType == SubprocessType.QT_QUICK_UI:
-            return "QDeclarativeViewer"
+            if qtQuickVersion == 1:
+                return "QDeclarativeViewer"
+            else:
+                return "QQuickView"
         if subprocessType == SubprocessType.USER_DEFINED:
             return "user-defined"
         test.fatal("Could not determine the WindowType for SubprocessType %s" % subprocessType)
diff --git a/tests/system/shared/hook_utils.py b/tests/system/shared/hook_utils.py
index bc1a81b9fe2a81ced7e2fcdaea3966c46f1a0090..13800c9a85f4ccca65f6ac81684e95537b459f72 100644
--- a/tests/system/shared/hook_utils.py
+++ b/tests/system/shared/hook_utils.py
@@ -68,6 +68,11 @@ def modifyRunSettingsForHookInto(projectName, kitCount, port):
                     changingVars.append("SQUISH_LIBQTDIR=%s" % replacement)
                 else:
                     changingVars.append(varName)
+            elif varName == "DYLD_FRAMEWORK_PATH" and platform.system() == 'Darwin':
+                value = str(model.data(model.index(index.row, 1)).toString())
+                test.log("Adding %s to DYLD_FRAMEWORK_PATH" % qtLibPath)
+                replacement = ":".join(filter(len, [qtLibPath, value]))
+                changingVars.append("%s=%s" % (varName, replacement))
         batchEditRunEnvironment(kitCount, 0, changingVars, True)
     switchViewTo(ViewConstants.EDIT)
     return result
@@ -111,29 +116,12 @@ def modifyRunSettingsForHookIntoQtQuickUI(kitCount, workingDir, projectName, por
         executable = os.path.abspath(os.path.dirname(qmake) + "/qmlscene")
     if platform.system() in ('Microsoft', 'Windows'):
         executable = executable + ".exe"
-    addRunConfig = waitForObject("{container={window=':Qt Creator_Core::Internal::MainWindow' "
-                              "type='ProjectExplorer::Internal::RunSettingsWidget' unnamed='1' "
-                              "visible='1'} occurrence='2' text='Add' type='QPushButton' "
-                              "unnamed='1' visible='1'}")
-    clickButton(addRunConfig)
-    activateItem(waitForObject("{type='QMenu' visible='1' unnamed='1'}"), "Custom Executable")
-    exePathChooser = waitForObject(":Executable:_Utils::PathChooser")
-    exeLineEd = getChildByClass(exePathChooser, "Utils::BaseValidatingLineEdit")
-    argLineEd = waitForObject("{buddy={window=':Qt Creator_Core::Internal::MainWindow' "
-                              "type='QLabel' text='Arguments:' visible='1'} type='QLineEdit' "
-                              "unnamed='1' visible='1'}")
-    wdPathChooser = waitForObject("{buddy={window=':Qt Creator_Core::Internal::MainWindow' "
-                                  "text='Working directory:' type='QLabel'} "
-                                  "type='Utils::PathChooser' unnamed='1' visible='1'}")
-    wdLineEd = getChildByClass(wdPathChooser, "Utils::BaseValidatingLineEdit")
     startAUT = os.path.abspath(squishPath + "/bin/startaut")
     if platform.system() in ('Microsoft', 'Windows'):
         startAUT = startAUT + ".exe"
+    args = "--verbose --port=%d %s %s.qml" % (port, executable, projectName)
     projectPath = os.path.abspath("%s/%s" % (workingDir, projectName))
-    replaceEditorContent(exeLineEd, startAUT)
-    replaceEditorContent(argLineEd, "--verbose --port=%d %s %s.qml"
-                         % (port, executable, projectName))
-    replaceEditorContent(wdLineEd, projectPath)
+    __invokeAddCustomExecutable__(startAUT, args, projectPath)
     clickButton(waitForObject("{text='Details' type='Utils::DetailsButton' unnamed='1' visible='1' "
                               "window=':Qt Creator_Core::Internal::MainWindow' "
                               "leftWidget={type='QLabel' text~='Us(e|ing) <b>Build Environment</b>'"
@@ -231,27 +219,13 @@ def __configureCustomExecutable__(projectName, port, mkspec, qmakeVersion):
                      "Failed to find '%s'" % startAUT)
         return False
     progressBarWait()
-    addButton = waitForObject("{container={window=':Qt Creator_Core::Internal::MainWindow' "
-                              "type='ProjectExplorer::Internal::RunSettingsWidget' unnamed='1' "
-                              "visible='1'} occurrence='2' text='Add' type='QPushButton' "
-                              "unnamed='1' visible='1'}")
-    clickButton(addButton)
-    addMenu = addButton.menu()
-    activateItem(waitForObjectItem(addMenu, 'Custom Executable'))
-    exePathChooser = waitForObject(":Executable:_Utils::PathChooser", 2000)
-    exeLineEd = getChildByClass(exePathChooser, "Utils::BaseValidatingLineEdit")
-    argLineEd = waitForObject("{buddy={window=':Qt Creator_Core::Internal::MainWindow' "
-                              "type='QLabel' text='Arguments:' visible='1'} type='QLineEdit' "
-                              "unnamed='1' visible='1'}")
-    wdPathChooser = waitForObject("{buddy={window=':Qt Creator_Core::Internal::MainWindow' text='Working directory:' type='QLabel'} "
-                                  "type='Utils::PathChooser' unnamed='1' visible='1'}")
-    replaceEditorContent(exeLineEd, startAUT)
     # the following is currently only configured for release builds (will be enhanced later)
     if platform.system() in ('Microsoft', 'Windows'):
         debOrRel = "release" + os.sep
     else:
         debOrRel = ""
-    replaceEditorContent(argLineEd, "--verbose --port=%d %s%s" % (port, debOrRel, projectName))
+    args = "--verbose --port=%d %s%s" % (port, debOrRel, projectName)
+    __invokeAddCustomExecutable__(startAUT, args)
     return True
 
 # function that retrieves a specific child object by its class
@@ -424,3 +398,25 @@ def __getSquishServer__():
         test.fatal("SQUISH_PREFIX isn't set - leaving test")
         return None
     return os.path.abspath(squishSrv + "/bin/squishserver")
+
+def __invokeAddCustomExecutable__(exe, args, workingDir=None):
+    addButton = waitForObject("{container={window=':Qt Creator_Core::Internal::MainWindow' "
+                              "type='ProjectExplorer::Internal::RunSettingsWidget' unnamed='1' "
+                              "visible='1'} occurrence='2' text='Add' type='QPushButton' "
+                              "unnamed='1' visible='1'}")
+    clickButton(addButton)
+    addMenu = addButton.menu()
+    activateItem(waitForObjectItem(addMenu, 'Custom Executable'))
+    exePathChooser = waitForObject(":Executable:_Utils::PathChooser")
+    exeLineEd = getChildByClass(exePathChooser, "Utils::BaseValidatingLineEdit")
+    argLineEd = waitForObject("{buddy={window=':Qt Creator_Core::Internal::MainWindow' "
+                              "type='QLabel' text='Arguments:' visible='1'} type='QLineEdit' "
+                              "unnamed='1' visible='1'}")
+    wdPathChooser = waitForObject("{buddy={window=':Qt Creator_Core::Internal::MainWindow' "
+                                  "text='Working directory:' type='QLabel'} "
+                                  "type='Utils::PathChooser' unnamed='1' visible='1'}")
+    wdLineEd = getChildByClass(wdPathChooser, "Utils::BaseValidatingLineEdit")
+    replaceEditorContent(exeLineEd, exe)
+    replaceEditorContent(argLineEd, args)
+    if workingDir:
+        replaceEditorContent(wdLineEd, workingDir)
diff --git a/tests/system/shared/project.py b/tests/system/shared/project.py
index 9a541ffe2e82693f6d302241b8af89bef08f2480..abaf2af374e0a8c04e1264843874eca94f2c90d5 100644
--- a/tests/system/shared/project.py
+++ b/tests/system/shared/project.py
@@ -397,24 +397,23 @@ def waitForProcessRunning(running=True):
 # userDefinedType - if you set sType to SubprocessType.USER_DEFINED you must(!) specify the WindowType for hooking into
 # 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):
+# returns None if the build failed, False if the subprocess did not start, and True otherwise
+def runAndCloseApp(withHookInto=False, executable=None, port=None, function=None, sType=None, userDefinedType=None, quickVersion=1):
     runButton = waitForObject(":*Qt Creator.Run_Core::Internal::FancyToolButton")
     clickButton(runButton)
     if sType != SubprocessType.QT_QUICK_UI:
-        waitForSignal("{type='ProjectExplorer::BuildManager' unnamed='1'}", "buildQueueFinished(bool)", 300000)
+        waitForCompile(300000)
         buildSucceeded = checkLastBuild()
         ensureChecked(waitForObject(":Qt Creator_AppOutput_Core::Internal::OutputPaneToggleButton"))
         if not buildSucceeded:
             test.fatal("Build inside run wasn't successful - leaving test")
-            invokeMenuItem("File", "Exit")
-            return False
+            return None
     if not waitForProcessRunning():
         test.fatal("Couldn't start application - leaving test")
-        invokeMenuItem("File", "Exit")
         return False
     if sType == SubprocessType.QT_QUICK_UI and os.getenv("SYSTEST_QMLVIEWER_NO_HOOK_INTO", "0") == "1":
         withHookInto = False
-    if withHookInto and not validType(sType, userDefinedType):
+    if withHookInto and not validType(sType, userDefinedType, quickVersion):
         if function != None:
             test.warning("You did not provide a valid value for the SubprocessType value - sType, but you have "
                          "provided a function to execute on the subprocess. Please ensure that your function "
@@ -425,15 +424,15 @@ def runAndCloseApp(withHookInto=False, executable=None, port=None, function=None
                          "inside creator to terminate execution of the subprocess.")
             withHookInto = False
     if withHookInto and not executable in ("", None):
-        __closeSubprocessByHookingInto__(executable, port, function, sType, userDefinedType)
+        __closeSubprocessByHookingInto__(executable, port, function, sType, userDefinedType, quickVersion)
     else:
         __closeSubprocessByPushingStop__(sType)
     return True
 
-def validType(sType, userDef):
+def validType(sType, userDef, quickVersion):
     if sType == None:
         return False
-    ty = SubprocessType.getWindowType(sType)
+    ty = SubprocessType.getWindowType(sType, quickVersion)
     return ty != None and not (ty == "user-defined" and (userDef == None or userDef.strip() == ""))
 
 def __closeSubprocessByPushingStop__(sType):
@@ -455,7 +454,7 @@ def __closeSubprocessByPushingStop__(sType):
     else:
         test.fatal("Subprocess does not seem to have been started.")
 
-def __closeSubprocessByHookingInto__(executable, port, function, sType, userDefType):
+def __closeSubprocessByHookingInto__(executable, port, function, sType, userDefType, quickVersion):
     ensureChecked(":Qt Creator_AppOutput_Core::Internal::OutputPaneToggleButton")
     output = waitForObject("{type='Core::OutputWindow' visible='1' windowTitle='Application Output Window'}")
     if port == None:
@@ -498,7 +497,7 @@ def __closeSubprocessByHookingInto__(executable, port, function, sType, userDefT
         if sType==SubprocessType.USER_DEFINED:
             sendEvent("QCloseEvent", "{type='%s' unnamed='1' visible='1'}" % userDefType)
         else:
-            sendEvent("QCloseEvent", "{type='%s' unnamed='1' visible='1'}" % SubprocessType.getWindowType(sType))
+            sendEvent("QCloseEvent", "{type='%s' unnamed='1' visible='1'}" % SubprocessType.getWindowType(sType, quickVersion))
         resetApplicationContextToCreator()
     else:
         try:
@@ -512,12 +511,15 @@ def __closeSubprocessByHookingInto__(executable, port, function, sType, userDefT
             resetApplicationContextToCreator()
             __closeSubprocessByPushingStop__(sType)
     resetApplicationContextToCreator()
-    if not waitForProcessRunning(False) and waitFor("'exited with code' in str(output.plainText)", 10000):
+    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:
             __closeSubprocessByPushingStop__(sType)
         except:
             pass
+        if (platform.system() in ('Microsoft', 'Windows') and
+            'Listening on port %d for incoming connectionsdone' % port not in str(output.plainText)):
+            checkForStillRunningQmlExecutable([executable + ".exe"])
     return True
 
 # this helper tries to reset the current application context back
diff --git a/tests/system/shared/project_explorer.py b/tests/system/shared/project_explorer.py
index 07f0fe6af82423358e589feb06c51b1165a8f284..f6f0a78635b90a1b7b9d37411a30beddcdb1b3a3 100644
--- a/tests/system/shared/project_explorer.py
+++ b/tests/system/shared/project_explorer.py
@@ -301,10 +301,7 @@ def invokeContextMenuOnProject(projectName, menuItem):
                         str(projItem.text).replace("_", "\\_").replace(".", "\\."), 5, 5, 0)
     # Hack for Squish 5.0.1 handling menus of Qt5.2 on Mac (avoids crash) - remove asap
     if platform.system() == 'Darwin':
-        for obj in object.topLevelObjects():
-            if (className(obj) == "QMenu" and obj.visible):
-                activateItem(waitForObjectItem(obj, menuItem))
-                break
+        waitFor("macHackActivateContextMenuItem(menuItem)", 6000)
     else:
         activateItem(waitForObjectItem("{name='Project.Menu.Project' type='QMenu' visible='1' "
                                        "window=':Qt Creator_Core::Internal::MainWindow'}", menuItem))
diff --git a/tests/system/shared/qtcreator.py b/tests/system/shared/qtcreator.py
index 290d622ce7a5654f60f13d1adbe4002eda5c46b1..086aa9411e0b88ccdaf832343db5d05631fb9709 100644
--- a/tests/system/shared/qtcreator.py
+++ b/tests/system/shared/qtcreator.py
@@ -95,7 +95,7 @@ def waitForCleanShutdown(timeOut=10):
     shutdownDone = (str(appCtxt)=="")
     if platform.system() in ('Windows','Microsoft'):
         # cleaning helper for running on the build machines
-        __checkForQmlViewerAndQmlScene__()
+        checkForStillRunningQmlExecutable(['qmlviewer.exe', 'qmlscene.exe'])
         endtime = datetime.utcnow() + timedelta(seconds=timeOut)
         while not shutdownDone:
             # following work-around because os.kill() works for win not until python 2.7
@@ -120,8 +120,8 @@ def waitForCleanShutdown(timeOut=10):
             if not shutdownDone and datetime.utcnow() > endtime:
                 break
 
-def __checkForQmlViewerAndQmlScene__():
-    for qmlHelper in ['qmlviewer.exe', 'qmlscene.exe']:
+def checkForStillRunningQmlExecutable(possibleNames):
+    for qmlHelper in possibleNames:
         tasks = subprocess.Popen("tasklist /FI \"IMAGENAME eq %s\"" % qmlHelper, shell=True,
                                  stdout=subprocess.PIPE)
         output = tasks.communicate()[0]
diff --git a/tests/system/shared/utils.py b/tests/system/shared/utils.py
index 0d7c5f2050a6bccc1d0238a5f8cbe2e0384405b2..09d5a74c1e2e2cab7701e4b3a75864611ca88b4f 100644
--- a/tests/system/shared/utils.py
+++ b/tests/system/shared/utils.py
@@ -169,43 +169,6 @@ def which(program):
                 return cf
         return None
 
-signalObjects = {}
-
-# do not call this function directly - it's only a helper
-def __callbackFunction__(object, *args):
-    global signalObjects
-#    test.log("__callbackFunction__: "+objectMap.realName(object))
-    signalObjects[objectMap.realName(object)] += 1
-
-def waitForSignal(object, signal, timeout=30000):
-    global signalObjects
-    realName = prepareForSignal(object, signal)
-    beforeCount = signalObjects[realName]
-    waitFor("signalObjects[realName] > beforeCount", timeout)
-
-handledSignal = {}
-
-def prepareForSignal(object, signal):
-    global signalObjects
-    global handledSignal
-    overrideInstallLazySignalHandler()
-    realName = objectMap.realName(object)
-#    test.log("waitForSignal: "+realName)
-    if realName in handledSignal.keys():
-        if handledSignal[realName] != signal:
-            # The current implementation does not support this.
-            # When an object has two different handled signals, waitForSignal() will only wait
-            # for the first of them to be emitted.
-            test.warning("You are trying to handle two different signals from the same object.",
-                         "Adding %s to object %s, which already has handled signal %s. "
-                         "This can lead to unexpected results." % (signal, realName, handledSignal[realName]))
-    else:
-        handledSignal[realName] = signal
-    if not (realName in signalObjects):
-        signalObjects[realName] = 0
-    installLazySignalHandler(object, signal, "__callbackFunction__")
-    return realName
-
 # this function removes the user files of given pro file(s)
 # can be called with a single string object or a list of strings holding path(s) to
 # the pro file(s) returns False if it could not remove all user files or has been
diff --git a/tests/system/shared/workarounds.py b/tests/system/shared/workarounds.py
index 05a413eb574acd9c1ee9c4acf0fab9df484c3c35..f1cef9a2b887fa4067983d5c5efb1e32b818754a 100644
--- a/tests/system/shared/workarounds.py
+++ b/tests/system/shared/workarounds.py
@@ -30,6 +30,35 @@
 import urllib2
 import re
 
+############ functions not related to issues tracked inside jira ############
+
+def __checkWithoutWidget__(*args):
+    return className(args[0]) == 'QMenu' and args[0].visible
+
+def __checkWithWidget__(*args):
+    return (__checkWithoutWidget__(args[0])
+            and widgetContainsPoint(waitForObject(args[1]), args[0].mapToGlobal(QPoint(0 ,0))))
+
+# hack for activating context menus on Mac because of Squish5/Qt5.2 problems
+# param item a string holding the menu item to invoke (just the label)
+# param widget an object; if provided there will be an additional check if the menu's top left
+#              corner is placed on this widget
+def macHackActivateContextMenuItem(item, widget=None):
+    if widget:
+        func = __checkWithWidget__
+    else:
+        func = __checkWithoutWidget__
+    for obj in object.topLevelObjects():
+        try:
+            if func(obj, widget):
+                activateItem(waitForObjectItem(obj, item))
+                return True
+        except:
+            pass
+    return False
+
+################ workarounds for issues tracked inside jira #################
+
 JIRA_URL='https://bugreports.qt-project.org/browse'
 
 class JIRA:
diff --git a/tests/system/shared_data/qt_squish_mapping.tsv b/tests/system/shared_data/qt_squish_mapping.tsv
index f535d22373dc886f4ee8a69aeb860495e7cac2cb..8f2202f574384a6591f35bb42e240d4252e99721 100644
--- a/tests/system/shared_data/qt_squish_mapping.tsv
+++ b/tests/system/shared_data/qt_squish_mapping.tsv
@@ -29,3 +29,8 @@
 "5.0"	"4.8"	"macx-g++"	"~/QtSDK/src/creator-test-data/Squish5_48_Mac"
 "5.0"	"4.8"	"linux-g++"	"~/QtSDK/src/creator-test-data/Squish5_48_Linux32"
 "5.0"	"4.8"	"linux-g++-64"	"~/QtSDK/src/creator-test-data/Squish5_48_Linux64"
+"5.0"	"5.0"	"macx-clang"	"~/QtSDK/src/creator-test-data/Squish5_50_Mac"
+"5.0"	"5.0"	"linux-g++"	"~/QtSDK/src/creator-test-data/Squish5_50_Linux32"
+"5.0"	"5.0"	"linux-g++-64"	"~/QtSDK/src/creator-test-data/Squish5_50_Linux64"
+"5.0"	"5.0"	"win32-g++"	"C:\QtSDK\src\creator-test-data\Squish5_50_MinGW"
+"5.0"	"5.0"	"win32-msvc2010"	"C:\QtSDK\src\creator-test-data\Squish5_50_MSVC10"
diff --git a/tests/system/suite_CCOM/tst_CCOM01/test.py b/tests/system/suite_CCOM/tst_CCOM01/test.py
index b8a02903f0bc0315634227fadf9f4407d775261b..e65bfd737b16520b4cabd3c80a1743dc0309c3aa 100755
--- a/tests/system/suite_CCOM/tst_CCOM01/test.py
+++ b/tests/system/suite_CCOM/tst_CCOM01/test.py
@@ -59,7 +59,7 @@ def main():
         # try to build project
         test.log("Testing build configuration: " + config)
         invokeMenuItem("Build", "Build All")
-        waitForSignal("{type='ProjectExplorer::BuildManager' unnamed='1'}", "buildQueueFinished(bool)")
+        waitForCompile()
         # verify build successful
         ensureChecked(waitForObject(":Qt Creator_CompileOutput_Core::Internal::OutputPaneToggleButton"))
         compileOutput = waitForObject(":Qt Creator.Compile Output_Core::OutputWindow")
diff --git a/tests/system/suite_SCOM/tst_SCOM01/test.py b/tests/system/suite_SCOM/tst_SCOM01/test.py
index 7749cf516d93e08cf6ba0364d22e8646ea715d78..caf82c42e44df6282222b4b4db3096260d28d3ac 100644
--- a/tests/system/suite_SCOM/tst_SCOM01/test.py
+++ b/tests/system/suite_SCOM/tst_SCOM01/test.py
@@ -46,7 +46,7 @@ def main():
         # try to compile
         test.log("Testing build configuration: " + config)
         clickButton(waitForObject(":*Qt Creator.Build Project_Core::Internal::FancyToolButton"))
-        waitForSignal("{type='ProjectExplorer::BuildManager' unnamed='1'}", "buildQueueFinished(bool)")
+        waitForCompile()
         # check output if build successful
         ensureChecked(waitForObject(":Qt Creator_CompileOutput_Core::Internal::OutputPaneToggleButton"))
         waitFor("object.exists(':*Qt Creator.Cancel Build_QToolButton')", 20000)
diff --git a/tests/system/suite_SCOM/tst_SCOM04/test.py b/tests/system/suite_SCOM/tst_SCOM04/test.py
index 2d502edad93d034ff26c257e936e22c7472a67fc..7cea5b1c73e049e175041a5546365f5da9d2e5b1 100644
--- a/tests/system/suite_SCOM/tst_SCOM04/test.py
+++ b/tests/system/suite_SCOM/tst_SCOM04/test.py
@@ -58,7 +58,7 @@ def main():
         test.log("Testing build configuration: " + config)
         clickButton(waitForObject(":*Qt Creator.Build Project_Core::Internal::FancyToolButton"))
         # wait until build finished
-        waitForSignal("{type='ProjectExplorer::BuildManager' unnamed='1'}", "buildQueueFinished(bool)")
+        waitForCompile()
         # open issues list view
         ensureChecked(waitForObject(":Qt Creator_Issues_Core::Internal::OutputPaneToggleButton"))
         issuesView = waitForObject(":Qt Creator.Issues_QListView")
diff --git a/tests/system/suite_SCOM/tst_SCOM05/test.py b/tests/system/suite_SCOM/tst_SCOM05/test.py
index 39f2a3489ed8d83dc9fb27c3df969b9b5eb2bc28..4161697a7aa6a37202bb37ecd8f5ee93f7df96fb 100644
--- a/tests/system/suite_SCOM/tst_SCOM05/test.py
+++ b/tests/system/suite_SCOM/tst_SCOM05/test.py
@@ -54,7 +54,7 @@ def main():
     # build project 2
     clickButton(waitForObject(":*Qt Creator.Build Project_Core::Internal::FancyToolButton"))
     # wait for build to complete
-    waitForSignal("{type='ProjectExplorer::BuildManager' unnamed='1'}", "buildQueueFinished(bool)")
+    waitForCompile()
     # check output if build successful
     ensureChecked(waitForObject(":Qt Creator_CompileOutput_Core::Internal::OutputPaneToggleButton"))
     outputLog = str(waitForObject(":Qt Creator.Compile Output_Core::OutputWindow").plainText)
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 8cded60096b86d3bf6805a5068e9e329f126bd53..22a669d73bf08756620b67fedb0635f6053e71c8 100644
--- a/tests/system/suite_debugger/tst_build_new_project/test.py
+++ b/tests/system/suite_debugger/tst_build_new_project/test.py
@@ -42,6 +42,6 @@ def main():
     for kit, config in availableConfigs:
         selectBuildConfig(len(checkedTargets), kit, config)
         test.log("Testing build configuration: " + config)
-        if not runAndCloseApp():
-            return
+        if runAndCloseApp() == None:
+            checkCompile()
     invokeMenuItem("File", "Exit")
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 ab5eceea2873a02175b485a7765fc9630123994c..0d5c68a2609bd83fc0a6b979e3dcf2f4f135b6f9 100644
--- a/tests/system/suite_debugger/tst_debug_empty_main/test.py
+++ b/tests/system/suite_debugger/tst_debug_empty_main/test.py
@@ -103,7 +103,7 @@ def performDebugging(workingDir, projectName, checkedTargets):
         verifyBuildConfig(len(checkedTargets), kit, True)
         progressBarWait(10000)
         invokeMenuItem("Build", "Rebuild All")
-        waitForSignal("{type='ProjectExplorer::BuildManager' unnamed='1'}", "buildQueueFinished(bool)")
+        waitForCompile()
         isMsvc = isMsvcConfig(len(checkedTargets), kit)
         allowAppThroughWinFW(workingDir, projectName, False)
         clickButton(waitForObject(":*Qt Creator.Start Debugging_Core::Internal::FancyToolButton"))
diff --git a/tests/system/suite_debugger/tst_simple_analyze/test.py b/tests/system/suite_debugger/tst_simple_analyze/test.py
index 086cdbcec4c79d018db79418b26457d93493ebe6..d3a5a155db38a3d15f33b6f6d8b81331028cea35 100644
--- a/tests/system/suite_debugger/tst_simple_analyze/test.py
+++ b/tests/system/suite_debugger/tst_simple_analyze/test.py
@@ -75,8 +75,7 @@ def performTest(workingDir, projectName, targetCount, availableConfigs, disableO
             switchViewTo(ViewConstants.EDIT)
         # explicitly build before start debugging for adding the executable as allowed program to WinFW
         invokeMenuItem("Build", "Rebuild All")
-        waitForSignal("{type='ProjectExplorer::BuildManager' unnamed='1'}",
-                      "buildQueueFinished(bool)")
+        waitForCompile()
         if not checkCompile():
             test.fatal("Compile had errors... Skipping current build config")
             continue
@@ -131,6 +130,8 @@ def performTest(workingDir, projectName, targetCount, availableConfigs, disableO
                                  "For two calls, median and longest time must be the same.")
         deleteAppFromWinFW(workingDir, projectName, False)
         progressBarWait(15000, False)   # wait for "Build" progressbar to disappear
+        clickButton(waitForObject(":Analyzer Toolbar.Clear_QToolButton"))
+        test.verify(waitFor("model.rowCount() == 0", 3000), "Analyzer results cleared.")
 
 def compareEventsTab(model, file):
     significantColumns = [0, 1, 4, 9]
diff --git a/tests/system/suite_debugger/tst_simple_debug/test.py b/tests/system/suite_debugger/tst_simple_debug/test.py
index 6b17cd3a38fcdc071cc413e957bbc7a9dd3032b8..f1365d6b0c3e5c8680741e3d981d6c95624eaf91 100644
--- a/tests/system/suite_debugger/tst_simple_debug/test.py
+++ b/tests/system/suite_debugger/tst_simple_debug/test.py
@@ -62,6 +62,7 @@ def main():
                                         {os.path.join(workingDir, projectName, "qml", projectName, "main.qml"):13}]
             # Only use 4.7.4 to work around QTBUG-25187
             availableConfigs = iterateBuildConfigs(len(checkedTargets), "Debug")
+            progressBarWait()
             if not availableConfigs:
                 test.fatal("Haven't found a suitable Qt version (need Qt 4.7.4) - leaving without debugging.")
             for kit, config in availableConfigs:
@@ -70,8 +71,7 @@ def main():
                 verifyBuildConfig(len(checkedTargets), kit, True, enableQmlDebug=True)
                 # explicitly build before start debugging for adding the executable as allowed program to WinFW
                 invokeMenuItem("Build", "Rebuild All")
-                waitForSignal("{type='ProjectExplorer::BuildManager' unnamed='1'}",
-                              "buildQueueFinished(bool)", 300000)
+                waitForCompile(300000)
                 if not checkCompile():
                     test.fatal("Compile had errors... Skipping current build config")
                     continue
diff --git a/tests/system/suite_editors/tst_qml_editor/test.py b/tests/system/suite_editors/tst_qml_editor/test.py
index 4c427605326284613a3944b4207aab3f2f6b9498..7a24659d059b94f38fc871552829c286b9762121 100644
--- a/tests/system/suite_editors/tst_qml_editor/test.py
+++ b/tests/system/suite_editors/tst_qml_editor/test.py
@@ -60,10 +60,6 @@ def testRenameId():
     files = ["Core.ContextMenu\\.qml", "Core.GridMenu\\.qml", "Core.ListMenu\\.qml", "focus\\.qml"]
     originalTexts = {}
     editor = waitForObject(":Qt Creator_QmlJSEditor::QmlJSTextEditorWidget")
-    # temporarily store editor content for synchronizing purpose
-    # usage of formerTxt is done because I couldn't get waitForSignal() to work
-    # it always stored a different object into the signalObjects map as it looked up afterwards
-    # although used objectMap.realName() for both
     formerTxt = editor.plainText
     for file in files:
         openDocument("focus.QML.qml.%s" % file)
diff --git a/tests/system/suite_general/tst_build_speedcrunch/test.py b/tests/system/suite_general/tst_build_speedcrunch/test.py
index e5f42d75bc50fc61db1a1b173e81b0eeaccfed5e..ec1baab897b21fd76269841de8b6538405f4b8da 100644
--- a/tests/system/suite_general/tst_build_speedcrunch/test.py
+++ b/tests/system/suite_general/tst_build_speedcrunch/test.py
@@ -65,9 +65,9 @@ def main():
             continue
         test.log("Testing build configuration: " + config)
         invokeMenuItem("Build", "Run qmake")
-        waitForSignal("{type='ProjectExplorer::BuildManager' unnamed='1'}", "buildQueueFinished(bool)")
+        waitForCompile()
         invokeMenuItem("Build", "Rebuild All")
-        waitForSignal("{type='ProjectExplorer::BuildManager' unnamed='1'}", "buildQueueFinished(bool)", 300000)
+        waitForCompile(300000)
         checkCompile()
         checkLastBuild()
 
diff --git a/tests/system/suite_general/tst_cmake_speedcrunch/test.py b/tests/system/suite_general/tst_cmake_speedcrunch/test.py
index 345fe370e60f0303702a8b16096bed4ad8c5f2e3..6fd6fc94fb5f5e5ab34bf5da13db7f2be5aaf521 100644
--- a/tests/system/suite_general/tst_cmake_speedcrunch/test.py
+++ b/tests/system/suite_general/tst_cmake_speedcrunch/test.py
@@ -56,7 +56,7 @@ def main():
     invokeMenuItem("Build", "Rebuild All")
 
     # Wait for, and test if the build succeeded
-    waitForSignal("{type='ProjectExplorer::BuildManager' unnamed='1'}", "buildQueueFinished(bool)", 300000)
+    waitForCompile(300000)
     checkCompile()
     checkLastBuild()
 
diff --git a/tests/system/suite_general/tst_default_settings/test.py b/tests/system/suite_general/tst_default_settings/test.py
index cc30717354aeeae590b235fc0f9ee6141b850699..635c1559313efcad8a2db24c30665b2201d939ae 100644
--- a/tests/system/suite_general/tst_default_settings/test.py
+++ b/tests/system/suite_general/tst_default_settings/test.py
@@ -217,8 +217,8 @@ def __getExpectedDebuggers__():
     debuggers = ["gdb", "lldb"]
     result.extend(filter(None, map(which, debuggers)))
     if platform.system() == 'Darwin':
-        xcodeLLDB = "/Applications/Xcode.app/Contents/Developer/usr/bin/lldb"
-        if os.path.exists(xcodeLLDB):
+        xcodeLLDB = getOutputFromCmdline("xcrun --find lldb").strip("\n")
+        if xcodeLLDB and os.path.exists(xcodeLLDB) and xcodeLLDB not in result:
             result.append(xcodeLLDB)
     return result
 
diff --git a/tests/system/suite_qtquick/tst_qtquick_creation/test.py b/tests/system/suite_qtquick/tst_qtquick_creation/test.py
index 48ba6fb46939552ef2e4e8218891dda28026ab38..ba66e594d01e88dab81551a7b8d3f144f152833c 100644
--- a/tests/system/suite_qtquick/tst_qtquick_creation/test.py
+++ b/tests/system/suite_qtquick/tst_qtquick_creation/test.py
@@ -42,7 +42,7 @@ def main():
                  % (qVer, Targets.getStringForTarget(targ)))
         result = modifyRunSettingsForHookInto(projectName, len(checkedTargets), 11223)
         invokeMenuItem("Build", "Build All")
-        waitForSignal("{type='ProjectExplorer::BuildManager' unnamed='1'}", "buildQueueFinished(bool)")
+        waitForCompile()
         if not checkCompile():
             test.fatal("Compile failed")
         else:
@@ -54,14 +54,16 @@ def main():
                 if result:
                     result = runAndCloseApp(True, projectName, 11223,
                                             "subprocessFunctionQuick%d" % qVer,
-                                            SubprocessType.QT_QUICK_APPLICATION)
+                                            SubprocessType.QT_QUICK_APPLICATION, quickVersion=qVer)
                 else:
                     result = runAndCloseApp(sType=SubprocessType.QT_QUICK_APPLICATION)
                 removeExecutableAsAttachableAUT(projectName, 11223)
                 deleteAppFromWinFW(workingDir, projectName)
             else:
                 result = runAndCloseApp()
-            if result:
+            if result == None:
+                checkCompile()
+            else:
                 logApplicationOutput()
         invokeMenuItem("File", "Close All Projects and Editors")
 
diff --git a/tests/system/suite_qtquick/tst_qtquick_creation3/test.py b/tests/system/suite_qtquick/tst_qtquick_creation3/test.py
index 9ef1f8d5c13384d81368d99c652f054f2ee2a927..645a1b48defee00bc066c05c3e3b88fbec3ba16d 100644
--- a/tests/system/suite_qtquick/tst_qtquick_creation3/test.py
+++ b/tests/system/suite_qtquick/tst_qtquick_creation3/test.py
@@ -45,14 +45,16 @@ def main():
             result = addExecutableAsAttachableAUT(qmlViewer, 11223)
             allowAppThroughWinFW(qmlViewerPath, qmlViewer, None)
             if result:
-                result = runAndCloseApp(True, qmlViewer, 11223, sType=SubprocessType.QT_QUICK_UI)
+                result = runAndCloseApp(True, qmlViewer, 11223, sType=SubprocessType.QT_QUICK_UI, quickVersion=quickVersion)
             else:
                 result = runAndCloseApp(sType=SubprocessType.QT_QUICK_UI)
             removeExecutableAsAttachableAUT(qmlViewer, 11223)
             deleteAppFromWinFW(qmlViewerPath, qmlViewer)
         else:
             result = runAndCloseApp(sType=SubprocessType.QT_QUICK_UI)
-        if result:
+        if result == None:
+            checkCompile()
+        else:
             logApplicationOutput()
         invokeMenuItem("File", "Close All Projects and Editors")
     invokeMenuItem("File", "Exit")
diff --git a/tests/system/suite_qtquick/tst_qtquick_creation4/test.py b/tests/system/suite_qtquick/tst_qtquick_creation4/test.py
index 570d38c6432896913db77b1df24fb3ef637e0edc..d9ee75ee9a45e98a472ca0e164df1e7a55d9e57a 100644
--- a/tests/system/suite_qtquick/tst_qtquick_creation4/test.py
+++ b/tests/system/suite_qtquick/tst_qtquick_creation4/test.py
@@ -41,7 +41,7 @@ def main():
         test.log("Building project Qt Quick %d Extension Plugin (%s)"
                  % (quickVer, Targets.getStringForTarget(targ)))
         invokeMenuItem("Build","Build All")
-        waitForSignal("{type='ProjectExplorer::BuildManager' unnamed='1'}", "buildQueueFinished(bool)")
+        waitForCompile()
         checkCompile()
         checkLastBuild()
         invokeMenuItem("File", "Close All Projects and Editors")
diff --git a/tests/system/suite_tools/tst_designer_autocomplete/test.py b/tests/system/suite_tools/tst_designer_autocomplete/test.py
index 9ccbfc2906c7cc17ced76932122cd33bd3406b8f..fe3f7896d4849af5527e853559f77069ee95f1e7 100644
--- a/tests/system/suite_tools/tst_designer_autocomplete/test.py
+++ b/tests/system/suite_tools/tst_designer_autocomplete/test.py
@@ -42,7 +42,11 @@ def main():
         if buttonName:
             openContextMenu(waitForObject("{container=':*Qt Creator.FormEditorStack_Designer::Internal::FormEditorStack'"
                                           "text='PushButton' type='QPushButton' visible='1'}"), 5, 5, 1)
-            activateItem(waitForObjectItem("{type='QMenu' unnamed='1' visible='1'}", "Change objectName..."))
+            # hack for Squish5/Qt5.2 problems of handling menus on Mac - remove asap
+            if platform.system() == 'Darwin':
+                waitFor("macHackActivateContextMenuItem('Change objectName...')", 6000)
+            else:
+                activateItem(waitForObjectItem("{type='QMenu' unnamed='1' visible='1'}", "Change objectName..."))
             typeLines(waitForObject(":FormEditorStack_qdesigner_internal::PropertyLineEdit"), buttonName)
         else:
             # Verify that everything works without ever changing the name
diff --git a/tests/system/suite_tools/tst_designer_goto_slot/test.py b/tests/system/suite_tools/tst_designer_goto_slot/test.py
index b6611907786bf2483ebe9f79d4664efd30fe5fe1..e11d0afb1da4602952a5213dc98183133e3b10ae 100644
--- a/tests/system/suite_tools/tst_designer_goto_slot/test.py
+++ b/tests/system/suite_tools/tst_designer_goto_slot/test.py
@@ -47,7 +47,11 @@ def main():
     for con in connections:
         selectFromLocator("mainwindow.ui")
         openContextMenu(waitForObject(con[0]), 5, 5, 0)
-        activateItem(waitForObjectItem("{type='QMenu' unnamed='1' visible='1'}", "Go to slot..."))
+        # hack for Squish 5/Qt5.2 problems of handling menus on Mac - remove asap
+        if platform.system() == 'Darwin':
+            waitFor("macHackActivateContextMenuItem('Go to slot...', con[0])", 6000)
+        else:
+            activateItem(waitForObjectItem("{type='QMenu' unnamed='1' visible='1'}", "Go to slot..."))
         waitForObjectItem(":Select signal.signalList_QTreeWidget", con[1])
         clickItem(":Select signal.signalList_QTreeWidget", con[1], 5, 5, 0, Qt.LeftButton)
         clickButton(waitForObject(":Go to slot.OK_QPushButton"))
diff --git a/tests/system/suite_tools/tst_git_clone/test.py b/tests/system/suite_tools/tst_git_clone/test.py
index c9a91b5d87f53e1346f9106c704035f76c6ba707..fc33f75a6ca395443b081aa2f6e51ae588dec020 100644
--- a/tests/system/suite_tools/tst_git_clone/test.py
+++ b/tests/system/suite_tools/tst_git_clone/test.py
@@ -86,7 +86,7 @@ def main():
         test.compare(cloneDirEdit.text, "p-qt-labs-jom")
         replaceEditorContent(cloneDirEdit, cloneDir)
         clickButton(waitForObject(":Next_QPushButton"))
-        cloneLog = findObject(":Git Repository Clone.logPlainTextEdit_QPlainTextEdit")
+        cloneLog = waitForObject(":Git Repository Clone.logPlainTextEdit_QPlainTextEdit", 1000)
         test.compare(waitForObject(":Git Repository Clone.Result._QLabel").text,
                      "Cloning started...")
         if button == "Cancel immediately":
diff --git a/tests/system/suite_tools/tst_git_local/test.py b/tests/system/suite_tools/tst_git_local/test.py
index 9a01fd630a4dd399f78d4dc9ebcf6d77aa2e0a75..a67d24783bb4c0fb006d943562d6f395fd16378c 100644
--- a/tests/system/suite_tools/tst_git_local/test.py
+++ b/tests/system/suite_tools/tst_git_local/test.py
@@ -29,6 +29,8 @@
 
 source("../../shared/qtcreator.py")
 
+# necessary to not use symbolic links for the parent path of the git project
+srcPath = os.path.realpath(srcPath)
 projectName = "gitProject"
 
 # TODO: Make selecting changes possible
@@ -38,6 +40,8 @@ def commit(commitMessage, expectedLogMessage):
     invokeMenuItem("Tools", "Git", "Local Repository", "Commit...")
     replaceEditorContent(waitForObject(":Description.description_Utils::CompletingTextEdit"), commitMessage)
     ensureChecked(waitForObject(":Files.Check all_QCheckBox"))
+    checkOrFixCommitterInformation('invalidAuthorLabel', 'authorLineEdit', 'Nobody')
+    checkOrFixCommitterInformation('invalidEmailLabel', 'emailLineEdit', 'nobody@nowhere.com')
     clickButton(waitForObject(":splitter.Commit File(s)_VcsBase::QActionPushButton"))
     vcsLog = waitForObject("{type='QPlainTextEdit' unnamed='1' visible='1' "
                            "window=':Qt Creator_Core::Internal::MainWindow'}").plainText
@@ -51,6 +55,22 @@ def verifyItemsInGit(commitMessages):
     verifyItemOrder(commitMessages, plainText)
     return plainText
 
+def createLocalGitConfig(path):
+    config = os.path.join(path, "config")
+    test.verify(os.path.exists(config), "Verifying if .git/config exists.")
+    file = open(config, "a")
+    file.write("\n[user]\n\temail = nobody@nowhere.com\n\tname = Nobody\n")
+    file.close()
+
+def checkOrFixCommitterInformation(labelName, lineEditName, expected):
+    lineEd = waitForObject("{name='%s' type='QLineEdit' visible='1'}" % lineEditName)
+    if not (test.compare(lineEd.text, expected, "Verifying commit information matches local config")
+        and test.verify(checkIfObjectExists("{name='%s' type='QLabel' visible='1'}" % labelName,
+                                            False, 1000),
+                                            "Verifying invalid label is missing")):
+        test.log("Commit information invalid or missing - entering dummy value (%s)" % expected)
+        replaceEditorContent(lineEd, expected)
+
 def verifyClickCommit():
     gitEditor = waitForObject(":Qt Creator_Git::Internal::GitEditor")
     fileName = waitForObject(":Qt Creator_FilenameQComboBox")
@@ -80,7 +100,7 @@ def verifyClickCommit():
     waitFor('len(str(diffShow.plainText)) != 0', 5000)
     show = str(diffShow.plainText)
     expected = [{"commit %s" % commit:False},
-                {"Author: (\w|\s)+ <(\w|[-.])+@(\w|[-.])+>": True},
+                {"Author: Nobody <nobody@nowhere.com>": False},
                 {"Date:\s+\w{3} \w{3} \d{1,2} \d{2}:\d{2}:\d{2} \d{4}.*":True},
                 {"Branches: master":False}]
     for line, exp in zip(show.splitlines(), expected):
@@ -116,7 +136,7 @@ def main():
     if not startedWithoutPluginError():
         return
     createProject_Qt_GUI(srcPath, projectName, addToVersionControl = "Git")
-    if isQt4Build and not object.exists(":Qt Creator_VersionControl_Core::Internal::OutputPaneToggleButton"):
+    if not object.exists(":Qt Creator_VersionControl_Core::Internal::OutputPaneToggleButton"):
         clickButton(waitForObject(":Qt Creator_Core::Internal::OutputPaneManageButton"))
         activateItem(waitForObjectItem("{type='QMenu' unnamed='1' visible='1'}", "Version Control"))
     ensureChecked(waitForObject(":Qt Creator_VersionControl_Core::Internal::OutputPaneToggleButton"))
@@ -125,6 +145,7 @@ def main():
     test.verify("Initialized empty Git repository in %s"
                 % os.path.join(srcPath, projectName, ".git").replace("\\", "/") in str(vcsLog),
                 "Has initialization of repo been logged:\n%s " % vcsLog)
+    createLocalGitConfig(os.path.join(srcPath, projectName, ".git"))
     commitMessages = [commit("Initial Commit", "Committed 5 file(s).")]
     clickButton(waitForObject(":*Qt Creator.Clear_QToolButton"))
     addCPlusPlusFileToCurrentProject("pointless_header.h", "C++ Header File", addToVCS = "Git")