From 44258a97fa0bf31cef15b7985a4de1c4d8a8bf7c Mon Sep 17 00:00:00 2001 From: Klaus Basan Date: Sat, 10 Sep 2016 23:47:54 +0200 Subject: [PATCH] Use temp dir. for cache when a unit test is performed * the temp. dir can also be used for other purposes --- src/blackcore/application.cpp | 68 +++++++++++++++++++++-------------- src/blackcore/application.h | 5 +++ 2 files changed, 47 insertions(+), 26 deletions(-) diff --git a/src/blackcore/application.cpp b/src/blackcore/application.cpp index e5ed5c724..42019170e 100644 --- a/src/blackcore/application.cpp +++ b/src/blackcore/application.cpp @@ -98,7 +98,12 @@ namespace BlackCore QCoreApplication::setApplicationVersion(CVersion::version()); this->setObjectName(this->m_applicationName); const QString executable = QFileInfo(QCoreApplication::applicationFilePath()).fileName(); - if (executable.startsWith("test")) { this->m_unitTest = true; } + if (executable.startsWith("test")) + { + this->m_unitTest = true; + const QString tempPath(this->getTemporaryDirectory()); + BlackMisc::setMockCacheRootDirectory(tempPath); + } this->initParser(); this->initLogging(); @@ -385,6 +390,18 @@ namespace BlackCore } } + QString CApplication::getTemporaryDirectory() const + { + if (this->m_tempDirectory.isValid()) + { + return this->m_tempDirectory.path(); + } + else + { + return QDir::tempPath(); + } + } + QString CApplication::getInfoString(const QString &separator) const { QString str(CVersion::version()); @@ -398,17 +415,17 @@ namespace BlackCore QNetworkReply *CApplication::getFromNetwork(const CUrl &url, const CSlot &callback) { - return httpRequestImpl(url.toNetworkRequest(), callback, [ ] (QNetworkAccessManager &nam, const QNetworkRequest &request) { return nam.get(request); }); + return httpRequestImpl(url.toNetworkRequest(), callback, [ ](QNetworkAccessManager & nam, const QNetworkRequest & request) { return nam.get(request); }); } QNetworkReply *CApplication::getFromNetwork(const QNetworkRequest &request, const CSlot &callback) { - return httpRequestImpl(request, callback, [ ] (QNetworkAccessManager &nam, const QNetworkRequest &request) { return nam.get(request); }); + return httpRequestImpl(request, callback, [ ](QNetworkAccessManager & nam, const QNetworkRequest & request) { return nam.get(request); }); } QNetworkReply *CApplication::postToNetwork(const QNetworkRequest &request, const QByteArray &data, const CSlot &callback) { - return httpRequestImpl(request, callback, [ data ] (QNetworkAccessManager &nam, const QNetworkRequest &request) { return nam.post(request, data); }); + return httpRequestImpl(request, callback, [ data ](QNetworkAccessManager & nam, const QNetworkRequest & request) { return nam.post(request, data); }); } QNetworkReply *CApplication::postToNetwork(const QNetworkRequest &request, QHttpMultiPart *multiPart, const CSlot &callback) @@ -418,24 +435,23 @@ namespace BlackCore multiPart->moveToThread(this->m_accessManager.thread()); } - return httpRequestImpl(request, callback, [ this, multiPart ] (QNetworkAccessManager &nam, const QNetworkRequest &request) - { - QNetworkReply *reply = nam.post(request, multiPart); - Q_ASSERT(reply); - multiPart->setParent(reply); - return reply; - } - ); + return httpRequestImpl(request, callback, [ this, multiPart ](QNetworkAccessManager & nam, const QNetworkRequest & request) + { + QNetworkReply *reply = nam.post(request, multiPart); + Q_ASSERT(reply); + multiPart->setParent(reply); + return reply; + }); } QNetworkReply *CApplication::headerFromNetwork(const CUrl &url, const BlackMisc::CSlot &callback) { - return httpRequestImpl(url.toNetworkRequest(), callback, [ ] (QNetworkAccessManager &nam, const QNetworkRequest &request) { return nam.head(request); }); + return httpRequestImpl(url.toNetworkRequest(), callback, [ ](QNetworkAccessManager & nam, const QNetworkRequest & request) { return nam.head(request); }); } QNetworkReply *CApplication::headerFromNetwork(const QNetworkRequest &request, const BlackMisc::CSlot &callback) { - return httpRequestImpl(request, callback, [ ] (QNetworkAccessManager &nam, const QNetworkRequest &request) { return nam.head(request); }); + return httpRequestImpl(request, callback, [ ](QNetworkAccessManager & nam, const QNetworkRequest & request) { return nam.head(request); }); } void CApplication::deleteAllCookies() @@ -941,29 +957,29 @@ namespace BlackCore return CUrlList(); } - #ifdef BLACK_USE_CRASHPAD +#ifdef BLACK_USE_CRASHPAD base::FilePath qstringToFilePath(const QString &str) { - #ifdef Q_OS_WIN +#ifdef Q_OS_WIN return base::FilePath(str.toStdWString()); - #else +#else return base::FilePath(str.toStdString()); - #endif +#endif } - #endif +#endif void CApplication::initCrashHandler() { - #ifdef BLACK_USE_CRASHPAD +#ifdef BLACK_USE_CRASHPAD // No crash handling for unit tests if (isUnitTest()) { return; } static const QString extension = CBuildConfig::isRunningOnWindowsNtPlatform() ? ".exe" : QString(); static const QString handler = CDirectoryUtils::applicationDirectoryPath() + "/" + "swift_crashpad_handler" + extension; static const QString database = QStandardPaths::writableLocation(QStandardPaths::GenericDataLocation) + - "/org.swift-project/" + - CDirectoryUtils::normalizedApplicationDirectory() + - "/crashpad"; + "/org.swift-project/" + + CDirectoryUtils::normalizedApplicationDirectory() + + "/crashpad"; if (!QFileInfo::exists(handler)) { @@ -986,16 +1002,16 @@ namespace BlackCore m_crashpadClient->StartHandler(qstringToFilePath(handler), qstringToFilePath(database), serverUrl.getFullUrl().toStdString(), annotations, {}, false); m_crashpadClient->UseHandler(); - #endif +#endif } void CApplication::crashDumpUploadEnabledChanged() { - #ifdef BLACK_USE_CRASHPAD +#ifdef BLACK_USE_CRASHPAD if (!m_crashReportDatabase) { return; } auto settings = m_crashReportDatabase->GetSettings(); settings->SetUploadsEnabled(CBuildConfig::isReleaseBuild() && m_crashDumpUploadEnabled.getThreadLocal()); - #endif +#endif } QNetworkReply *CApplication::httpRequestImpl(const QNetworkRequest &request, const BlackMisc::CSlot &callback, std::function method) diff --git a/src/blackcore/application.h b/src/blackcore/application.h index 313bb6add..8ed6ad2b4 100644 --- a/src/blackcore/application.h +++ b/src/blackcore/application.h @@ -22,6 +22,7 @@ #include #include #include +#include #include #include @@ -188,6 +189,9 @@ namespace BlackCore //! Save all settings BlackMisc::CStatusMessage saveSettingsByKey(const QStringList &keys); + //! Directory for temporary files + QString getTemporaryDirectory() const; + //! Run event loop static int exec(); @@ -434,6 +438,7 @@ namespace BlackCore QScopedPointer m_setupReader; //!< setup reader QScopedPointer m_webDataServices; //!< web data services QScopedPointer m_fileLogger; //!< file logger + QTemporaryDir m_tempDirectory; //!< temp.directory for the lifetime of application object QNetworkAccessManager m_accessManager { this }; //!< single network access manager CCookieManager m_cookieManager; //!< single cookie manager for our access manager QString m_applicationName; //!< application name