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,
|
modifiedTimeChecker,
|
||||||
buildDependencyCollector,
|
buildDependencyCollector,
|
||||||
database};
|
database};
|
||||||
ClangBackEnd::PchTaskGenerator pchTaskGenerator{buildDependencyProvider, pchTaskMerger};
|
ClangBackEnd::PchTaskGenerator pchTaskGenerator{buildDependencyProvider,
|
||||||
PchManagerServer clangPchManagerServer{includeWatcher, pchTaskGenerator, projectParts, generatedFiles};
|
pchTaskMerger,
|
||||||
|
progressCounter};
|
||||||
|
PchManagerServer clangPchManagerServer{includeWatcher,
|
||||||
|
pchTaskGenerator,
|
||||||
|
projectParts,
|
||||||
|
generatedFiles};
|
||||||
TaskScheduler systemTaskScheduler{pchCreatorManager,
|
TaskScheduler systemTaskScheduler{pchCreatorManager,
|
||||||
pchTaskQueue,
|
pchTaskQueue,
|
||||||
progressCounter,
|
progressCounter,
|
||||||
|
@@ -27,9 +27,10 @@
|
|||||||
|
|
||||||
#include "builddependenciesproviderinterface.h"
|
#include "builddependenciesproviderinterface.h"
|
||||||
#include "pchtasksmergerinterface.h"
|
#include "pchtasksmergerinterface.h"
|
||||||
|
|
||||||
#include "usedmacrofilter.h"
|
#include "usedmacrofilter.h"
|
||||||
|
|
||||||
|
#include <progresscounter.h>
|
||||||
|
|
||||||
#include <utils/algorithm.h>
|
#include <utils/algorithm.h>
|
||||||
|
|
||||||
namespace ClangBackEnd {
|
namespace ClangBackEnd {
|
||||||
@@ -40,6 +41,8 @@ void PchTaskGenerator::addProjectParts(ProjectPartContainers &&projectParts,
|
|||||||
PchTaskSets pchTaskSets;
|
PchTaskSets pchTaskSets;
|
||||||
pchTaskSets.reserve(projectParts.size());
|
pchTaskSets.reserve(projectParts.size());
|
||||||
|
|
||||||
|
m_progressCounter.addTotal(static_cast<int>(projectParts.size()));
|
||||||
|
|
||||||
for (auto &projectPart : projectParts) {
|
for (auto &projectPart : projectParts) {
|
||||||
BuildDependency buildDependency = m_buildDependenciesProvider.create(projectPart);
|
BuildDependency buildDependency = m_buildDependenciesProvider.create(projectPart);
|
||||||
UsedMacroFilter filter{buildDependency.includes,
|
UsedMacroFilter filter{buildDependency.includes,
|
||||||
@@ -68,6 +71,7 @@ void PchTaskGenerator::addProjectParts(ProjectPartContainers &&projectParts,
|
|||||||
projectPart.language,
|
projectPart.language,
|
||||||
projectPart.languageVersion,
|
projectPart.languageVersion,
|
||||||
projectPart.languageExtension});
|
projectPart.languageExtension});
|
||||||
|
m_progressCounter.addProgress(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
m_pchTasksMergerInterface.mergeTasks(std::move(pchTaskSets), std::move(toolChainArguments));
|
m_pchTasksMergerInterface.mergeTasks(std::move(pchTaskSets), std::move(toolChainArguments));
|
||||||
|
@@ -35,14 +35,18 @@ namespace ClangBackEnd {
|
|||||||
class PchTasksMergerInterface;
|
class PchTasksMergerInterface;
|
||||||
|
|
||||||
class BuildDependenciesProviderInterface;
|
class BuildDependenciesProviderInterface;
|
||||||
|
class ProgressCounter;
|
||||||
|
|
||||||
class PchTaskGenerator : public PchTaskGeneratorInterface
|
class PchTaskGenerator : public PchTaskGeneratorInterface
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
PchTaskGenerator(BuildDependenciesProviderInterface &buildDependenciesProvider,
|
PchTaskGenerator(BuildDependenciesProviderInterface &buildDependenciesProvider,
|
||||||
PchTasksMergerInterface &pchTasksMergerInterface)
|
PchTasksMergerInterface &pchTasksMergerInterface,
|
||||||
|
ProgressCounter &progressCounter)
|
||||||
: m_buildDependenciesProvider(buildDependenciesProvider)
|
: m_buildDependenciesProvider(buildDependenciesProvider)
|
||||||
, m_pchTasksMergerInterface(pchTasksMergerInterface)
|
, m_pchTasksMergerInterface(pchTasksMergerInterface)
|
||||||
|
, m_progressCounter(progressCounter)
|
||||||
|
|
||||||
{}
|
{}
|
||||||
|
|
||||||
void addProjectParts(ProjectPartContainers &&projectParts,
|
void addProjectParts(ProjectPartContainers &&projectParts,
|
||||||
@@ -52,7 +56,7 @@ public:
|
|||||||
private:
|
private:
|
||||||
BuildDependenciesProviderInterface &m_buildDependenciesProvider;
|
BuildDependenciesProviderInterface &m_buildDependenciesProvider;
|
||||||
PchTasksMergerInterface &m_pchTasksMergerInterface;
|
PchTasksMergerInterface &m_pchTasksMergerInterface;
|
||||||
|
ProgressCounter &m_progressCounter;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
} // namespace ClangBackEnd
|
} // namespace ClangBackEnd
|
||||||
|
@@ -29,6 +29,7 @@
|
|||||||
#include "mockpchtasksmerger.h"
|
#include "mockpchtasksmerger.h"
|
||||||
|
|
||||||
#include <pchtaskgenerator.h>
|
#include <pchtaskgenerator.h>
|
||||||
|
#include <progresscounter.h>
|
||||||
|
|
||||||
namespace {
|
namespace {
|
||||||
|
|
||||||
@@ -50,7 +51,11 @@ class PchTaskGenerator : public testing::Test
|
|||||||
protected:
|
protected:
|
||||||
NiceMock<MockBuildDependenciesProvider> mockBuildDependenciesProvider;
|
NiceMock<MockBuildDependenciesProvider> mockBuildDependenciesProvider;
|
||||||
NiceMock<MockPchTasksMerger> mockPchTaskMerger;
|
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{
|
ClangBackEnd::ProjectPartContainer projectPart1{
|
||||||
"ProjectPart1",
|
"ProjectPart1",
|
||||||
{"--yi"},
|
{"--yi"},
|
||||||
@@ -132,6 +137,18 @@ TEST_F(PchTaskGenerator, AddProjectParts)
|
|||||||
generator.addProjectParts({projectPart1}, {"ToolChainArgument"});
|
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)
|
TEST_F(PchTaskGenerator, RemoveProjectParts)
|
||||||
{
|
{
|
||||||
ON_CALL(mockBuildDependenciesProvider, create(_)).WillByDefault(Return(buildDependency));
|
ON_CALL(mockBuildDependenciesProvider, create(_)).WillByDefault(Return(buildDependency));
|
||||||
|
Reference in New Issue
Block a user