From 16becbd29c44e664904a7fb2d698f79fc08b2731 Mon Sep 17 00:00:00 2001
From: Nikolai Kosjar <nikolai.kosjar@theqtcompany.com>
Date: Wed, 10 Dec 2014 10:27:42 +0100
Subject: [PATCH] Plugin Tests: Create settings dir with QTemporaryDir

Create a clean and unique settings directory for "-test" runs if no
settings path is provided explicitly.

Change-Id: Ida2f5a74d42a5292963dd8d5d1f9dcddcdd24fd4
Reviewed-by: Christian Stenger <christian.stenger@theqtcompany.com>
---
 src/app/main.cpp | 11 ++++++++---
 1 file changed, 8 insertions(+), 3 deletions(-)

diff --git a/src/app/main.cpp b/src/app/main.cpp
index 301ec9a878d..b137f9ad737 100644
--- a/src/app/main.cpp
+++ b/src/app/main.cpp
@@ -56,6 +56,7 @@
 #include <QApplication>
 #include <QMessageBox>
 #include <QStandardPaths>
+#include <QTemporaryDir>
 
 #ifdef ENABLE_QT_BREAKPAD
 #include <qtsystemexceptionhandler.h>
@@ -338,10 +339,14 @@ int main(int argc, char **argv)
             testOptionProvided = true;
         }
     }
+    QScopedPointer<QTemporaryDir> temporaryCleanSettingsDir;
     if (settingsPath.isEmpty() && testOptionProvided) {
-        settingsPath = QDir::tempPath() + QString::fromLatin1("/qtc-%1-test-settings")
-                .arg(QLatin1String(Core::Constants::IDE_VERSION_LONG));
-        settingsPath = QDir::cleanPath(settingsPath);
+        const QString settingsPathTemplate = QDir::cleanPath(QDir::tempPath()
+            + QString::fromLatin1("/qtc-test-settings-XXXXXX"));
+        temporaryCleanSettingsDir.reset(new QTemporaryDir(settingsPathTemplate));
+        if (!temporaryCleanSettingsDir->isValid())
+            return 1;
+        settingsPath = temporaryCleanSettingsDir->path();
     }
     if (!settingsPath.isEmpty())
         QSettings::setPath(QSettings::IniFormat, QSettings::UserScope, settingsPath);
-- 
GitLab