From 1456608ef7b5ee58e02dafba5639692a891dd9f0 Mon Sep 17 00:00:00 2001 From: Matt Ward Date: Sat, 8 Feb 2014 17:10:50 +0000 Subject: [PATCH] Fix exception when clicking Manage button. Ignore non-MSBuild based projects when the Manage button is clicked in the Manage Packages dialog. --- .../Project/Src/PackageManagementSolution.cs | 2 +- .../Src/PackageManagementSolutionTests.cs | 21 ++++++++++++++++++- 2 files changed, 21 insertions(+), 2 deletions(-) diff --git a/src/AddIns/Misc/PackageManagement/Project/Src/PackageManagementSolution.cs b/src/AddIns/Misc/PackageManagement/Project/Src/PackageManagementSolution.cs index df32498974..5de54d6c1a 100644 --- a/src/AddIns/Misc/PackageManagement/Project/Src/PackageManagementSolution.cs +++ b/src/AddIns/Misc/PackageManagement/Project/Src/PackageManagementSolution.cs @@ -126,7 +126,7 @@ namespace ICSharpCode.PackageManagement public IEnumerable GetMSBuildProjects() { - return projectService.GetOpenProjects(); + return projectService.GetOpenProjects().OfType(); } public bool IsOpen { diff --git a/src/AddIns/Misc/PackageManagement/Test/Src/PackageManagementSolutionTests.cs b/src/AddIns/Misc/PackageManagement/Test/Src/PackageManagementSolutionTests.cs index a8bced1827..b028f1e140 100644 --- a/src/AddIns/Misc/PackageManagement/Test/Src/PackageManagementSolutionTests.cs +++ b/src/AddIns/Misc/PackageManagement/Test/Src/PackageManagementSolutionTests.cs @@ -4,13 +4,13 @@ using System; using System.Collections.Generic; using System.Linq; - using ICSharpCode.PackageManagement; using ICSharpCode.PackageManagement.Design; using ICSharpCode.SharpDevelop.Project; using NuGet; using NUnit.Framework; using PackageManagement.Tests.Helpers; +using Rhino.Mocks; namespace PackageManagement.Tests { @@ -72,6 +72,12 @@ namespace PackageManagement.Tests return package; } + void AddNonMSBuildBasedProjectToOpenProjects() + { + IProject project = MockRepository.GenerateStub(); + fakeProjectService.FakeOpenProjects.Add(project); + } + [Test] public void GetActiveProject_ProjectIsSelected_CreatesProjectUsingCurrentProjectSelectedInSharpDevelop() { @@ -597,5 +603,18 @@ namespace PackageManagement.Tests Assert.AreEqual(fakeRegisteredPackageRepositories.ActiveRepository, fakeProjectFactory.RepositoriesPassedToCreateProject[0]); Assert.AreEqual(fakeRegisteredPackageRepositories.ActiveRepository, fakeProjectFactory.RepositoriesPassedToCreateProject[1]); } + + [Test] + public void GetMSBuildProjects_TwoProjectsInOpenSolutionButOneIsNotMSBuildBased_ReturnsOneMSBuildBasedProject() + { + CreateSolution(); + TestableProject project = AddProjectToOpenProjects("A"); + AddNonMSBuildBasedProjectToOpenProjects(); + + IEnumerable projects = solution.GetMSBuildProjects(); + var expectedProjects = new IProject[] { project }; + + CollectionAssert.AreEqual(expectedProjects, projects); + } } }