Clang: Use Utils::TemporaryDirectory

Task-number: QTCREATORBUG-17401
Change-Id: Ibf6007455ec92b1d9fcac17e1f3b5e2af21b7438
Reviewed-by: Marco Bubke <marco.bubke@qt.io>
This commit is contained in:
Nikolai Kosjar
2017-01-30 10:05:42 +01:00
parent e03132f517
commit 340063c624
6 changed files with 34 additions and 14 deletions

View File

@@ -33,7 +33,6 @@
#include <QCoreApplication> #include <QCoreApplication>
#include <QMetaMethod> #include <QMetaMethod>
#include <QProcess> #include <QProcess>
#include <QTemporaryDir>
#include <QThread> #include <QThread>
namespace ClangBackEnd { namespace ClangBackEnd {
@@ -221,8 +220,7 @@ void ConnectionClient::printStandardError()
void ConnectionClient::resetTemporaryDir() void ConnectionClient::resetTemporaryDir()
{ {
const QString templatePath = QDir::tempPath() + QStringLiteral("/qtc-clang-XXXXXX"); temporaryDirectory_ = std::make_unique<Utils::TemporaryDirectory>("clang-XXXXXX");
temporaryDirectory_.reset(new QTemporaryDir(templatePath));
} }
void ConnectionClient::connectLocalSocketConnected() void ConnectionClient::connectLocalSocketConnected()

View File

@@ -28,6 +28,8 @@
#include "clangcodemodelserverproxy.h" #include "clangcodemodelserverproxy.h"
#include "lineprefixer.h" #include "lineprefixer.h"
#include <utils/temporarydirectory.h>
#include <QLocalSocket> #include <QLocalSocket>
#include <QProcessEnvironment> #include <QProcessEnvironment>
#include <QScopedPointer> #include <QScopedPointer>
@@ -124,7 +126,7 @@ private:
mutable std::unique_ptr<QProcess> process_; mutable std::unique_ptr<QProcess> process_;
QLocalSocket localSocket; QLocalSocket localSocket;
std::unique_ptr<QTemporaryDir> temporaryDirectory_; std::unique_ptr<Utils::TemporaryDirectory> temporaryDirectory_;
QTimer processAliveTimer; QTimer processAliveTimer;
QString processPath_; QString processPath_;
bool isAliveTimerResetted = false; bool isAliveTimerResetted = false;

View File

@@ -33,7 +33,7 @@
namespace ClangCodeModel { namespace ClangCodeModel {
namespace Internal { namespace Internal {
UiHeaderOnDiskManager::UiHeaderOnDiskManager() : m_temporaryDir("qtc-clang-uiheader-XXXXXX") UiHeaderOnDiskManager::UiHeaderOnDiskManager() : m_temporaryDir("clang-uiheader-XXXXXX")
{ {
QTC_CHECK(m_temporaryDir.isValid()); QTC_CHECK(m_temporaryDir.isValid());
} }

View File

@@ -8,6 +8,12 @@ TEMPLATE = app
unix:LIBS += -ldl unix:LIBS += -ldl
# Set IDE_LIBEXEC_PATH and IDE_BIN_PATH to silence a warning about empty
# QTC_REL_TOOLS_PATH, which is not used by the tests.
IDE_LIBEXEC_PATH=$$PWD
IDE_BIN_PATH=$$PWD
include($$PWD/../../../src/libs/utils/utils-lib.pri)
include(../../../qtcreator.pri) include(../../../qtcreator.pri)
include(../../../src/libs/clangbackendipc/clangbackendipc-lib.pri) include(../../../src/libs/clangbackendipc/clangbackendipc-lib.pri)
include(../../../src/libs/sqlite/sqlite-lib.pri) include(../../../src/libs/sqlite/sqlite-lib.pri)

View File

@@ -51,6 +51,7 @@
#include <QString> #include <QString>
#include <QVariant> #include <QVariant>
#include <memory>
#include <vector> #include <vector>
using namespace ClangBackEnd; using namespace ClangBackEnd;
@@ -58,6 +59,13 @@ using namespace ClangBackEnd;
using ::testing::Eq; using ::testing::Eq;
using ::testing::SizeIs; using ::testing::SizeIs;
struct Data {
Data() : client(&mockClangCodeModelClient) {}
MockClangCodeModelClient mockClangCodeModelClient;
ClangBackEnd::ClangCodeModelConnectionClient client;
};
class ClientServerOutsideProcess : public ::testing::Test class ClientServerOutsideProcess : public ::testing::Test
{ {
protected: protected:
@@ -67,16 +75,15 @@ protected:
static void SetUpTestCase(); static void SetUpTestCase();
static void TearDownTestCase(); static void TearDownTestCase();
static MockClangCodeModelClient mockClangCodeModelClient; static std::unique_ptr<Data> d;
static ClangBackEnd::ClangCodeModelConnectionClient client; MockClangCodeModelClient &mockClangCodeModelClient = d->mockClangCodeModelClient;
ClangBackEnd::ClangCodeModelConnectionClient &client = d->client;
}; };
MockClangCodeModelClient ClientServerOutsideProcess::mockClangCodeModelClient; std::unique_ptr<Data> ClientServerOutsideProcess::d;
ClangBackEnd::ClangCodeModelConnectionClient ClientServerOutsideProcess::client(&ClientServerOutsideProcess::mockClangCodeModelClient);
using ClientServerOutsideProcessSlowTest = ClientServerOutsideProcess; using ClientServerOutsideProcessSlowTest = ClientServerOutsideProcess;
TEST_F(ClientServerOutsideProcessSlowTest, RestartProcessAsynchronously) TEST_F(ClientServerOutsideProcessSlowTest, RestartProcessAsynchronously)
{ {
QSignalSpy clientSpy(&client, &ConnectionClient::connectedToLocalSocket); QSignalSpy clientSpy(&client, &ConnectionClient::connectedToLocalSocket);
@@ -176,10 +183,12 @@ TEST_F(ClientServerOutsideProcess, SendUnregisterProjectPartsForEditorMessage)
void ClientServerOutsideProcess::SetUpTestCase() void ClientServerOutsideProcess::SetUpTestCase()
{ {
QSignalSpy clientSpy(&client, &ConnectionClient::connectedToLocalSocket); d.reset(new Data);
client.setProcessPath(Utils::HostOsInfo::withExecutableSuffix(QStringLiteral(ECHOSERVER)));
client.startProcessAndConnectToServerAsynchronously(); QSignalSpy clientSpy(&d->client, &ConnectionClient::connectedToLocalSocket);
d->client.setProcessPath(Utils::HostOsInfo::withExecutableSuffix(QStringLiteral(ECHOSERVER)));
d->client.startProcessAndConnectToServerAsynchronously();
ASSERT_TRUE(clientSpy.wait(100000)); ASSERT_TRUE(clientSpy.wait(100000));
ASSERT_THAT(clientSpy, SizeIs(1)); ASSERT_THAT(clientSpy, SizeIs(1));
@@ -187,7 +196,8 @@ void ClientServerOutsideProcess::SetUpTestCase()
void ClientServerOutsideProcess::TearDownTestCase() void ClientServerOutsideProcess::TearDownTestCase()
{ {
client.finishProcess(); d->client.finishProcess();
d.reset();
} }
void ClientServerOutsideProcess::SetUp() void ClientServerOutsideProcess::SetUp()
{ {

View File

@@ -25,6 +25,8 @@
#include <sqliteglobal.h> #include <sqliteglobal.h>
#include <utils/temporarydirectory.h>
#include <QCoreApplication> #include <QCoreApplication>
#include <QLoggingCategory> #include <QLoggingCategory>
@@ -37,6 +39,8 @@
int main(int argc, char *argv[]) int main(int argc, char *argv[])
{ {
Utils::TemporaryDirectory::setMasterTemporaryDirectory(QDir::tempPath()
+"/QtCreator-UnitTests-XXXXXX");
Sqlite::registerTypes(); Sqlite::registerTypes();
QCoreApplication application(argc, argv); QCoreApplication application(argc, argv);