forked from qt-creator/qt-creator
		
	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:
		
				
					committed by
					
						
						Tim Jenssen
					
				
			
			
				
	
			
			
			
						parent
						
							e6017c40fc
						
					
				
				
					commit
					c6f90e575e
				
			@@ -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));
 | 
			
		||||
 
 | 
			
		||||
@@ -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);
 | 
			
		||||
 
 | 
			
		||||
@@ -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");
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -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 {
 | 
			
		||||
 
 | 
			
		||||
@@ -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())
 | 
			
		||||
{
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -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;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user