Utils: Introduce a TemporaryDirectory and TemporaryFile class

Both wrap the corresponding Qt class, but make sure all temporary files
or directories are created inside a "master temporary directory".

Change-Id: I55461be507c828c965224c02863ea5ed9bbf9498
Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
This commit is contained in:
Tobias Hunger
2017-01-19 16:44:22 +01:00
committed by Tim Jenssen
parent e6017c40fc
commit c6f90e575e
64 changed files with 324 additions and 153 deletions

View File

@@ -42,9 +42,9 @@
#include <cplusplus/LookupContext.h>
#include <utils/qtcassert.h>
#include <utils/runextensions.h>
#include <utils/temporarydirectory.h>
#include <QCoreApplication>
#include <QDir>
#include <QElapsedTimer>
#include <QRegularExpression>
@@ -72,10 +72,9 @@ public:
WriteTaskFileForDiagnostics()
: m_processedDiagnostics(0)
{
const QString fileName = QDir::tempPath()
+ QLatin1String("/qtc_findErrorsIndexing.diagnostics.")
+ QDateTime::currentDateTime().toString(QLatin1String("yyMMdd_HHmm"))
+ QLatin1String(".tasks");
const QString fileName = Utils::TemporaryDirectory::masterDirectoryPath()
+ "/qtc_findErrorsIndexing.diagnostics."
+ QDateTime::currentDateTime().toString("yyMMdd_HHmm") + ".tasks";
m_file.setFileName(fileName);
Q_ASSERT(m_file.open(QIODevice::WriteOnly | QIODevice::Text));

View File

@@ -29,10 +29,10 @@
#include <utils/fileutils.h>
#include <utils/qtcassert.h>
#include <utils/temporarydirectory.h>
#include <QtTest>
#include <QDebug>
#include <QDir>
/*!
Tests for various parts of the code generation. Well, okay, currently it only
@@ -527,7 +527,7 @@ void CppToolsPlugin::test_codegen_definition_middle_member()
"\n"
"}\n"
"\n"
"int y;\n").arg(QDir::tempPath()).toLatin1();
"int y;\n").arg(Utils::TemporaryDirectory::masterDirectoryPath()).toLatin1();
Document::Ptr sourceDocument = createDocumentAndFile(&temporaryDir, "file.cpp", sourceText, 4U);
QVERIFY(sourceDocument);

View File

@@ -33,6 +33,7 @@
#include <cpptools/cppprojectfile.h>
#include <projectexplorer/project.h>
#include <utils/algorithm.h>
#include <utils/temporarydirectory.h>
#include <cplusplus/CppDocument.h>
#include <cplusplus/Token.h>
@@ -445,9 +446,10 @@ Dumper::Dumper(const CPlusPlus::Snapshot &globalSnapshot, const QString &logFile
QString logFileId_ = logFileId;
if (!logFileId_.isEmpty())
logFileId_.prepend(QLatin1Char('_'));
const QString logFileName = QDir::tempPath() + QString::fromLatin1("/qtc-codemodelinspection")
const QString logFileName = ::Utils::TemporaryDirectory::masterDirectoryPath()
+ "/qtc-codemodelinspection"
+ ideRevision_
+ QDateTime::currentDateTime().toString(QLatin1String("_yyMMdd_hhmmss"))
+ QDateTime::currentDateTime().toString("_yyMMdd_hhmmss")
+ logFileId_
+ QLatin1String(".txt");

View File

@@ -29,6 +29,7 @@
#include "cppfilesettingspage.h"
#include <utils/fileutils.h>
#include <utils/temporarydirectory.h>
#include <QDir>
#include <QtTest>
@@ -45,7 +46,7 @@ static void createTempFile(const QString &fileName)
static QString baseTestDir()
{
return QDir::tempPath() + _("/qtc_cppheadersource/");
return Utils::TemporaryDirectory::masterDirectoryPath() + "/qtc_cppheadersource/";
}
namespace CppTools {

View File

@@ -43,6 +43,7 @@
#include <cplusplus/CppDocument.h>
#include <utils/executeondestruction.h>
#include <utils/fileutils.h>
#include <utils/temporarydirectory.h>
#include <QtTest>
@@ -83,7 +84,7 @@ QString TestDocument::filePath() const
return QDir::cleanPath(m_baseDirectory + QLatin1Char('/') + m_fileName);
if (!QFileInfo(m_fileName).isAbsolute())
return QDir::tempPath() + QLatin1Char('/') + m_fileName;
return Utils::TemporaryDirectory::masterDirectoryPath() + '/' + m_fileName;
return m_fileName;
}
@@ -301,8 +302,8 @@ ProjectInfo ProjectOpenerAndCloser::open(const QString &projectFile, bool config
}
TemporaryDir::TemporaryDir()
: m_temporaryDir(QFileInfo(QDir::tempPath()).canonicalFilePath()
+ QLatin1String("/qtcreator-tests-XXXXXX"))
: m_temporaryDir(QFileInfo(Utils::TemporaryDirectory::masterDirectoryPath()).canonicalFilePath()
+ "/qtcreator-tests-XXXXXX")
, m_isValid(m_temporaryDir.isValid())
{
}

View File

@@ -28,9 +28,9 @@
#include "cpptools_global.h"
#include <cplusplus/CppDocument.h>
#include <utils/temporarydirectory.h>
#include <QStringList>
#include <QTemporaryDir>
namespace CPlusPlus {
class Document;
@@ -138,7 +138,7 @@ public:
QString createFile(const QByteArray &relativePath, const QByteArray &contents);
protected:
QTemporaryDir m_temporaryDir;
Utils::TemporaryDirectory m_temporaryDir;
bool m_isValid;
};