From f506104f2915793c3e94e2b533f0acba9a34958b Mon Sep 17 00:00:00 2001
From: Orgad Shaneh <orgad.shaneh@audiocodes.com>
Date: Mon, 20 Jan 2014 09:20:08 +0200
Subject: [PATCH] CppTools: Cleanup header/source test

Dynamically create data files in tempPath and clean them up when
finished.

Change-Id: Ie78f557b185b264acc0d0f5814646c203d8a93f4
Reviewed-by: Petar Perisin <petar.perisin@gmail.com>
Reviewed-by: Erik Verbruggen <erik.verbruggen@digia.com>
---
 src/plugins/cpptools/cppheadersource_test.cpp | 35 ++++++++++++++++---
 src/plugins/cpptools/cpptoolsplugin.h         |  4 +++
 tests/cppheadersource/includesub/foo.cpp      |  1 -
 .../cppheadersource/includesub/include/foo.h  |  1 -
 tests/cppheadersource/samedir/foo.cpp         |  1 -
 tests/cppheadersource/samedir/foo.h           |  1 -
 6 files changed, 34 insertions(+), 9 deletions(-)
 delete mode 100644 tests/cppheadersource/includesub/foo.cpp
 delete mode 100644 tests/cppheadersource/includesub/include/foo.h
 delete mode 100644 tests/cppheadersource/samedir/foo.cpp
 delete mode 100644 tests/cppheadersource/samedir/foo.h

diff --git a/src/plugins/cpptools/cppheadersource_test.cpp b/src/plugins/cpptools/cppheadersource_test.cpp
index bbc4efa24ff..c047d0fe43a 100644
--- a/src/plugins/cpptools/cppheadersource_test.cpp
+++ b/src/plugins/cpptools/cppheadersource_test.cpp
@@ -30,13 +30,26 @@
 #include "cpptoolsplugin.h"
 #include "cpptoolsreuse.h"
 
-#include <coreplugin/testdatadir.h>
+#include <utils/fileutils.h>
 
 #include <QDir>
 #include <QtTest>
 
 static inline QString _(const QByteArray &ba) { return QString::fromLatin1(ba, ba.size()); }
 
+static void createTempFile(const QString &fileName)
+{
+    QFile file(fileName);
+    QDir(QFileInfo(fileName).absolutePath()).mkpath(_("."));
+    file.open(QFile::WriteOnly);
+    file.close();
+}
+
+static QString baseTestDir()
+{
+    return QDir::tempPath() + _("/qtc_cppheadersource/");
+}
+
 namespace CppTools {
 namespace Internal {
 
@@ -46,11 +59,13 @@ void CppToolsPlugin::test_headersource()
     QFETCH(QString, headerFileName);
 
     bool wasHeader;
-    Core::Tests::TestDataDir dataDir(_(SRCDIR "/../../../tests/cppheadersource/")
-        + _(QTest::currentDataTag()));
+    const QString baseDir = baseTestDir();
+    QDir path = QDir(baseDir + _(QTest::currentDataTag()));
 
-    const QString sourcePath = dataDir.file(sourceFileName);
-    const QString headerPath = dataDir.file(headerFileName);
+    const QString sourcePath = path.absoluteFilePath(sourceFileName);
+    const QString headerPath = path.absoluteFilePath(headerFileName);
+    createTempFile(sourcePath);
+    createTempFile(headerPath);
 
     clearHeaderSourceCache();
     QCOMPARE(correspondingHeaderOrSource(sourcePath, &wasHeader), headerPath);
@@ -68,5 +83,15 @@ void CppToolsPlugin::test_headersource_data()
     QTest::newRow("includesub") << _("foo.cpp") << _("include/foo.h");
 }
 
+void CppToolsPlugin::initTestCase()
+{
+    QDir(baseTestDir()).mkpath(_("."));
+}
+
+void CppToolsPlugin::cleanupTestCase()
+{
+    Utils::FileUtils::removeRecursively(Utils::FileName::fromString(baseTestDir()));
+}
+
 } // namespace Internal
 } // namespace CppTools
diff --git a/src/plugins/cpptools/cpptoolsplugin.h b/src/plugins/cpptools/cpptoolsplugin.h
index c5d573e1cb9..d99fcb738b7 100644
--- a/src/plugins/cpptools/cpptoolsplugin.h
+++ b/src/plugins/cpptools/cpptoolsplugin.h
@@ -77,6 +77,10 @@ public slots:
 
 private slots:
 #ifdef WITH_TESTS
+    // Init/Cleanup methods implemented in cppheadersource_test.cpp
+    void initTestCase();
+    void cleanupTestCase();
+
     void test_codegen_public_in_empty_class();
     void test_codegen_public_in_nonempty_class();
     void test_codegen_public_before_protected();
diff --git a/tests/cppheadersource/includesub/foo.cpp b/tests/cppheadersource/includesub/foo.cpp
deleted file mode 100644
index e8e1f1fa29f..00000000000
--- a/tests/cppheadersource/includesub/foo.cpp
+++ /dev/null
@@ -1 +0,0 @@
-// Comment
diff --git a/tests/cppheadersource/includesub/include/foo.h b/tests/cppheadersource/includesub/include/foo.h
deleted file mode 100644
index e8e1f1fa29f..00000000000
--- a/tests/cppheadersource/includesub/include/foo.h
+++ /dev/null
@@ -1 +0,0 @@
-// Comment
diff --git a/tests/cppheadersource/samedir/foo.cpp b/tests/cppheadersource/samedir/foo.cpp
deleted file mode 100644
index e8e1f1fa29f..00000000000
--- a/tests/cppheadersource/samedir/foo.cpp
+++ /dev/null
@@ -1 +0,0 @@
-// Comment
diff --git a/tests/cppheadersource/samedir/foo.h b/tests/cppheadersource/samedir/foo.h
deleted file mode 100644
index e8e1f1fa29f..00000000000
--- a/tests/cppheadersource/samedir/foo.h
+++ /dev/null
@@ -1 +0,0 @@
-// Comment
-- 
GitLab