forked from qt-creator/qt-creator
Clang: Use Utils::TemporaryDirectory
Task-number: QTCREATORBUG-17401 Change-Id: Ibf6007455ec92b1d9fcac17e1f3b5e2af21b7438 Reviewed-by: Marco Bubke <marco.bubke@qt.io>
This commit is contained in:
@@ -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()
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
@@ -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());
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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)
|
||||||
|
|||||||
@@ -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()
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -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);
|
||||||
|
|||||||
Reference in New Issue
Block a user