Browse Source

Change Get-Package cmdlet so if a project name is not set then return packages from the solution rather than the default project set in the package console.

pull/28/head
Matt Ward 13 years ago
parent
commit
179b2dc458
  1. 48
      src/AddIns/Misc/PackageManagement/Cmdlets/Project/Src/GetPackageCmdlet.cs
  2. 121
      src/AddIns/Misc/PackageManagement/Cmdlets/Test/Src/GetPackageCmdletTests.cs
  3. 5
      src/AddIns/Misc/PackageManagement/Project/Src/Design/FakePackageManagementProject.cs
  4. 16
      src/AddIns/Misc/PackageManagement/Project/Src/Design/FakePackageManagementSolution.cs

48
src/AddIns/Misc/PackageManagement/Cmdlets/Project/Src/GetPackageCmdlet.cs

@ -151,24 +151,36 @@ namespace ICSharpCode.PackageManagement.Cmdlets @@ -151,24 +151,36 @@ namespace ICSharpCode.PackageManagement.Cmdlets
IQueryable<IPackage> GetUpdatedPackages()
{
IPackageRepository aggregateRepository = registeredPackageRepositories.CreateAggregateRepository();
IPackageManagementProject project = GetSelectedProject(aggregateRepository);
var updatedPackages = new UpdatedPackages(project, aggregateRepository);
UpdatedPackages updatedPackages = CreateUpdatedPackages(aggregateRepository);
updatedPackages.SearchTerms = Filter;
return updatedPackages.GetUpdatedPackages().AsQueryable();
}
IPackageManagementProject GetSelectedProject(IPackageRepository repository)
UpdatedPackages CreateUpdatedPackages(IPackageRepository aggregateRepository)
{
string projectName = GetSelectedProjectName();
return ConsoleHost.GetProject(repository, projectName);
IPackageManagementProject project = GetSelectedProject(aggregateRepository);
if (project != null) {
return new UpdatedPackages(project, aggregateRepository);
}
return new UpdatedPackages(GetSolutionPackages(), aggregateRepository);
}
string GetSelectedProjectName()
IQueryable<IPackage> GetSolutionPackages()
{
if (ProjectName != null) {
return ProjectName;
return ConsoleHost.Solution.GetPackages();
}
IPackageManagementProject GetSelectedProject(IPackageRepository repository)
{
if (HasSelectedProjectName()) {
return ConsoleHost.GetProject(repository, ProjectName);
}
return DefaultProject.Name;
return null;
}
bool HasSelectedProjectName()
{
return ProjectName != null;
}
IQueryable<IPackage> GetRecentPackages()
@ -179,15 +191,25 @@ namespace ICSharpCode.PackageManagement.Cmdlets @@ -179,15 +191,25 @@ namespace ICSharpCode.PackageManagement.Cmdlets
IQueryable<IPackage> GetInstalledPackages()
{
IPackageManagementProject project = GetSelectedProject();
IQueryable<IPackage> packages = project.GetPackages();
IQueryable<IPackage> packages = GetPackagesFromSelectedProjectOrSolution();
return FilterPackages(packages);
}
IQueryable<IPackage> GetPackagesFromSelectedProjectOrSolution()
{
IPackageManagementProject project = GetSelectedProject();
if (project != null) {
return project.GetPackages();
}
return GetSolutionPackages();
}
IPackageManagementProject GetSelectedProject()
{
string projectName = GetSelectedProjectName();
return ConsoleHost.GetProject(Source, projectName);
if (HasSelectedProjectName()) {
return ConsoleHost.GetProject(Source, ProjectName);
}
return null;
}
void WritePackagesToOutputPipeline(IQueryable<IPackage> packages)

121
src/AddIns/Misc/PackageManagement/Cmdlets/Test/Src/GetPackageCmdletTests.cs

@ -27,7 +27,8 @@ namespace PackageManagement.Cmdlets.Tests @@ -27,7 +27,8 @@ namespace PackageManagement.Cmdlets.Tests
fakeSolution = new FakePackageManagementSolution();
fakeRegisteredPackageRepositories = cmdlet.FakeRegisteredPackageRepositories;
fakeConsoleHost = cmdlet.FakePackageManagementConsoleHost;
fakeConsoleHost.FakeProject = fakeSolution.FakeActiveProject;
fakeConsoleHost.FakeSolution = fakeSolution;
fakeConsoleHost.FakeProject = new FakePackageManagementProject();
fakeCommandRuntime = cmdlet.FakeCommandRuntime;
fakeTerminatingError = cmdlet.FakeCmdletTerminatingError;
@ -49,15 +50,10 @@ namespace PackageManagement.Cmdlets.Tests @@ -49,15 +50,10 @@ namespace PackageManagement.Cmdlets.Tests
cmdlet.Updates = new SwitchParameter(true);
}
FakePackage AddPackageToProjectManagerLocalRepository(string version)
{
return AddPackageToProjectManagerLocalRepository("Test", version);
}
FakePackage AddPackageToProjectManagerLocalRepository(string id, string version)
FakePackage AddPackageToSpecifiedProjectManagerLocalRepository(string id, string version)
{
FakePackage package = FakePackage.CreatePackageWithVersion(id, version);
fakeSolution.AddPackageToActiveProjectLocalRepository(package);
fakeConsoleHost.FakeProject.FakePackages.Add(package);
return package;
}
@ -95,6 +91,11 @@ namespace PackageManagement.Cmdlets.Tests @@ -95,6 +91,11 @@ namespace PackageManagement.Cmdlets.Tests
{
cmdlet.First = first;
}
void AddPackageWithVersionToSolution(string version)
{
fakeSolution.AddPackageToSharedLocalRepository("Test", version);
}
[Test]
public void ProcessRecord_ListAvailablePackagesWhenDefaultPackageSourceHasOnePackage_OutputIsPackagesFromPackageSourceRepository()
@ -183,25 +184,25 @@ namespace PackageManagement.Cmdlets.Tests @@ -183,25 +184,25 @@ namespace PackageManagement.Cmdlets.Tests
}
[Test]
public void ProcessRecord_NoParametersPassed_ReturnsPackagesInstalledForProjectSelectedInConsole()
public void ProcessRecord_NoParametersPassed_ReturnsPackagesInstalledForSolution()
{
CreateCmdlet();
fakeSolution.AddPackageToActiveProjectLocalRepository("One");
fakeSolution.AddPackageToActiveProjectLocalRepository("Two");
fakeSolution.AddPackageToSharedLocalRepository("One");
fakeSolution.AddPackageToSharedLocalRepository("Two");
RunCmdlet();
List<object> actualPackages = fakeCommandRuntime.ObjectsPassedToWriteObject;
List<FakePackage> expectedPackages = fakeConsoleHost.FakeProject.FakePackages;
List<FakePackage> expectedPackages = fakeSolution.FakeInstalledPackages;
Assert.AreEqual(expectedPackages, actualPackages);
}
[Test]
public void ProcessRecord_NoParametersPassed_NullPackageSourceUsedWhenCreatingProject()
public void ProcessRecord_ProjectNameSpecified_NullPackageSourceUsedWhenCreatingProject()
{
CreateCmdlet();
cmdlet.ProjectName = "Test";
RunCmdlet();
string actualSource = fakeConsoleHost.PackageSourcePassedToGetProject;
@ -210,11 +211,10 @@ namespace PackageManagement.Cmdlets.Tests @@ -210,11 +211,10 @@ namespace PackageManagement.Cmdlets.Tests
}
[Test]
public void ProcessRecord_NoParametersPassed_DefaultProjectInConsoleHostUsedToCreateProject()
public void ProcessRecord_ProjectNameSpecified_ProjectNameUsedToCreateProject()
{
CreateCmdlet();
TestableProject project = AddDefaultProjectToConsoleHost();
project.Name = "MyProject";
cmdlet.ProjectName = "MyProject";
RunCmdlet();
@ -224,10 +224,10 @@ namespace PackageManagement.Cmdlets.Tests @@ -224,10 +224,10 @@ namespace PackageManagement.Cmdlets.Tests
}
[Test]
public void ProcessRecord_UpdatedPackagesRequested_ReturnsUpdatedPackagesForActiveProject()
public void ProcessRecord_UpdatedPackagesRequestedAndNoProjectName_ReturnsUpdatedPackagesForSolution()
{
CreateCmdlet();
AddPackageToProjectManagerLocalRepository("1.0.0.0");
AddPackageWithVersionToSolution("1.0.0.0");
FakePackage updatedPackage = AddPackageToAggregateRepository("1.1.0.0");
EnableUpdatesParameter();
@ -242,24 +242,11 @@ namespace PackageManagement.Cmdlets.Tests @@ -242,24 +242,11 @@ namespace PackageManagement.Cmdlets.Tests
}
[Test]
public void ProcessRecord_UpdatedPackagesRequested_ActiveProjectNameUsedWhenCreatingProject()
{
CreateCmdlet();
TestableProject project = AddDefaultProjectToConsoleHost();
project.Name = "Test";
EnableUpdatesParameter();
RunCmdlet();
string actualProjectName = fakeConsoleHost.ProjectNamePassedToGetProject;
Assert.AreEqual("Test", actualProjectName);
}
[Test]
public void ProcessRecord_UpdatedPackagesRequested_AggregateRepositoryUsedWhenCreatingProject()
public void ProcessRecord_UpdatedPackagesRequestedAndProjectNameSpecified_AggregateRepositoryUsedWhenCreatingProject()
{
CreateCmdlet();
EnableUpdatesParameter();
cmdlet.ProjectName = "MyProject";
RunCmdlet();
IPackageRepository actualRepository = fakeConsoleHost.PackageRepositoryPassedToGetProject;
@ -290,13 +277,13 @@ namespace PackageManagement.Cmdlets.Tests @@ -290,13 +277,13 @@ namespace PackageManagement.Cmdlets.Tests
}
[Test]
public void ProcessRecord_FilterParameterPassed_InstalledPackagesAreFiltered()
public void ProcessRecord_FilterParameterPassed_InstalledPackagesInSolutionAreFiltered()
{
CreateCmdlet();
AddPackageSourceToConsoleHost();
fakeSolution.AddPackageToActiveProjectLocalRepository("A");
FakePackage package = fakeSolution.AddPackageToActiveProjectLocalRepository("B");
fakeSolution.AddPackageToSharedLocalRepository("A");
FakePackage package = fakeSolution.AddPackageToSharedLocalRepository("B");
SetFilterParameter("B");
RunCmdlet();
@ -310,16 +297,38 @@ namespace PackageManagement.Cmdlets.Tests @@ -310,16 +297,38 @@ namespace PackageManagement.Cmdlets.Tests
}
[Test]
public void ProcessRecord_UpdatedPackagesRequestedWithFilter_ReturnsFilteredUpdatedPackages()
public void ProcessRecord_UpdatedPackagesRequestedWithFilter_ReturnsFilteredUpdatedPackagesFromSolution()
{
CreateCmdlet();
fakeSolution.AddPackageToSharedLocalRepository("A", "1.0.0.0");
AddPackageToAggregateRepository("A", "1.1.0.0");
fakeSolution.AddPackageToSharedLocalRepository("B", "2.0.0.0");
FakePackage updatedPackage = AddPackageToAggregateRepository("B", "2.1.0.0");
EnableUpdatesParameter();
SetFilterParameter("B");
RunCmdlet();
List<object> actualPackages = fakeCommandRuntime.ObjectsPassedToWriteObject;
var expectedPackages = new FakePackage[] {
updatedPackage
};
CollectionAssert.AreEqual(expectedPackages, actualPackages);
}
[Test]
public void ProcessRecord_UpdatedPackagesRequestedWithFilterAndProjectName_ReturnsFilteredUpdatedPackagesFromProject()
{
CreateCmdlet();
AddPackageToProjectManagerLocalRepository("A", "1.0.0.0");
AddPackageToSpecifiedProjectManagerLocalRepository("A", "1.0.0.0");
AddPackageToAggregateRepository("A", "1.1.0.0");
AddPackageToProjectManagerLocalRepository("B", "2.0.0.0");
AddPackageToSpecifiedProjectManagerLocalRepository("B", "2.0.0.0");
FakePackage updatedPackage = AddPackageToAggregateRepository("B", "2.1.0.0");
EnableUpdatesParameter();
SetFilterParameter("B");
cmdlet.ProjectName = "MyProject";
RunCmdlet();
List<object> actualPackages = fakeCommandRuntime.ObjectsPassedToWriteObject;
@ -328,6 +337,7 @@ namespace PackageManagement.Cmdlets.Tests @@ -328,6 +337,7 @@ namespace PackageManagement.Cmdlets.Tests
};
CollectionAssert.AreEqual(expectedPackages, actualPackages);
Assert.AreEqual("MyProject", fakeConsoleHost.ProjectNamePassedToGetProject);
}
[Test]
@ -348,12 +358,12 @@ namespace PackageManagement.Cmdlets.Tests @@ -348,12 +358,12 @@ namespace PackageManagement.Cmdlets.Tests
}
[Test]
public void ProcessRecord_JustSourceParameterPassed_ProjectCreatedForPackageSourceSpecifiedByParameter()
public void ProcessRecord_SourceParameterAndProjectNamePassed_ProjectCreatedForPackageSourceSpecifiedByParameter()
{
CreateCmdlet();
SetSourceParameter("http://test");
cmdlet.ProjectName = "MyProject";
RunCmdlet();
string actualPackageSource = fakeConsoleHost.PackageSourcePassedToGetProject;
@ -363,10 +373,10 @@ namespace PackageManagement.Cmdlets.Tests @@ -363,10 +373,10 @@ namespace PackageManagement.Cmdlets.Tests
}
[Test]
public void ProcessRecord_JustSourceParameterPassed_ProjectCreatedForPackageSource()
public void ProcessRecord_SourceParameterAndProjectNamePassed_ProjectCreatedForPackageSource()
{
CreateCmdlet();
fakeConsoleHost.DefaultProject.Name = "MyProject";
cmdlet.ProjectName = "MyProject";
SetSourceParameter("http://test");
RunCmdlet();
@ -419,9 +429,9 @@ namespace PackageManagement.Cmdlets.Tests @@ -419,9 +429,9 @@ namespace PackageManagement.Cmdlets.Tests
{
CreateCmdlet();
AddPackageSourceToConsoleHost();
FakePackage packageA = fakeSolution.AddPackageToActiveProjectLocalRepository("A");
FakePackage packageB = fakeSolution.AddPackageToActiveProjectLocalRepository("B");
FakePackage packageC = fakeSolution.AddPackageToActiveProjectLocalRepository("C");
FakePackage packageA = fakeSolution.AddPackageToSharedLocalRepository("A");
FakePackage packageB = fakeSolution.AddPackageToSharedLocalRepository("B");
FakePackage packageC = fakeSolution.AddPackageToSharedLocalRepository("C");
SetFilterParameter("B C");
RunCmdlet();
@ -527,6 +537,23 @@ namespace PackageManagement.Cmdlets.Tests @@ -527,6 +537,23 @@ namespace PackageManagement.Cmdlets.Tests
Assert.AreEqual("Test", projectName);
}
[Test]
public void ProcessRecord_GetInstalledPackagesWhenProjectNameSpecified_ReturnsPackagesInstalledForProject()
{
CreateCmdlet();
var project = new FakePackageManagementProject();
fakeConsoleHost.FakeProject = project;
project.AddFakePackage("One");
project.AddFakePackage("Two");
cmdlet.ProjectName = "Test";
RunCmdlet();
List<object> actualPackages = fakeCommandRuntime.ObjectsPassedToWriteObject;
List<FakePackage> expectedPackages = project.FakePackages;
Assert.AreEqual(expectedPackages, actualPackages);
}
[Test]
public void ProcessRecord_GetUpdatedPackagesWhenProjectNameSpecified_ProjectNameParameterUsedToGetProject()
{

5
src/AddIns/Misc/PackageManagement/Project/Src/Design/FakePackageManagementProject.cs

@ -203,5 +203,10 @@ namespace ICSharpCode.PackageManagement.Design @@ -203,5 +203,10 @@ namespace ICSharpCode.PackageManagement.Design
{
return FakePackagesInReverseDependencyOrder;
}
public void AddFakePackage(string id)
{
FakePackages.Add(new FakePackage(id));
}
}
}

16
src/AddIns/Misc/PackageManagement/Project/Src/Design/FakePackageManagementSolution.cs

@ -108,7 +108,7 @@ namespace ICSharpCode.PackageManagement.Design @@ -108,7 +108,7 @@ namespace ICSharpCode.PackageManagement.Design
public string FileName { get; set; }
public List<IPackage> FakeInstalledPackages = new List<IPackage>();
public List<FakePackage> FakeInstalledPackages = new List<FakePackage>();
public bool IsPackageInstalled(IPackage package)
{
@ -158,5 +158,19 @@ namespace ICSharpCode.PackageManagement.Design @@ -158,5 +158,19 @@ namespace ICSharpCode.PackageManagement.Design
FakeProjects.Add(project);
return project;
}
public FakePackage AddPackageToSharedLocalRepository(string packageId, string version)
{
var package = new FakePackage(packageId, version);
FakeInstalledPackages.Add(package);
return package;
}
public FakePackage AddPackageToSharedLocalRepository(string packageId)
{
var package = new FakePackage(packageId);
FakeInstalledPackages.Add(package);
return package;
}
}
}

Loading…
Cancel
Save