From 36edaf9380d6bb887ef24ebf663917497b470edf Mon Sep 17 00:00:00 2001 From: Marco Bubke Date: Mon, 21 Jan 2019 17:37:16 +0100 Subject: [PATCH] PchManager: Ensure that the build dependency collector is cleared Change-Id: I7c09117673e34a88f4711a99d8e89406683246f2 Reviewed-by: Ivan Donchevskii --- .../source/builddependencycollector.cpp | 6 +++- .../builddependencycollector-test.cpp | 30 +++++++++++++++++++ 2 files changed, 35 insertions(+), 1 deletion(-) diff --git a/src/tools/clangpchmanagerbackend/source/builddependencycollector.cpp b/src/tools/clangpchmanagerbackend/source/builddependencycollector.cpp index bfbfbf20cd1..833691fa893 100644 --- a/src/tools/clangpchmanagerbackend/source/builddependencycollector.cpp +++ b/src/tools/clangpchmanagerbackend/source/builddependencycollector.cpp @@ -57,7 +57,11 @@ BuildDependency BuildDependencyCollector::create(const ProjectPartContainer &pro collect(); - return std::move(m_buildDependency); + auto buildDependency = std::move(m_buildDependency); + + clear(); + + return buildDependency; } void BuildDependencyCollector::collect() diff --git a/tests/unit/unittest/builddependencycollector-test.cpp b/tests/unit/unittest/builddependencycollector-test.cpp index 1b42f143a06..2c698f735f8 100644 --- a/tests/unit/unittest/builddependencycollector-test.cpp +++ b/tests/unit/unittest/builddependencycollector-test.cpp @@ -667,4 +667,34 @@ TEST_F(BuildDependencyCollector, Create) id(TESTDATA_DIR "/builddependencycollector/system/indirect_system2.h")))))); } + +TEST_F(BuildDependencyCollector, Clear) +{ + using ClangBackEnd::IncludeSearchPathType; + ClangBackEnd::BuildDependencyCollector collector{filePathCache}; + ClangBackEnd::ProjectPartContainer projectPart{ + "project1", + {}, + {}, + {{TESTDATA_DIR "/builddependencycollector/system", 1, IncludeSearchPathType::System}}, + { + {TESTDATA_DIR "/builddependencycollector/project", 1, IncludeSearchPathType::User}, + {TESTDATA_DIR "/builddependencycollector/external", 2, IncludeSearchPathType::User}, + }, + { + id(TESTDATA_DIR "/builddependencycollector/project/header1.h"), + id(TESTDATA_DIR "/builddependencycollector/project/header2.h"), + id(TESTDATA_DIR "/builddependencycollector/project/missingfile.h"), + id(TESTDATA_DIR "/builddependencycollector/project/macros.h"), + }, + {}, + Utils::Language::Cxx, + Utils::LanguageVersion::CXX11, + Utils::LanguageExtension::None}; + collector.create(projectPart); + + auto buildDependency = collector.create(projectPart); + + ASSERT_THAT(buildDependency.includes, IsEmpty()); +} } // namespace