diff options
author | Marco Bubke <marco.bubke@qt.io> | 2018-08-06 19:14:00 +0200 |
---|---|---|
committer | Marco Bubke <marco.bubke@qt.io> | 2018-08-08 13:13:35 +0000 |
commit | 0bef7610a1cb7a923736f5f1ebd34c093f016e26 (patch) | |
tree | b24673e1945c7f965f1aae5da995b99742d20de2 | |
parent | 613db15cea6bdee29adb21dbabd36f03391f4a4f (diff) | |
download | qt-creator-0bef7610a1cb7a923736f5f1ebd34c093f016e26.tar.gz |
ClangRefactoring: Move generated files to own messages
There must be a management about it but this will be added in a different
change set.
Change-Id: I47b6ce7f671f1c8ae07083d6d99c534069e3cc1a
Reviewed-by: Ivan Donchevskii <ivan.donchevskii@qt.io>
35 files changed, 469 insertions, 66 deletions
diff --git a/src/libs/clangsupport/clangrefactoringservermessages.h b/src/libs/clangsupport/clangrefactoringservermessages.h index cdcc309c2d..dd1cb3a6d7 100644 --- a/src/libs/clangsupport/clangrefactoringservermessages.h +++ b/src/libs/clangsupport/clangrefactoringservermessages.h @@ -30,5 +30,7 @@ #include "requestsourcelocationforrenamingmessage.h" #include "requestsourcerangesanddiagnosticsforquerymessage.h" #include "requestsourcerangesforquerymessage.h" -#include "updateprojectpartsmessage.h" +#include "removegeneratedfilesmessage.h" #include "removeprojectpartsmessage.h" +#include "updategeneratedfilesmessage.h" +#include "updateprojectpartsmessage.h" diff --git a/src/libs/clangsupport/clangsupport-lib.pri b/src/libs/clangsupport/clangsupport-lib.pri index 857bc39ddd..5934d2c522 100644 --- a/src/libs/clangsupport/clangsupport-lib.pri +++ b/src/libs/clangsupport/clangsupport-lib.pri @@ -87,7 +87,9 @@ SOURCES += \ $$PWD/writemessageblock.cpp \ $$PWD/filepathcaching.cpp \ $$PWD/filepathid.cpp \ - $$PWD/baseserverproxy.cpp + $$PWD/baseserverproxy.cpp \ + $$PWD/updategeneratedfilesmessage.cpp \ + $$PWD/removegeneratedfilesmessage.cpp HEADERS += \ $$PWD/cancelmessage.h \ @@ -202,6 +204,8 @@ HEADERS += \ $$PWD/nativefilepath.h \ $$PWD/filepathview.h \ $$PWD/compilermacro.h \ - $$PWD/projectpartpchproviderinterface.h + $$PWD/projectpartpchproviderinterface.h \ + $$PWD/updategeneratedfilesmessage.h \ + $$PWD/removegeneratedfilesmessage.h contains(QT_CONFIG, reduce_exports):CONFIG += hide_symbols diff --git a/src/libs/clangsupport/clangsupport_global.h b/src/libs/clangsupport/clangsupport_global.h index 01e9e2c7f4..75454a5288 100644 --- a/src/libs/clangsupport/clangsupport_global.h +++ b/src/libs/clangsupport/clangsupport_global.h @@ -177,7 +177,9 @@ enum class MessageType : quint8 { CancelMessage, UpdateProjectPartsMessage, RemoveProjectPartsMessage, - PrecompiledHeadersUpdatedMessage + PrecompiledHeadersUpdatedMessage, + UpdateGeneratedFilesMessage, + RemoveGeneratedFilesMessage }; template<MessageType messageEnumeration> diff --git a/src/libs/clangsupport/pchmanagerserverinterface.cpp b/src/libs/clangsupport/pchmanagerserverinterface.cpp index 549e835450..256aa228ac 100644 --- a/src/libs/clangsupport/pchmanagerserverinterface.cpp +++ b/src/libs/clangsupport/pchmanagerserverinterface.cpp @@ -26,7 +26,9 @@ #include "pchmanagerserverinterface.h" #include "messageenvelop.h" +#include "removegeneratedfilesmessage.h" #include "removeprojectpartsmessage.h" +#include "updategeneratedfilesmessage.h" #include "updateprojectpartsmessage.h" #include <QDebug> @@ -45,6 +47,12 @@ void PchManagerServerInterface::dispatch(const MessageEnvelop &messageEnvelop) case MessageType::RemoveProjectPartsMessage: removeProjectParts(messageEnvelop.message<RemoveProjectPartsMessage>()); break; + case MessageType::UpdateGeneratedFilesMessage: + updateGeneratedFiles(messageEnvelop.message<UpdateGeneratedFilesMessage>()); + break; + case MessageType::RemoveGeneratedFilesMessage: + removeGeneratedFiles(messageEnvelop.message<RemoveGeneratedFilesMessage>()); + break; default: qWarning() << "Unknown IpcClientMessage"; } diff --git a/src/libs/clangsupport/pchmanagerserverinterface.h b/src/libs/clangsupport/pchmanagerserverinterface.h index 48ac0d3679..eb2a4310a5 100644 --- a/src/libs/clangsupport/pchmanagerserverinterface.h +++ b/src/libs/clangsupport/pchmanagerserverinterface.h @@ -32,8 +32,6 @@ namespace ClangBackEnd { class PchManagerClientInterface; -class RemoveProjectPartsMessage; -class UpdateProjectPartsMessage; class CLANGSUPPORT_EXPORT PchManagerServerInterface : public ProjectManagementServerInterface { diff --git a/src/libs/clangsupport/pchmanagerserverproxy.cpp b/src/libs/clangsupport/pchmanagerserverproxy.cpp index fbf4866542..dedbb23d50 100644 --- a/src/libs/clangsupport/pchmanagerserverproxy.cpp +++ b/src/libs/clangsupport/pchmanagerserverproxy.cpp @@ -28,7 +28,9 @@ #include "endmessage.h" #include "messageenvelop.h" #include "pchmanagerclientinterface.h" +#include "removegeneratedfilesmessage.h" #include "removeprojectpartsmessage.h" +#include "updategeneratedfilesmessage.h" #include "updateprojectpartsmessage.h" #include <QIODevice> @@ -56,4 +58,14 @@ void PchManagerServerProxy::removeProjectParts(RemoveProjectPartsMessage &&messa m_writeMessageBlock.write(message); } +void PchManagerServerProxy::updateGeneratedFiles(UpdateGeneratedFilesMessage &&message) +{ + m_writeMessageBlock.write(message); +} + +void PchManagerServerProxy::removeGeneratedFiles(RemoveGeneratedFilesMessage &&message) +{ + m_writeMessageBlock.write(message); +} + } // namespace ClangBackEnd diff --git a/src/libs/clangsupport/pchmanagerserverproxy.h b/src/libs/clangsupport/pchmanagerserverproxy.h index 30ae12782c..570de91a03 100644 --- a/src/libs/clangsupport/pchmanagerserverproxy.h +++ b/src/libs/clangsupport/pchmanagerserverproxy.h @@ -52,6 +52,8 @@ public: void end() override; void updateProjectParts(UpdateProjectPartsMessage &&message) override; void removeProjectParts(RemoveProjectPartsMessage &&message) override; + void updateGeneratedFiles(UpdateGeneratedFilesMessage &&message) override; + void removeGeneratedFiles(RemoveGeneratedFilesMessage &&message) override; }; } // namespace ClangBackEnd diff --git a/src/libs/clangsupport/projectmanagementserverinterface.h b/src/libs/clangsupport/projectmanagementserverinterface.h index eb06960dc3..08d6edbb0c 100644 --- a/src/libs/clangsupport/projectmanagementserverinterface.h +++ b/src/libs/clangsupport/projectmanagementserverinterface.h @@ -29,7 +29,9 @@ namespace ClangBackEnd { +class RemoveGeneratedFilesMessage; class RemoveProjectPartsMessage; +class UpdateGeneratedFilesMessage; class UpdateProjectPartsMessage; class ProjectManagementServerInterface : public IpcServerInterface @@ -37,6 +39,8 @@ class ProjectManagementServerInterface : public IpcServerInterface public: virtual void updateProjectParts(UpdateProjectPartsMessage &&message) = 0; virtual void removeProjectParts(RemoveProjectPartsMessage &&message) = 0; + virtual void updateGeneratedFiles(UpdateGeneratedFilesMessage &&message) = 0; + virtual void removeGeneratedFiles(RemoveGeneratedFilesMessage &&message) = 0; protected: ~ProjectManagementServerInterface() = default; diff --git a/src/libs/clangsupport/refactoringserverinterface.cpp b/src/libs/clangsupport/refactoringserverinterface.cpp index e9a2456d74..a95837f80a 100644 --- a/src/libs/clangsupport/refactoringserverinterface.cpp +++ b/src/libs/clangsupport/refactoringserverinterface.cpp @@ -50,9 +50,15 @@ void RefactoringServerInterface::dispatch(const MessageEnvelop &messageEnvelop) case MessageType::UpdateProjectPartsMessage: updateProjectParts(messageEnvelop.message<UpdateProjectPartsMessage>()); break; + case MessageType::UpdateGeneratedFilesMessage: + updateGeneratedFiles(messageEnvelop.message<UpdateGeneratedFilesMessage>()); + break; case MessageType::RemoveProjectPartsMessage: removeProjectParts(messageEnvelop.message<RemoveProjectPartsMessage>()); break; + case MessageType::RemoveGeneratedFilesMessage: + removeGeneratedFiles(messageEnvelop.message<RemoveGeneratedFilesMessage>()); + break; case MessageType::CancelMessage: cancel(); break; diff --git a/src/libs/clangsupport/refactoringserverproxy.cpp b/src/libs/clangsupport/refactoringserverproxy.cpp index 809a66fe57..3bc8fe20af 100644 --- a/src/libs/clangsupport/refactoringserverproxy.cpp +++ b/src/libs/clangsupport/refactoringserverproxy.cpp @@ -69,6 +69,16 @@ void RefactoringServerProxy::removeProjectParts(RemoveProjectPartsMessage &&mess m_writeMessageBlock.write(message); } +void RefactoringServerProxy::updateGeneratedFiles(UpdateGeneratedFilesMessage &&message) +{ + m_writeMessageBlock.write(message); +} + +void RefactoringServerProxy::removeGeneratedFiles(RemoveGeneratedFilesMessage &&message) +{ + m_writeMessageBlock.write(message); +} + void RefactoringServerProxy::cancel() { m_writeMessageBlock.write(CancelMessage()); diff --git a/src/libs/clangsupport/refactoringserverproxy.h b/src/libs/clangsupport/refactoringserverproxy.h index e5006e66e9..55ae20d441 100644 --- a/src/libs/clangsupport/refactoringserverproxy.h +++ b/src/libs/clangsupport/refactoringserverproxy.h @@ -55,6 +55,8 @@ public: void requestSourceRangesForQueryMessage(RequestSourceRangesForQueryMessage &&message) override; void updateProjectParts(UpdateProjectPartsMessage &&message) override; void removeProjectParts(RemoveProjectPartsMessage &&message) override; + void updateGeneratedFiles(UpdateGeneratedFilesMessage &&message) override; + void removeGeneratedFiles(RemoveGeneratedFilesMessage &&message) override; void cancel() override; }; diff --git a/src/libs/clangsupport/removegeneratedfilesmessage.cpp b/src/libs/clangsupport/removegeneratedfilesmessage.cpp new file mode 100644 index 0000000000..2ed92a8169 --- /dev/null +++ b/src/libs/clangsupport/removegeneratedfilesmessage.cpp @@ -0,0 +1,37 @@ +/**************************************************************************** +** +** Copyright (C) 2018 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of Qt Creator. +** +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3 as published by the Free Software +** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-3.0.html. +** +****************************************************************************/ + +#include "removegeneratedfilesmessage.h" + +namespace ClangBackEnd { + +QDebug operator<<(QDebug debug, const RemoveGeneratedFilesMessage &message) +{ + debug.nospace() << "RemoveGeneratedFilesMessage(" + << message.generatedFiles << ")"; + + return debug; +} +} // namespace ClangBackEnd diff --git a/src/libs/clangsupport/removegeneratedfilesmessage.h b/src/libs/clangsupport/removegeneratedfilesmessage.h new file mode 100644 index 0000000000..6aebaccb27 --- /dev/null +++ b/src/libs/clangsupport/removegeneratedfilesmessage.h @@ -0,0 +1,79 @@ +/**************************************************************************** +** +** Copyright (C) 2018 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of Qt Creator. +** +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3 as published by the Free Software +** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-3.0.html. +** +****************************************************************************/ + +#pragma once + +#include <clangsupport_global.h> + +#include "filepath.h" + +namespace ClangBackEnd { + +class RemoveGeneratedFilesMessage +{ +public: + RemoveGeneratedFilesMessage() = default; + RemoveGeneratedFilesMessage(FilePaths &&generatedFiles) + : generatedFiles(std::move(generatedFiles)) + {} + + FilePaths takeGeneratedFiles() + { + return std::move(generatedFiles); + } + + friend QDataStream &operator<<(QDataStream &out, const RemoveGeneratedFilesMessage &message) + { + out << message.generatedFiles; + + return out; + } + + friend QDataStream &operator>>(QDataStream &in, RemoveGeneratedFilesMessage &message) + { + in >> message.generatedFiles; + + return in; + } + + friend bool operator==(const RemoveGeneratedFilesMessage &first, + const RemoveGeneratedFilesMessage &second) + { + return first.generatedFiles == second.generatedFiles; + } + + RemoveGeneratedFilesMessage clone() const + { + return *this; + } + +public: + FilePaths generatedFiles; +}; + +CLANGSUPPORT_EXPORT QDebug operator<<(QDebug debug, const RemoveGeneratedFilesMessage &message); + +DECLARE_MESSAGE(RemoveGeneratedFilesMessage) +} // namespace ClangBackEnd diff --git a/src/libs/clangsupport/updategeneratedfilesmessage.cpp b/src/libs/clangsupport/updategeneratedfilesmessage.cpp new file mode 100644 index 0000000000..9ef71a0df5 --- /dev/null +++ b/src/libs/clangsupport/updategeneratedfilesmessage.cpp @@ -0,0 +1,38 @@ +/**************************************************************************** +** +** Copyright (C) 2018 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of Qt Creator. +** +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3 as published by the Free Software +** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-3.0.html. +** +****************************************************************************/ + +#include "updategeneratedfilesmessage.h" + +namespace ClangBackEnd { + +QDebug operator<<(QDebug debug, const UpdateGeneratedFilesMessage &message) +{ + debug.nospace() << "UpdateGeneratedFilesMessage(" + << message.generatedFiles << ")"; + + return debug; +} + +} // namespace ClangBackEnd diff --git a/src/libs/clangsupport/updategeneratedfilesmessage.h b/src/libs/clangsupport/updategeneratedfilesmessage.h new file mode 100644 index 0000000000..fabfda0125 --- /dev/null +++ b/src/libs/clangsupport/updategeneratedfilesmessage.h @@ -0,0 +1,77 @@ +/**************************************************************************** +** +** Copyright (C) 2018 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of Qt Creator. +** +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3 as published by the Free Software +** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-3.0.html. +** +****************************************************************************/ + +#pragma once + +#include "filecontainerv2.h" + +namespace ClangBackEnd { + +class UpdateGeneratedFilesMessage +{ +public: + UpdateGeneratedFilesMessage() = default; + UpdateGeneratedFilesMessage(V2::FileContainers &&generatedFiles) + : generatedFiles(std::move(generatedFiles)) + {} + + V2::FileContainers takeGeneratedFiles() + { + return std::move(generatedFiles); + } + + friend QDataStream &operator<<(QDataStream &out, const UpdateGeneratedFilesMessage &message) + { + out << message.generatedFiles; + + return out; + } + + friend QDataStream &operator>>(QDataStream &in, UpdateGeneratedFilesMessage &message) + { + in >> message.generatedFiles; + + return in; + } + + friend bool operator==(const UpdateGeneratedFilesMessage &first, + const UpdateGeneratedFilesMessage &second) + { + return first.generatedFiles == second.generatedFiles; + } + + UpdateGeneratedFilesMessage clone() const + { + return *this; + } + +public: + V2::FileContainers generatedFiles; +}; + +CLANGSUPPORT_EXPORT QDebug operator<<(QDebug debug, const UpdateGeneratedFilesMessage &message); + +DECLARE_MESSAGE(UpdateGeneratedFilesMessage) +} // namespace ClangBackEnd diff --git a/src/libs/clangsupport/updateprojectpartsmessage.h b/src/libs/clangsupport/updateprojectpartsmessage.h index 8c2ee5befe..e923d7ba03 100644 --- a/src/libs/clangsupport/updateprojectpartsmessage.h +++ b/src/libs/clangsupport/updateprojectpartsmessage.h @@ -34,10 +34,8 @@ class UpdateProjectPartsMessage { public: UpdateProjectPartsMessage() = default; - UpdateProjectPartsMessage(V2::ProjectPartContainers &&projectsParts, - V2::FileContainers &&generatedFiles) - : projectsParts(std::move(projectsParts)), - generatedFiles(std::move(generatedFiles)) + UpdateProjectPartsMessage(V2::ProjectPartContainers &&projectsParts) + : projectsParts(std::move(projectsParts)) {} V2::ProjectPartContainers takeProjectsParts() @@ -45,15 +43,9 @@ public: return std::move(projectsParts); } - V2::FileContainers takeGeneratedFiles() - { - return std::move(generatedFiles); - } - friend QDataStream &operator<<(QDataStream &out, const UpdateProjectPartsMessage &message) { out << message.projectsParts; - out << message.generatedFiles; return out; } @@ -61,7 +53,6 @@ public: friend QDataStream &operator>>(QDataStream &in, UpdateProjectPartsMessage &message) { in >> message.projectsParts; - in >> message.generatedFiles; return in; } @@ -69,19 +60,16 @@ public: friend bool operator==(const UpdateProjectPartsMessage &first, const UpdateProjectPartsMessage &second) { - return first.projectsParts == second.projectsParts - && first.generatedFiles == second.generatedFiles; + return first.projectsParts == second.projectsParts; } UpdateProjectPartsMessage clone() const { - return UpdateProjectPartsMessage(Utils::clone(projectsParts), - Utils::clone(generatedFiles)); + return *this; } public: V2::ProjectPartContainers projectsParts; - V2::FileContainers generatedFiles; }; CLANGSUPPORT_EXPORT QDebug operator<<(QDebug debug, const UpdateProjectPartsMessage &message); diff --git a/src/plugins/clangpchmanager/projectupdater.cpp b/src/plugins/clangpchmanager/projectupdater.cpp index 9d0342d20a..7a7235b1e2 100644 --- a/src/plugins/clangpchmanager/projectupdater.cpp +++ b/src/plugins/clangpchmanager/projectupdater.cpp @@ -30,6 +30,7 @@ #include <filepathid.h> #include <pchmanagerserverinterface.h> #include <removeprojectpartsmessage.h> +#include <updategeneratedfilesmessage.h> #include <updateprojectpartsmessage.h> #include <cpptools/compileroptionsbuilder.h> @@ -67,10 +68,11 @@ void ProjectUpdater::updateProjectParts(const std::vector<CppTools::ProjectPart { m_excludedPaths = createExcludedPaths(generatedFiles); - ClangBackEnd::UpdateProjectPartsMessage message{toProjectPartContainers(projectParts), - std::move(generatedFiles)}; + m_server.updateGeneratedFiles( // TODO move to an other code path + ClangBackEnd::UpdateGeneratedFilesMessage{std::move(generatedFiles)}); - m_server.updateProjectParts(std::move(message)); + m_server.updateProjectParts( + ClangBackEnd::UpdateProjectPartsMessage{toProjectPartContainers(projectParts)}); } void ProjectUpdater::removeProjectParts(const QStringList &projectPartIds) diff --git a/src/tools/clangpchmanagerbackend/source/pchmanagerserver.cpp b/src/tools/clangpchmanagerbackend/source/pchmanagerserver.cpp index 90d315a0f1..1e9ea5ea46 100644 --- a/src/tools/clangpchmanagerbackend/source/pchmanagerserver.cpp +++ b/src/tools/clangpchmanagerbackend/source/pchmanagerserver.cpp @@ -28,6 +28,7 @@ #include <pchmanagerclientinterface.h> #include <precompiledheadersupdatedmessage.h> #include <removeprojectpartsmessage.h> +#include <updategeneratedfilesmessage.h> #include <updateprojectpartsmessage.h> #include <utils/smallstring.h> @@ -54,8 +55,6 @@ void PchManagerServer::end() void PchManagerServer::updateProjectParts(UpdateProjectPartsMessage &&message) { - m_pchCreator.setGeneratedFiles(message.takeGeneratedFiles()); - m_pchCreator.generatePchs(m_projectParts.update(message.takeProjectsParts())); m_fileSystemWatcher.updateIdPaths(m_pchCreator.takeProjectsIncludes()); @@ -68,6 +67,16 @@ void PchManagerServer::removeProjectParts(RemoveProjectPartsMessage &&message) m_projectParts.remove(message.projectsPartIds); } +void PchManagerServer::updateGeneratedFiles(UpdateGeneratedFilesMessage &&message) +{ + m_pchCreator.setGeneratedFiles(message.takeGeneratedFiles()); +} + +void PchManagerServer::removeGeneratedFiles(RemoveGeneratedFilesMessage &&message) +{ + // TODO +} + void PchManagerServer::pathsWithIdsChanged(const Utils::SmallStringVector &ids) { m_pchCreator.generatePchs(m_projectParts.projects(ids)); diff --git a/src/tools/clangpchmanagerbackend/source/pchmanagerserver.h b/src/tools/clangpchmanagerbackend/source/pchmanagerserver.h index 0921ce772c..b188b0e6bb 100644 --- a/src/tools/clangpchmanagerbackend/source/pchmanagerserver.h +++ b/src/tools/clangpchmanagerbackend/source/pchmanagerserver.h @@ -53,6 +53,8 @@ public: void end() override; void updateProjectParts(UpdateProjectPartsMessage &&message) override; void removeProjectParts(RemoveProjectPartsMessage &&message) override; + void updateGeneratedFiles(UpdateGeneratedFilesMessage &&message) override; + void removeGeneratedFiles(RemoveGeneratedFilesMessage &&message) override; void pathsWithIdsChanged(const Utils::SmallStringVector &ids) override; void pathsChanged(const FilePathIds &filePathIds) override; diff --git a/src/tools/clangrefactoringbackend/source/refactoringserver.cpp b/src/tools/clangrefactoringbackend/source/refactoringserver.cpp index 68aa24cbcd..35da59d77a 100644 --- a/src/tools/clangrefactoringbackend/source/refactoringserver.cpp +++ b/src/tools/clangrefactoringbackend/source/refactoringserver.cpp @@ -97,12 +97,22 @@ void RefactoringServer::requestSourceRangesForQueryMessage(RequestSourceRangesFo void RefactoringServer::updateProjectParts(UpdateProjectPartsMessage &&message) { - m_symbolIndexing.updateProjectParts(message.takeProjectsParts(), message.takeGeneratedFiles()); + m_symbolIndexing.updateProjectParts(message.takeProjectsParts(), m_generatedFiles); +} + +void RefactoringServer::updateGeneratedFiles(UpdateGeneratedFilesMessage &&message) +{ + m_generatedFiles = message.takeGeneratedFiles(); } void RefactoringServer::removeProjectParts(RemoveProjectPartsMessage &&) { + // TODO +} +void RefactoringServer::removeGeneratedFiles(RemoveGeneratedFilesMessage &&message) +{ + // TODO } void RefactoringServer::cancel() diff --git a/src/tools/clangrefactoringbackend/source/refactoringserver.h b/src/tools/clangrefactoringbackend/source/refactoringserver.h index 1823174335..f46aac9577 100644 --- a/src/tools/clangrefactoringbackend/source/refactoringserver.h +++ b/src/tools/clangrefactoringbackend/source/refactoringserver.h @@ -62,7 +62,10 @@ public: void requestSourceRangesAndDiagnosticsForQueryMessage(RequestSourceRangesAndDiagnosticsForQueryMessage &&message) override; void requestSourceRangesForQueryMessage(RequestSourceRangesForQueryMessage &&message) override; void updateProjectParts(UpdateProjectPartsMessage &&message) override; + void updateGeneratedFiles(UpdateGeneratedFilesMessage &&message) override; void removeProjectParts(RemoveProjectPartsMessage &&message) override; + void removeGeneratedFiles(RemoveGeneratedFilesMessage &&message) override; + void cancel() override; bool isCancelingJobs() const; @@ -81,6 +84,7 @@ private: private: ClangQueryGatherer m_gatherer; + V2::FileContainers m_generatedFiles; QTimer m_pollTimer; SymbolIndexingInterface &m_symbolIndexing; FilePathCachingInterface &m_filePathCache; diff --git a/src/tools/clangrefactoringbackend/source/symbolindexer.cpp b/src/tools/clangrefactoringbackend/source/symbolindexer.cpp index 51785e7870..58450cdc4d 100644 --- a/src/tools/clangrefactoringbackend/source/symbolindexer.cpp +++ b/src/tools/clangrefactoringbackend/source/symbolindexer.cpp @@ -43,7 +43,7 @@ SymbolIndexer::SymbolIndexer(SymbolsCollectorInterface &symbolsCollector, pathWatcher.setNotifier(this); } -void SymbolIndexer::updateProjectParts(V2::ProjectPartContainers &&projectParts, V2::FileContainers &&generatedFiles) +void SymbolIndexer::updateProjectParts(V2::ProjectPartContainers &&projectParts, const V2::FileContainers &generatedFiles) { for (V2::ProjectPartContainer &projectPart : projectParts) updateProjectPart(std::move(projectPart), generatedFiles); diff --git a/src/tools/clangrefactoringbackend/source/symbolindexer.h b/src/tools/clangrefactoringbackend/source/symbolindexer.h index 42ab387662..4fc66fee0f 100644 --- a/src/tools/clangrefactoringbackend/source/symbolindexer.h +++ b/src/tools/clangrefactoringbackend/source/symbolindexer.h @@ -46,7 +46,7 @@ public: Sqlite::TransactionInterface &transactionInterface); void updateProjectParts(V2::ProjectPartContainers &&projectParts, - V2::FileContainers &&generatedFiles); + const V2::FileContainers &generatedFiles); void updateProjectPart(V2::ProjectPartContainer &&projectPart, const V2::FileContainers &generatedFiles); diff --git a/src/tools/clangrefactoringbackend/source/symbolindexing.cpp b/src/tools/clangrefactoringbackend/source/symbolindexing.cpp index a9e772b168..c1e934eb2e 100644 --- a/src/tools/clangrefactoringbackend/source/symbolindexing.cpp +++ b/src/tools/clangrefactoringbackend/source/symbolindexing.cpp @@ -27,9 +27,10 @@ namespace ClangBackEnd { -void SymbolIndexing::updateProjectParts(V2::ProjectPartContainers &&projectParts, V2::FileContainers &&generatedFiles) +void SymbolIndexing::updateProjectParts(V2::ProjectPartContainers &&projectParts, + const V2::FileContainers &generatedFiles) { - m_indexer.updateProjectParts(std::move(projectParts), std::move(generatedFiles)); + m_indexer.updateProjectParts(std::move(projectParts), generatedFiles); } } // namespace ClangBackEnd diff --git a/src/tools/clangrefactoringbackend/source/symbolindexing.h b/src/tools/clangrefactoringbackend/source/symbolindexing.h index ffd2936986..f6c4e79628 100644 --- a/src/tools/clangrefactoringbackend/source/symbolindexing.h +++ b/src/tools/clangrefactoringbackend/source/symbolindexing.h @@ -62,7 +62,7 @@ public: } void updateProjectParts(V2::ProjectPartContainers &&projectParts, - V2::FileContainers &&generatedFiles); + const V2::FileContainers &generatedFiles) override; private: FilePathCachingInterface &m_filePathCache; diff --git a/src/tools/clangrefactoringbackend/source/symbolindexinginterface.h b/src/tools/clangrefactoringbackend/source/symbolindexinginterface.h index 72806e54a1..0151f29f7e 100644 --- a/src/tools/clangrefactoringbackend/source/symbolindexinginterface.h +++ b/src/tools/clangrefactoringbackend/source/symbolindexinginterface.h @@ -38,7 +38,7 @@ public: SymbolIndexingInterface &operator=(const SymbolIndexingInterface&) = delete; virtual void updateProjectParts(V2::ProjectPartContainers &&projectParts, - V2::FileContainers &&generatedFiles) = 0; + const V2::FileContainers &generatedFiles) = 0; protected: ~SymbolIndexingInterface() = default; diff --git a/tests/unit/unittest/mockpchmanagerserver.h b/tests/unit/unittest/mockpchmanagerserver.h index 766abd95ab..906903efd0 100644 --- a/tests/unit/unittest/mockpchmanagerserver.h +++ b/tests/unit/unittest/mockpchmanagerserver.h @@ -38,6 +38,10 @@ public: void (const ClangBackEnd::UpdateProjectPartsMessage&)); MOCK_METHOD1(removeProjectParts, void (const ClangBackEnd::RemoveProjectPartsMessage&)); + MOCK_METHOD1(updateGeneratedFiles, + void (const ClangBackEnd::UpdateGeneratedFilesMessage&)); + MOCK_METHOD1(removeGeneratedFiles, + void (const ClangBackEnd::RemoveGeneratedFilesMessage&)); void updateProjectParts(ClangBackEnd::UpdateProjectPartsMessage &&message) override { @@ -48,4 +52,14 @@ public: { removeProjectParts(message); } + + void updateGeneratedFiles(ClangBackEnd::UpdateGeneratedFilesMessage &&message) override + { + updateGeneratedFiles(message); + } + + void removeGeneratedFiles(ClangBackEnd::RemoveGeneratedFilesMessage &&message) override + { + removeGeneratedFiles(message); + } }; diff --git a/tests/unit/unittest/mockrefactoringserver.h b/tests/unit/unittest/mockrefactoringserver.h index 091807e203..9de1a18e2b 100644 --- a/tests/unit/unittest/mockrefactoringserver.h +++ b/tests/unit/unittest/mockrefactoringserver.h @@ -47,9 +47,15 @@ public: MOCK_METHOD1(updateProjectParts, void (const ClangBackEnd::UpdateProjectPartsMessage&)); + MOCK_METHOD1(updateGeneratedFiles, + void (const ClangBackEnd::UpdateGeneratedFilesMessage&)); + MOCK_METHOD1(removeProjectParts, void (const ClangBackEnd::RemoveProjectPartsMessage&)); + MOCK_METHOD1(removeGeneratedFiles, + void (const ClangBackEnd::RemoveGeneratedFilesMessage&)); + MOCK_METHOD0(cancel, void()); @@ -73,8 +79,18 @@ public: updateProjectParts(message); } + void updateGeneratedFiles(ClangBackEnd::UpdateGeneratedFilesMessage &&message) override + { + updateGeneratedFiles(message); + } + void removeProjectParts(ClangBackEnd::RemoveProjectPartsMessage &&message) override { removeProjectParts(message); } + + void removeGeneratedFiles(ClangBackEnd::RemoveGeneratedFilesMessage &&message) override + { + removeGeneratedFiles(message); + } }; diff --git a/tests/unit/unittest/mocksymbolindexing.h b/tests/unit/unittest/mocksymbolindexing.h index 8a42ebfbc9..967a5f6aab 100644 --- a/tests/unit/unittest/mocksymbolindexing.h +++ b/tests/unit/unittest/mocksymbolindexing.h @@ -37,7 +37,7 @@ public: const ClangBackEnd::V2::FileContainers &generatedFiles)); void updateProjectParts(ClangBackEnd::V2::ProjectPartContainers &&projectParts, - ClangBackEnd::V2::FileContainers &&generatedFiles) override + const ClangBackEnd::V2::FileContainers &generatedFiles) override { updateProjectParts(projectParts, generatedFiles); } diff --git a/tests/unit/unittest/pchmanagerclient-test.cpp b/tests/unit/unittest/pchmanagerclient-test.cpp index 9e40a21249..8c13055c5e 100644 --- a/tests/unit/unittest/pchmanagerclient-test.cpp +++ b/tests/unit/unittest/pchmanagerclient-test.cpp @@ -35,7 +35,9 @@ #include <filepathcaching.h> #include <refactoringdatabaseinitializer.h> #include <precompiledheadersupdatedmessage.h> +#include <removegeneratedfilesmessage.h> #include <removeprojectpartsmessage.h> +#include <updategeneratedfilesmessage.h> #include <updateprojectpartsmessage.h> namespace { @@ -167,7 +169,6 @@ TEST_F(PchManagerClient, ProjectPartPchRemovedFromDatabase) { EXPECT_CALL(mockPrecompiledHeaderStorage, deletePrecompiledHeader(TypedEq<Utils::SmallStringView>(projectPartId))); - projectUpdater.removeProjectParts({QString(projectPartId)}); } diff --git a/tests/unit/unittest/pchmanagerclientserverinprocess-test.cpp b/tests/unit/unittest/pchmanagerclientserverinprocess-test.cpp index f37fe2ae5e..248e9abf63 100644 --- a/tests/unit/unittest/pchmanagerclientserverinprocess-test.cpp +++ b/tests/unit/unittest/pchmanagerclientserverinprocess-test.cpp @@ -32,7 +32,9 @@ #include <pchmanagerclientproxy.h> #include <pchmanagerserverproxy.h> #include <precompiledheadersupdatedmessage.h> +#include <removegeneratedfilesmessage.h> #include <removeprojectpartsmessage.h> +#include <updategeneratedfilesmessage.h> #include <updateprojectpartsmessage.h> #include <QBuffer> @@ -41,10 +43,12 @@ #include <vector> +using ClangBackEnd::UpdateGeneratedFilesMessage; using ClangBackEnd::UpdateProjectPartsMessage; +using ClangBackEnd::RemoveGeneratedFilesMessage; +using ClangBackEnd::RemoveProjectPartsMessage; using ClangBackEnd::V2::FileContainer; using ClangBackEnd::V2::ProjectPartContainer; -using ClangBackEnd::RemoveProjectPartsMessage; using ClangBackEnd::PrecompiledHeadersUpdatedMessage; using ::testing::Args; @@ -98,8 +102,7 @@ TEST_F(PchManagerClientServerInProcess, SendUpdateProjectPartsMessage) {"/includes"}, {{1, 1}}, {{1, 2}}}; - FileContainer fileContainer{{"/path/to/", "file"}, "content", {}}; - UpdateProjectPartsMessage message{{projectPart2}, {fileContainer}}; + UpdateProjectPartsMessage message{{projectPart2}}; EXPECT_CALL(mockPchManagerServer, updateProjectParts(message)); @@ -107,6 +110,17 @@ TEST_F(PchManagerClientServerInProcess, SendUpdateProjectPartsMessage) scheduleServerMessages(); } +TEST_F(PchManagerClientServerInProcess, SendUpdateGeneratedFilesMessage) +{ + FileContainer fileContainer{{"/path/to/", "file"}, "content", {}}; + UpdateGeneratedFilesMessage message{{fileContainer}}; + + EXPECT_CALL(mockPchManagerServer, updateGeneratedFiles(message)); + + serverProxy.updateGeneratedFiles(message.clone()); + scheduleServerMessages(); +} + TEST_F(PchManagerClientServerInProcess, SendRemoveProjectPartsMessage) { RemoveProjectPartsMessage message{{"projectPartId1", "projectPartId2"}}; @@ -117,6 +131,16 @@ TEST_F(PchManagerClientServerInProcess, SendRemoveProjectPartsMessage) scheduleServerMessages(); } +TEST_F(PchManagerClientServerInProcess, SendRemoveGeneratedFilesMessage) +{ + RemoveGeneratedFilesMessage message{{{"/path/to/", "file"}}}; + + EXPECT_CALL(mockPchManagerServer, removeGeneratedFiles(message)); + + serverProxy.removeGeneratedFiles(message.clone()); + scheduleServerMessages(); +} + TEST_F(PchManagerClientServerInProcess, SendPrecompiledHeaderUpdatedMessage) { PrecompiledHeadersUpdatedMessage message{{{"projectPartId", "/path/to/pch", 1}}}; diff --git a/tests/unit/unittest/pchmanagerserver-test.cpp b/tests/unit/unittest/pchmanagerserver-test.cpp index 995045d0ff..276aed07b2 100644 --- a/tests/unit/unittest/pchmanagerserver-test.cpp +++ b/tests/unit/unittest/pchmanagerserver-test.cpp @@ -35,6 +35,7 @@ #include <precompiledheadersupdatedmessage.h> #include <refactoringdatabaseinitializer.h> #include <removeprojectpartsmessage.h> +#include <updategeneratedfilesmessage.h> #include <updateprojectpartsmessage.h> namespace { @@ -82,14 +83,14 @@ protected: {id(main2Path)}}; std::vector<ProjectPartContainer> projectParts{projectPart1, projectPart2}; FileContainer generatedFile{{"/path/to/", "file"}, "content", {}}; - ClangBackEnd::UpdateProjectPartsMessage UpdateProjectPartsMessage{Utils::clone(projectParts), - {generatedFile}}; + ClangBackEnd::UpdateProjectPartsMessage updateProjectPartsMessage{Utils::clone(projectParts)}; + ClangBackEnd::UpdateGeneratedFilesMessage updateGeneratedFilesMessage{{generatedFile}}; ClangBackEnd::ProjectPartPch projectPartPch1{projectPart1.projectPartId.clone(), "/path1/to/pch", 1}; ClangBackEnd::ProjectPartPch projectPartPch2{projectPart2.projectPartId.clone(), "/path2/to/pch", 1}; std::vector<ClangBackEnd::ProjectPartPch> projectPartPchs{projectPartPch1, projectPartPch2}; ClangBackEnd::PrecompiledHeadersUpdatedMessage precompiledHeaderUpdatedMessage1{{projectPartPch1}}; ClangBackEnd::PrecompiledHeadersUpdatedMessage precompiledHeaderUpdatedMessage2{{projectPartPch2}}; - ClangBackEnd::RemoveProjectPartsMessage RemoveProjectPartsMessage{{projectPart1.projectPartId.clone(), + ClangBackEnd::RemoveProjectPartsMessage removeProjectPartsMessage{{projectPart1.projectPartId.clone(), projectPart2.projectPartId.clone()}}; }; @@ -109,41 +110,46 @@ TEST_F(PchManagerServer, DoNotCallPrecompiledHeadersForUnsuccessfullyFinishedTas } TEST_F(PchManagerServer, CallBuildInPchCreator) +{; + EXPECT_CALL(mockPchCreator, generatePchs(updateProjectPartsMessage.projectsParts)); + + server.updateProjectParts(updateProjectPartsMessage.clone()); +} + +TEST_F(PchManagerServer, CallSetGeneratedFiles) { - auto &&callSetGeneratedFiles = EXPECT_CALL(mockPchCreator, - setGeneratedFiles(UpdateProjectPartsMessage.generatedFiles)); - EXPECT_CALL(mockPchCreator, generatePchs(UpdateProjectPartsMessage.projectsParts)) - .After(callSetGeneratedFiles); + EXPECT_CALL(mockPchCreator, + setGeneratedFiles(updateGeneratedFilesMessage.generatedFiles)); - server.updateProjectParts(UpdateProjectPartsMessage.clone()); + server.updateGeneratedFiles(updateGeneratedFilesMessage.clone()); } TEST_F(PchManagerServer, UpdateIncludesOfFileWatcher) { EXPECT_CALL(mockClangPathWatcher, updateIdPaths(idPaths)); - server.updateProjectParts(UpdateProjectPartsMessage.clone()); + server.updateProjectParts(updateProjectPartsMessage.clone()); } TEST_F(PchManagerServer, GetChangedProjectPartsFromProjectParts) { EXPECT_CALL(mockProjectParts, update(_)); - server.updateProjectParts(UpdateProjectPartsMessage.clone()); + server.updateProjectParts(updateProjectPartsMessage.clone()); } TEST_F(PchManagerServer, RemoveIncludesFromFileWatcher) { - EXPECT_CALL(mockClangPathWatcher, removeIds(RemoveProjectPartsMessage.projectsPartIds)); + EXPECT_CALL(mockClangPathWatcher, removeIds(removeProjectPartsMessage.projectsPartIds)); - server.removeProjectParts(RemoveProjectPartsMessage.clone()); + server.removeProjectParts(removeProjectPartsMessage.clone()); } TEST_F(PchManagerServer, RemoveProjectPartsFromProjectParts) { - EXPECT_CALL(mockProjectParts, remove(RemoveProjectPartsMessage.projectsPartIds)); + EXPECT_CALL(mockProjectParts, remove(removeProjectPartsMessage.projectsPartIds)); - server.removeProjectParts(RemoveProjectPartsMessage.clone()); + server.removeProjectParts(removeProjectPartsMessage.clone()); } TEST_F(PchManagerServer, SetPathWatcherNotifier) @@ -155,7 +161,7 @@ TEST_F(PchManagerServer, SetPathWatcherNotifier) TEST_F(PchManagerServer, CallProjectsInProjectPartsForIncludeChange) { - server.updateProjectParts(UpdateProjectPartsMessage.clone()); + server.updateProjectParts(updateProjectPartsMessage.clone()); EXPECT_CALL(mockProjectParts, projects(ElementsAre(projectPart1.projectPartId))); @@ -164,7 +170,7 @@ TEST_F(PchManagerServer, CallProjectsInProjectPartsForIncludeChange) TEST_F(PchManagerServer, CallGeneratePchsInPchCreatorForIncludeChange) { - server.updateProjectParts(UpdateProjectPartsMessage.clone()); + server.updateProjectParts(updateProjectPartsMessage.clone()); EXPECT_CALL(mockPchCreator, generatePchs(ElementsAre(projectPart1))); @@ -173,7 +179,7 @@ TEST_F(PchManagerServer, CallGeneratePchsInPchCreatorForIncludeChange) TEST_F(PchManagerServer, CallUpdateIdPathsInFileSystemWatcherForIncludeChange) { - server.updateProjectParts(UpdateProjectPartsMessage.clone()); + server.updateProjectParts(updateProjectPartsMessage.clone()); EXPECT_CALL(mockClangPathWatcher, updateIdPaths(idPaths)); diff --git a/tests/unit/unittest/projectupdater-test.cpp b/tests/unit/unittest/projectupdater-test.cpp index a77dfc0b5b..4e43d6b577 100644 --- a/tests/unit/unittest/projectupdater-test.cpp +++ b/tests/unit/unittest/projectupdater-test.cpp @@ -37,7 +37,9 @@ #include <precompiledheaderstorage.h> #include <precompiledheadersupdatedmessage.h> #include <refactoringdatabaseinitializer.h> +#include <removegeneratedfilesmessage.h> #include <removeprojectpartsmessage.h> +#include <updategeneratedfilesmessage.h> #include <updateprojectpartsmessage.h> #include <cpptools/compileroptionsbuilder.h> @@ -121,14 +123,23 @@ protected: TEST_F(ProjectUpdater, CallUpdateProjectParts) { std::vector<CppTools::ProjectPart*> projectParts = {&projectPart, &projectPart}; - ClangBackEnd::UpdateProjectPartsMessage message{{expectedContainer.clone(), expectedContainer.clone()}, - {generatedFile}}; + ClangBackEnd::UpdateProjectPartsMessage message{{expectedContainer.clone(), expectedContainer.clone()}}; EXPECT_CALL(mockPchManagerServer, updateProjectParts(message)); updater.updateProjectParts(projectParts, {generatedFile}); } +TEST_F(ProjectUpdater, CallUpdateGeneratedFiles) +{ + std::vector<CppTools::ProjectPart*> projectParts = {&projectPart, &projectPart}; + ClangBackEnd::UpdateGeneratedFilesMessage message{{generatedFile}}; + + EXPECT_CALL(mockPchManagerServer, updateGeneratedFiles(message)); + + updater.updateProjectParts(projectParts, {generatedFile}); +} + TEST_F(ProjectUpdater, CallRemoveProjectParts) { ClangBackEnd::RemoveProjectPartsMessage message{{projectPartId, projectPartId2}}; diff --git a/tests/unit/unittest/refactoringclientserverinprocess-test.cpp b/tests/unit/unittest/refactoringclientserverinprocess-test.cpp index a5658ab178..278c33efa3 100644 --- a/tests/unit/unittest/refactoringclientserverinprocess-test.cpp +++ b/tests/unit/unittest/refactoringclientserverinprocess-test.cpp @@ -47,10 +47,12 @@ using ::testing::Args; using ::testing::Property; using ::testing::Eq; +using ClangBackEnd::RemoveGeneratedFilesMessage; +using ClangBackEnd::RemoveProjectPartsMessage; using ClangBackEnd::UpdateProjectPartsMessage; +using ClangBackEnd::UpdateGeneratedFilesMessage; using ClangBackEnd::V2::FileContainer; using ClangBackEnd::V2::ProjectPartContainer; -using ClangBackEnd::RemoveProjectPartsMessage; class RefactoringClientServerInProcess : public ::testing::Test { @@ -182,8 +184,7 @@ TEST_F(RefactoringClientServerInProcess, SendUpdateProjectPartsMessage) {"/includes"}, {{1, 1}}, {{1, 2}}}; - FileContainer fileContainer{{"/path/to/", "file"}, "content", {}}; - UpdateProjectPartsMessage message{{projectPart2}, {fileContainer}}; + UpdateProjectPartsMessage message{{projectPart2}}; EXPECT_CALL(mockRefactoringServer, updateProjectParts(message)); @@ -191,6 +192,17 @@ TEST_F(RefactoringClientServerInProcess, SendUpdateProjectPartsMessage) scheduleServerMessages(); } +TEST_F(RefactoringClientServerInProcess, SendUpdateGeneratedFilesMessage) +{ + FileContainer fileContainer{{"/path/to/", "file"}, "content", {}}; + UpdateGeneratedFilesMessage message{{fileContainer}}; + + EXPECT_CALL(mockRefactoringServer, updateGeneratedFiles(message)); + + serverProxy.updateGeneratedFiles(message.clone()); + scheduleServerMessages(); +} + TEST_F(RefactoringClientServerInProcess, SendRemoveProjectPartsMessage) { RemoveProjectPartsMessage message{{"projectPartId1", "projectPartId2"}}; @@ -201,6 +213,16 @@ TEST_F(RefactoringClientServerInProcess, SendRemoveProjectPartsMessage) scheduleServerMessages(); } +TEST_F(RefactoringClientServerInProcess, SendRemoveGeneratedFilesMessage) +{ + RemoveGeneratedFilesMessage message{{{"/path/to/", "file"}}}; + + EXPECT_CALL(mockRefactoringServer, removeGeneratedFiles(message)); + + serverProxy.removeGeneratedFiles(message.clone()); + scheduleServerMessages(); +} + TEST_F(RefactoringClientServerInProcess, CancelMessage) { EXPECT_CALL(mockRefactoringServer, cancel()); diff --git a/tests/unit/unittest/refactoringserver-test.cpp b/tests/unit/unittest/refactoringserver-test.cpp index 0abe22f1b6..51cae8697e 100644 --- a/tests/unit/unittest/refactoringserver-test.cpp +++ b/tests/unit/unittest/refactoringserver-test.cpp @@ -298,6 +298,20 @@ TEST_F(RefactoringServerSlowTest, ForInvalidRequestSourceRangesAndDiagnosticsGet refactoringServer.requestSourceRangesAndDiagnosticsForQueryMessage(std::move(message)); } +TEST_F(RefactoringServer, UpdateGeneratedFilesSetMemberWhichIsUsedForSymbolIndexing) +{ + FileContainers unsaved{{{TESTDATA_DIR, "query_simplefunction.h"}, + "void f();", + {}}}; + + + EXPECT_CALL(mockSymbolIndexing, + updateProjectParts(_, unsaved)); + + refactoringServer.updateGeneratedFiles(Utils::clone(unsaved)); + refactoringServer.updateProjectParts({}); +} + TEST_F(RefactoringServer, UpdateProjectPartsCallsSymbolIndexingUpdateProjectParts) { ProjectPartContainers projectParts{{{"projectPartId", @@ -306,17 +320,15 @@ TEST_F(RefactoringServer, UpdateProjectPartsCallsSymbolIndexingUpdateProjectPart {"/includes"}, {filePathId("header1.h")}, {filePathId("main.cpp")}}}}; - FileContainers unsaved{{{TESTDATA_DIR, "query_simplefunction.h"}, - "void f();", - {}}}; EXPECT_CALL(mockSymbolIndexing, - updateProjectParts(projectParts, unsaved)); + updateProjectParts(projectParts, _)); - refactoringServer.updateProjectParts({Utils::clone(projectParts), Utils::clone(unsaved)}); + refactoringServer.updateProjectParts({Utils::clone(projectParts)}); } + void RefactoringServer::SetUp() { temporaryFile.open(); |