Browse Source

Fix Get-Package NuGet cmdlet not finding projects.

The ProjectName parameter now supports finding projects by filename.
pull/28/head
Matt Ward 13 years ago
parent
commit
04c483a83a
  1. 12
      src/AddIns/Misc/PackageManagement/Project/Src/OpenMSBuildProjects.cs
  2. 1
      src/AddIns/Misc/PackageManagement/Test/PackageManagement.Tests.csproj
  3. 67
      src/AddIns/Misc/PackageManagement/Test/Src/OpenMSBuildProjectsTests.cs

12
src/AddIns/Misc/PackageManagement/Project/Src/OpenMSBuildProjects.cs

@ -19,16 +19,22 @@ namespace ICSharpCode.PackageManagement @@ -19,16 +19,22 @@ namespace ICSharpCode.PackageManagement
public MSBuildBasedProject FindProject(string name)
{
foreach (IProject project in projectService.GetOpenProjects()) {
if (IsProjectNameMatch(project.Name, name)) {
if (IsProjectNameMatch(project, name)) {
return project as MSBuildBasedProject;
}
}
return null;
}
bool IsProjectNameMatch(string a, string b)
bool IsProjectNameMatch(IProject project, string name)
{
return String.Equals(a, b, StringComparison.InvariantCultureIgnoreCase);
return IsMatchIgnoringCase(project.Name, name) ||
(project.FileName == name);
}
bool IsMatchIgnoringCase(string a, string b)
{
return String.Equals(a, b, StringComparison.OrdinalIgnoreCase);
}
}
}

1
src/AddIns/Misc/PackageManagement/Test/PackageManagement.Tests.csproj

@ -188,6 +188,7 @@ @@ -188,6 +188,7 @@
<Compile Include="Src\Helpers\TestableInstallProjectTemplatePackagesCommand.cs" />
<Compile Include="Src\Helpers\TestablePowerShellMissingConsoleHost.cs" />
<Compile Include="Src\InstallProjectTemplatePackagesCommandTests.cs" />
<Compile Include="Src\OpenMSBuildProjectsTests.cs" />
<Compile Include="Src\PackageManagementServiceProviderTests.cs" />
<Compile Include="Src\VirtualMethodUpdaterTests.cs" />
<Compile Include="Src\NewProjectsCreatedTests.cs" />

67
src/AddIns/Misc/PackageManagement/Test/Src/OpenMSBuildProjectsTests.cs

@ -0,0 +1,67 @@ @@ -0,0 +1,67 @@
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System;
using System.Collections.Generic;
using ICSharpCode.PackageManagement;
using ICSharpCode.SharpDevelop.Project;
using NUnit.Framework;
using PackageManagement.Tests.Helpers;
using Rhino.Mocks;
namespace PackageManagement.Tests
{
[TestFixture]
public class OpenMSBuildProjectsTests
{
OpenMSBuildProjects projects;
IPackageManagementProjectService fakeProjectService;
List<IProject> openProjects;
void CreateOpenMSBuildProjects()
{
fakeProjectService = MockRepository.GenerateStub<IPackageManagementProjectService>();
openProjects = new List<IProject>();
fakeProjectService.Stub(service => service.GetOpenProjects()).Return(openProjects);
projects = new OpenMSBuildProjects(fakeProjectService);
}
TestableProject AddProjectWithShortName(string projectName)
{
TestableProject project = ProjectHelper.CreateTestProject(projectName);
openProjects.Add(project);
return project;
}
TestableProject AddProjectWithFileName(string fileName)
{
TestableProject project = AddProjectWithShortName("Test");
project.FileName = fileName;
return project;
}
[Test]
public void FindProject_ProjectShortNameUsedAndProjectIsOpen_ReturnsProject()
{
CreateOpenMSBuildProjects();
MSBuildBasedProject expectedProject = AddProjectWithShortName("MyProject");
MSBuildBasedProject project = projects.FindProject("MyProject");
Assert.AreEqual(expectedProject, project);
}
[Test]
public void FindProject_ProjectFileNameUsedAndProjectIsOpen_ReturnsProject()
{
CreateOpenMSBuildProjects();
string fileName = @"d:\projects\MyProject\MyProject.csproj";
MSBuildBasedProject expectedProject = AddProjectWithFileName(fileName);
MSBuildBasedProject project = projects.FindProject(fileName);
Assert.AreEqual(expectedProject, project);
}
}
}
Loading…
Cancel
Save