forked from qt-creator/qt-creator
CppTools: Fix choosing project part after project open
As long as there are project parts for a source file, always determine the best project part, instead of trying to stick to the previous one. This ensures the best project part at all times and simplifies the code. Change-Id: I25ea3eb43a5a3e6d93688d4b8965f596dc9ae22b Reviewed-by: David Schulz <david.schulz@qt.io>
This commit is contained in:
@@ -53,8 +53,8 @@ protected:
|
||||
ProjectPartInfo::NoHint};
|
||||
QString preferredProjectPartId;
|
||||
const ProjectExplorer::Project *activeProject = nullptr;
|
||||
bool projectHasChanged = false;
|
||||
Language languagePreference = Language::Cxx;
|
||||
bool projectsChanged = false;
|
||||
::ProjectPartChooser chooser;
|
||||
|
||||
QList<ProjectPart::Ptr> projectPartsForFile;
|
||||
@@ -74,17 +74,6 @@ TEST_F(ProjectPartChooser, ChooseManuallySet)
|
||||
ASSERT_THAT(chosen, Eq(p2));
|
||||
}
|
||||
|
||||
TEST_F(ProjectPartChooser, ForMultipleChoosePrevious)
|
||||
{
|
||||
const ProjectPart::Ptr otherProjectPart;
|
||||
projectPartsForFile += otherProjectPart;
|
||||
projectPartsForFile += currentProjectPartInfo.projectPart;
|
||||
|
||||
const ProjectPart::Ptr chosen = choose().projectPart;
|
||||
|
||||
ASSERT_THAT(chosen, Eq(currentProjectPartInfo.projectPart));
|
||||
}
|
||||
|
||||
TEST_F(ProjectPartChooser, ForMultipleChooseFromActiveProject)
|
||||
{
|
||||
const QList<ProjectPart::Ptr> projectParts = createProjectPartsWithDifferentProjects();
|
||||
@@ -131,7 +120,6 @@ TEST_F(ProjectPartChooser, ForMultipleCheckIfActiveProjectChanged)
|
||||
projectPartsForFile += projectParts;
|
||||
currentProjectPartInfo.projectPart = firstProjectPart;
|
||||
activeProject = secondProjectPart->project;
|
||||
projectHasChanged = true;
|
||||
|
||||
const ProjectPart::Ptr chosen = choose().projectPart;
|
||||
|
||||
@@ -213,7 +201,7 @@ TEST_F(ProjectPartChooser, ContinueUsingFallbackFromModelManagerIfProjectDoesNot
|
||||
ASSERT_THAT(chosen, Eq(fallbackProjectPart));
|
||||
}
|
||||
|
||||
TEST_F(ProjectPartChooser, StopUsingFallbackFromModelManagerIfProjectChanges)
|
||||
TEST_F(ProjectPartChooser, StopUsingFallbackFromModelManagerIfProjectChanges1)
|
||||
{
|
||||
fallbackProjectPart.reset(new ProjectPart);
|
||||
currentProjectPartInfo.projectPart = fallbackProjectPart;
|
||||
@@ -226,6 +214,20 @@ TEST_F(ProjectPartChooser, StopUsingFallbackFromModelManagerIfProjectChanges)
|
||||
ASSERT_THAT(chosen, Eq(addedProject));
|
||||
}
|
||||
|
||||
TEST_F(ProjectPartChooser, StopUsingFallbackFromModelManagerIfProjectChanges2)
|
||||
{
|
||||
fallbackProjectPart.reset(new ProjectPart);
|
||||
currentProjectPartInfo.projectPart = fallbackProjectPart;
|
||||
currentProjectPartInfo.hint = ProjectPartInfo::IsFallbackMatch;
|
||||
const ProjectPart::Ptr addedProject(new ProjectPart);
|
||||
projectPartsFromDependenciesForFile += addedProject;
|
||||
projectsChanged = true;
|
||||
|
||||
const ProjectPart::Ptr chosen = choose().projectPart;
|
||||
|
||||
ASSERT_THAT(chosen, Eq(addedProject));
|
||||
}
|
||||
|
||||
TEST_F(ProjectPartChooser, IndicateFallbacktoProjectPartFromModelManager)
|
||||
{
|
||||
fallbackProjectPart.reset(new ProjectPart);
|
||||
@@ -237,7 +239,7 @@ TEST_F(ProjectPartChooser, IndicateFallbacktoProjectPartFromModelManager)
|
||||
|
||||
void ProjectPartChooser::SetUp()
|
||||
{
|
||||
chooser.setFallbackProjectPart([&](){
|
||||
chooser.setFallbackProjectPart([&]() {
|
||||
return fallbackProjectPart;
|
||||
});
|
||||
chooser.setProjectPartsForFile([&](const QString &) {
|
||||
@@ -255,7 +257,7 @@ const ProjectPartInfo ProjectPartChooser::choose() const
|
||||
preferredProjectPartId,
|
||||
activeProject,
|
||||
languagePreference,
|
||||
projectHasChanged);
|
||||
projectsChanged);
|
||||
}
|
||||
|
||||
QList<ProjectPart::Ptr> ProjectPartChooser::createProjectPartsWithDifferentProjects()
|
||||
|
||||
Reference in New Issue
Block a user