forked from qt-creator/qt-creator
ClangPchManager: Add dependency building to progress counter
Task-number: QTCREATORBUG-21950 Change-Id: I409b03d53b374c5bf66ba6c7c9e50e98a7b239c4 Reviewed-by: Ivan Donchevskii <ivan.donchevskii@qt.io>
This commit is contained in:
@@ -246,8 +246,13 @@ struct Data // because we have a cycle dependency
|
||||
modifiedTimeChecker,
|
||||
buildDependencyCollector,
|
||||
database};
|
||||
ClangBackEnd::PchTaskGenerator pchTaskGenerator{buildDependencyProvider, pchTaskMerger};
|
||||
PchManagerServer clangPchManagerServer{includeWatcher, pchTaskGenerator, projectParts, generatedFiles};
|
||||
ClangBackEnd::PchTaskGenerator pchTaskGenerator{buildDependencyProvider,
|
||||
pchTaskMerger,
|
||||
progressCounter};
|
||||
PchManagerServer clangPchManagerServer{includeWatcher,
|
||||
pchTaskGenerator,
|
||||
projectParts,
|
||||
generatedFiles};
|
||||
TaskScheduler systemTaskScheduler{pchCreatorManager,
|
||||
pchTaskQueue,
|
||||
progressCounter,
|
||||
|
@@ -27,9 +27,10 @@
|
||||
|
||||
#include "builddependenciesproviderinterface.h"
|
||||
#include "pchtasksmergerinterface.h"
|
||||
|
||||
#include "usedmacrofilter.h"
|
||||
|
||||
#include <progresscounter.h>
|
||||
|
||||
#include <utils/algorithm.h>
|
||||
|
||||
namespace ClangBackEnd {
|
||||
@@ -40,6 +41,8 @@ void PchTaskGenerator::addProjectParts(ProjectPartContainers &&projectParts,
|
||||
PchTaskSets pchTaskSets;
|
||||
pchTaskSets.reserve(projectParts.size());
|
||||
|
||||
m_progressCounter.addTotal(static_cast<int>(projectParts.size()));
|
||||
|
||||
for (auto &projectPart : projectParts) {
|
||||
BuildDependency buildDependency = m_buildDependenciesProvider.create(projectPart);
|
||||
UsedMacroFilter filter{buildDependency.includes,
|
||||
@@ -68,6 +71,7 @@ void PchTaskGenerator::addProjectParts(ProjectPartContainers &&projectParts,
|
||||
projectPart.language,
|
||||
projectPart.languageVersion,
|
||||
projectPart.languageExtension});
|
||||
m_progressCounter.addProgress(1);
|
||||
}
|
||||
|
||||
m_pchTasksMergerInterface.mergeTasks(std::move(pchTaskSets), std::move(toolChainArguments));
|
||||
|
@@ -35,14 +35,18 @@ namespace ClangBackEnd {
|
||||
class PchTasksMergerInterface;
|
||||
|
||||
class BuildDependenciesProviderInterface;
|
||||
class ProgressCounter;
|
||||
|
||||
class PchTaskGenerator : public PchTaskGeneratorInterface
|
||||
{
|
||||
public:
|
||||
PchTaskGenerator(BuildDependenciesProviderInterface &buildDependenciesProvider,
|
||||
PchTasksMergerInterface &pchTasksMergerInterface)
|
||||
PchTasksMergerInterface &pchTasksMergerInterface,
|
||||
ProgressCounter &progressCounter)
|
||||
: m_buildDependenciesProvider(buildDependenciesProvider)
|
||||
, m_pchTasksMergerInterface(pchTasksMergerInterface)
|
||||
, m_progressCounter(progressCounter)
|
||||
|
||||
{}
|
||||
|
||||
void addProjectParts(ProjectPartContainers &&projectParts,
|
||||
@@ -52,7 +56,7 @@ public:
|
||||
private:
|
||||
BuildDependenciesProviderInterface &m_buildDependenciesProvider;
|
||||
PchTasksMergerInterface &m_pchTasksMergerInterface;
|
||||
ProgressCounter &m_progressCounter;
|
||||
};
|
||||
|
||||
|
||||
} // namespace ClangBackEnd
|
||||
|
@@ -29,6 +29,7 @@
|
||||
#include "mockpchtasksmerger.h"
|
||||
|
||||
#include <pchtaskgenerator.h>
|
||||
#include <progresscounter.h>
|
||||
|
||||
namespace {
|
||||
|
||||
@@ -50,7 +51,11 @@ class PchTaskGenerator : public testing::Test
|
||||
protected:
|
||||
NiceMock<MockBuildDependenciesProvider> mockBuildDependenciesProvider;
|
||||
NiceMock<MockPchTasksMerger> mockPchTaskMerger;
|
||||
ClangBackEnd::PchTaskGenerator generator{mockBuildDependenciesProvider, mockPchTaskMerger};
|
||||
NiceMock<MockFunction<void(int, int)>> mockProgressCounterCallback;
|
||||
ClangBackEnd::ProgressCounter progressCounter{mockProgressCounterCallback.AsStdFunction()};
|
||||
ClangBackEnd::PchTaskGenerator generator{mockBuildDependenciesProvider,
|
||||
mockPchTaskMerger,
|
||||
progressCounter};
|
||||
ClangBackEnd::ProjectPartContainer projectPart1{
|
||||
"ProjectPart1",
|
||||
{"--yi"},
|
||||
@@ -132,6 +137,18 @@ TEST_F(PchTaskGenerator, AddProjectParts)
|
||||
generator.addProjectParts({projectPart1}, {"ToolChainArgument"});
|
||||
}
|
||||
|
||||
TEST_F(PchTaskGenerator, ProgressCounter)
|
||||
{
|
||||
ON_CALL(mockBuildDependenciesProvider, create(_)).WillByDefault(Return(buildDependency));
|
||||
|
||||
EXPECT_CALL(mockProgressCounterCallback, Call(0, 3));
|
||||
EXPECT_CALL(mockProgressCounterCallback, Call(1, 3));
|
||||
EXPECT_CALL(mockProgressCounterCallback, Call(2, 3));
|
||||
EXPECT_CALL(mockProgressCounterCallback, Call(3, 3));
|
||||
|
||||
generator.addProjectParts({projectPart1, projectPart1, projectPart1}, {"ToolChainArgument"});
|
||||
}
|
||||
|
||||
TEST_F(PchTaskGenerator, RemoveProjectParts)
|
||||
{
|
||||
ON_CALL(mockBuildDependenciesProvider, create(_)).WillByDefault(Return(buildDependency));
|
||||
|
Reference in New Issue
Block a user