From 14a44948d87f9ff0de1e6963fb6ed10fd994f101 Mon Sep 17 00:00:00 2001 From: Marco Bubke Date: Mon, 4 Feb 2019 15:49:26 +0100 Subject: [PATCH] ClangPchManager: Fix deferred project parts Change-Id: Ie760c0dd269c643a147d7edf3f1b812cd27fe4c4 Reviewed-by: Ivan Donchevskii --- .../clangpchmanagerbackend/source/pchmanagerserver.cpp | 2 ++ tests/unit/unittest/pchmanagerserver-test.cpp | 7 +++++++ 2 files changed, 9 insertions(+) diff --git a/src/tools/clangpchmanagerbackend/source/pchmanagerserver.cpp b/src/tools/clangpchmanagerbackend/source/pchmanagerserver.cpp index 30b6e566fa5..06adccff5b4 100644 --- a/src/tools/clangpchmanagerbackend/source/pchmanagerserver.cpp +++ b/src/tools/clangpchmanagerbackend/source/pchmanagerserver.cpp @@ -66,6 +66,8 @@ void PchManagerServer::updateProjectParts(UpdateProjectPartsMessage &&message) if (m_generatedFiles.isValid()) { m_pchTaskGenerator.addProjectParts(std::move(newProjectParts), std::move(message.toolChainArguments)); + } else { + m_projectParts.updateDeferred(newProjectParts); } } diff --git a/tests/unit/unittest/pchmanagerserver-test.cpp b/tests/unit/unittest/pchmanagerserver-test.cpp index 9100b51dc30..0cb6e3d1baf 100644 --- a/tests/unit/unittest/pchmanagerserver-test.cpp +++ b/tests/unit/unittest/pchmanagerserver-test.cpp @@ -47,6 +47,7 @@ using Utils::SmallString; using ClangBackEnd::V2::FileContainer; using ClangBackEnd::V2::FileContainers; using ClangBackEnd::ProjectPartContainer; +using ClangBackEnd::ProjectPartContainers; class PchManagerServer : public ::testing::Test { @@ -198,8 +199,11 @@ TEST_F(PchManagerServer, DontGeneratePchIfGeneratedFilesAreNotValid) { InSequence s; + EXPECT_CALL(mockProjectParts, update(ElementsAre(projectPart1))) + .WillOnce(Return(ProjectPartContainers{projectPart1})); EXPECT_CALL(mockGeneratedFiles, isValid()).WillOnce(Return(false)); EXPECT_CALL(mockPchTaskGenerator, addProjectParts(_, _)).Times(0); + EXPECT_CALL(mockProjectParts, updateDeferred(ElementsAre(projectPart1))); server.updateProjectParts( ClangBackEnd::UpdateProjectPartsMessage{{projectPart1}, {"toolChainArgument"}}); @@ -209,8 +213,11 @@ TEST_F(PchManagerServer, GeneratePchIfGeneratedFilesAreValid) { InSequence s; + EXPECT_CALL(mockProjectParts, update(ElementsAre(projectPart1))) + .WillOnce(Return(ProjectPartContainers{projectPart1})); EXPECT_CALL(mockGeneratedFiles, isValid()).WillOnce(Return(true)); EXPECT_CALL(mockPchTaskGenerator, addProjectParts(_, _)); + EXPECT_CALL(mockProjectParts, updateDeferred(_)).Times(0); server.updateProjectParts( ClangBackEnd::UpdateProjectPartsMessage{{projectPart1}, {"toolChainArgument"}});