Browse Source

Add ProjectName parameter to Get-Package cmdlet.

4.1
Matt Ward 14 years ago
parent
commit
f19b6eddf5
  1. 27
      src/AddIns/Misc/PackageManagement/Cmdlets/Project/Src/GetPackageCmdlet.cs
  2. 138
      src/AddIns/Misc/PackageManagement/Cmdlets/Test/Src/GetPackageCmdletTests.cs

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

@ -47,6 +47,9 @@ namespace ICSharpCode.PackageManagement.Cmdlets @@ -47,6 +47,9 @@ namespace ICSharpCode.PackageManagement.Cmdlets
[Parameter(Position = 0)]
public string Filter { get; set; }
[Parameter(Position = 1, ParameterSetName = "Project")]
public string ProjectName { get; set; }
[Parameter(ParameterSetName = "Available")]
[Parameter(ParameterSetName = "Updated")]
public string Source { get; set; }
@ -148,12 +151,26 @@ namespace ICSharpCode.PackageManagement.Cmdlets @@ -148,12 +151,26 @@ namespace ICSharpCode.PackageManagement.Cmdlets
IQueryable<IPackage> GetUpdatedPackages()
{
IPackageRepository aggregateRepository = registeredPackageRepositories.CreateAggregateRepository();
IPackageManagementProject project = ConsoleHost.GetProject(aggregateRepository, DefaultProject.Name);
IPackageManagementProject project = GetSelectedProject(aggregateRepository);
var updatedPackages = new UpdatedPackages(project, aggregateRepository);
updatedPackages.SearchTerms = Filter;
return updatedPackages.GetUpdatedPackages().AsQueryable();
}
IPackageManagementProject GetSelectedProject(IPackageRepository repository)
{
string projectName = GetSelectedProjectName();
return ConsoleHost.GetProject(repository, projectName);
}
string GetSelectedProjectName()
{
if (ProjectName != null) {
return ProjectName;
}
return DefaultProject.Name;
}
IQueryable<IPackage> GetRecentPackages()
{
IQueryable<IPackage> packages = registeredPackageRepositories.RecentPackageRepository.GetPackages();
@ -162,11 +179,17 @@ namespace ICSharpCode.PackageManagement.Cmdlets @@ -162,11 +179,17 @@ namespace ICSharpCode.PackageManagement.Cmdlets
IQueryable<IPackage> GetInstalledPackages()
{
IPackageManagementProject project = ConsoleHost.GetProject(Source, DefaultProject.Name);
IPackageManagementProject project = GetSelectedProject();
IQueryable<IPackage> packages = project.GetPackages();
return FilterPackages(packages);
}
IPackageManagementProject GetSelectedProject()
{
string projectName = GetSelectedProjectName();
return ConsoleHost.GetProject(Source, projectName);
}
void WritePackagesToOutputPipeline(IQueryable<IPackage> packages)
{
foreach (IPackage package in packages) {

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

@ -2,6 +2,7 @@ @@ -2,6 +2,7 @@
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System;
using System.Collections.Generic;
using System.Management.Automation;
using ICSharpCode.PackageManagement.Design;
using NuGet;
@ -55,7 +56,7 @@ namespace PackageManagement.Cmdlets.Tests @@ -55,7 +56,7 @@ namespace PackageManagement.Cmdlets.Tests
FakePackage AddPackageToProjectManagerLocalRepository(string id, string version)
{
var package = FakePackage.CreatePackageWithVersion(id, version);
FakePackage package = FakePackage.CreatePackageWithVersion(id, version);
fakeSolution.AddPackageToActiveProjectLocalRepository(package);
return package;
}
@ -99,14 +100,14 @@ namespace PackageManagement.Cmdlets.Tests @@ -99,14 +100,14 @@ namespace PackageManagement.Cmdlets.Tests
public void ProcessRecord_ListAvailablePackagesWhenDefaultPackageSourceHasOnePackage_OutputIsPackagesFromPackageSourceRepository()
{
CreateCmdlet();
var repository = fakeRegisteredPackageRepositories.FakePackageRepository;
FakePackageRepository repository = fakeRegisteredPackageRepositories.FakePackageRepository;
repository.AddFakePackage("Test");
EnableListAvailableParameter();
RunCmdlet();
var actualPackages = fakeCommandRuntime.ObjectsPassedToWriteObject;
var expectedPackages = repository.FakePackages;
List<object> actualPackages = fakeCommandRuntime.ObjectsPassedToWriteObject;
List<FakePackage> expectedPackages = repository.FakePackages;
CollectionAssert.AreEqual(expectedPackages, actualPackages);
}
@ -116,14 +117,14 @@ namespace PackageManagement.Cmdlets.Tests @@ -116,14 +117,14 @@ namespace PackageManagement.Cmdlets.Tests
{
CreateCmdlet();
fakeConsoleHost.DefaultProject = null;
var repository = fakeRegisteredPackageRepositories.FakePackageRepository;
FakePackageRepository repository = fakeRegisteredPackageRepositories.FakePackageRepository;
repository.AddFakePackage("Test");
EnableListAvailableParameter();
RunCmdlet();
var actualPackages = fakeCommandRuntime.ObjectsPassedToWriteObject;
var expectedPackages = repository.FakePackages;
List<object> actualPackages = fakeCommandRuntime.ObjectsPassedToWriteObject;
List<FakePackage> expectedPackages = repository.FakePackages;
CollectionAssert.AreEqual(expectedPackages, actualPackages);
}
@ -132,7 +133,7 @@ namespace PackageManagement.Cmdlets.Tests @@ -132,7 +133,7 @@ namespace PackageManagement.Cmdlets.Tests
public void ProcessRecord_ListAvailablePackagesWhenDefaultPackageSourceHasThreePackages_OutputIsPackagesFromPackageSourceRepository()
{
CreateCmdlet();
var repository = fakeRegisteredPackageRepositories.FakePackageRepository;
FakePackageRepository repository = fakeRegisteredPackageRepositories.FakePackageRepository;
repository.AddFakePackage("A");
repository.AddFakePackage("B");
repository.AddFakePackage("C");
@ -140,8 +141,8 @@ namespace PackageManagement.Cmdlets.Tests @@ -140,8 +141,8 @@ namespace PackageManagement.Cmdlets.Tests
EnableListAvailableParameter();
RunCmdlet();
var actualPackages = fakeCommandRuntime.ObjectsPassedToWriteObject;
var expectedPackages = repository.FakePackages;
List<object> actualPackages = fakeCommandRuntime.ObjectsPassedToWriteObject;
List<FakePackage> expectedPackages = repository.FakePackages;
CollectionAssert.AreEqual(expectedPackages, actualPackages);
}
@ -150,14 +151,14 @@ namespace PackageManagement.Cmdlets.Tests @@ -150,14 +151,14 @@ namespace PackageManagement.Cmdlets.Tests
public void ProcessRecord_ListAvailablePackagesWhenDefaultPackageSourceHasTwoPackages_PackagesAreSortedById()
{
CreateCmdlet();
var repository = fakeRegisteredPackageRepositories.FakePackageRepository;
var packageB = repository.AddFakePackage("B");
var packageA = repository.AddFakePackage("A");
FakePackageRepository repository = fakeRegisteredPackageRepositories.FakePackageRepository;
FakePackage packageB = repository.AddFakePackage("B");
FakePackage packageA = repository.AddFakePackage("A");
EnableListAvailableParameter();
RunCmdlet();
var actualPackages = fakeCommandRuntime.ObjectsPassedToWriteObject;
List<object> actualPackages = fakeCommandRuntime.ObjectsPassedToWriteObject;
var expectedPackages = new FakePackage[] {
packageA,
packageB
@ -170,13 +171,13 @@ namespace PackageManagement.Cmdlets.Tests @@ -170,13 +171,13 @@ namespace PackageManagement.Cmdlets.Tests
public void ProcessRecord_ListAvailablePackagesWhenNoPackageSourceSpecified_PackageSourceTakenFromConsoleHost()
{
CreateCmdlet();
var source = AddPackageSourceToConsoleHost();
PackageSource source = AddPackageSourceToConsoleHost();
fakeConsoleHost.PackageSourceToReturnFromGetActivePackageSource = source;
EnableListAvailableParameter();
RunCmdlet();
var actualSource = fakeRegisteredPackageRepositories.PackageSourcePassedToCreateRepository;
PackageSource actualSource = fakeRegisteredPackageRepositories.PackageSourcePassedToCreateRepository;
Assert.AreEqual(source, actualSource);
}
@ -190,8 +191,8 @@ namespace PackageManagement.Cmdlets.Tests @@ -190,8 +191,8 @@ namespace PackageManagement.Cmdlets.Tests
RunCmdlet();
var actualPackages = fakeCommandRuntime.ObjectsPassedToWriteObject;
var expectedPackages = fakeConsoleHost.FakeProject.FakePackages;
List<object> actualPackages = fakeCommandRuntime.ObjectsPassedToWriteObject;
List<FakePackage> expectedPackages = fakeConsoleHost.FakeProject.FakePackages;
Assert.AreEqual(expectedPackages, actualPackages);
}
@ -203,7 +204,7 @@ namespace PackageManagement.Cmdlets.Tests @@ -203,7 +204,7 @@ namespace PackageManagement.Cmdlets.Tests
RunCmdlet();
var actualSource = fakeConsoleHost.PackageSourcePassedToGetProject;
string actualSource = fakeConsoleHost.PackageSourcePassedToGetProject;
Assert.IsNull(actualSource);
}
@ -212,12 +213,12 @@ namespace PackageManagement.Cmdlets.Tests @@ -212,12 +213,12 @@ namespace PackageManagement.Cmdlets.Tests
public void ProcessRecord_NoParametersPassed_DefaultProjectInConsoleHostUsedToCreateProject()
{
CreateCmdlet();
var project = AddDefaultProjectToConsoleHost();
TestableProject project = AddDefaultProjectToConsoleHost();
project.Name = "MyProject";
RunCmdlet();
var actualProjectName = fakeConsoleHost.ProjectNamePassedToGetProject;
string actualProjectName = fakeConsoleHost.ProjectNamePassedToGetProject;
Assert.AreEqual("MyProject", actualProjectName);
}
@ -227,12 +228,12 @@ namespace PackageManagement.Cmdlets.Tests @@ -227,12 +228,12 @@ namespace PackageManagement.Cmdlets.Tests
{
CreateCmdlet();
AddPackageToProjectManagerLocalRepository("1.0.0.0");
var updatedPackage = AddPackageToAggregateRepository("1.1.0.0");
FakePackage updatedPackage = AddPackageToAggregateRepository("1.1.0.0");
EnableUpdatesParameter();
RunCmdlet();
var actualPackages = fakeCommandRuntime.ObjectsPassedToWriteObject;
List<object> actualPackages = fakeCommandRuntime.ObjectsPassedToWriteObject;
var expectedPackages = new FakePackage[] {
updatedPackage
};
@ -244,12 +245,12 @@ namespace PackageManagement.Cmdlets.Tests @@ -244,12 +245,12 @@ namespace PackageManagement.Cmdlets.Tests
public void ProcessRecord_UpdatedPackagesRequested_ActiveProjectNameUsedWhenCreatingProject()
{
CreateCmdlet();
var project = AddDefaultProjectToConsoleHost();
TestableProject project = AddDefaultProjectToConsoleHost();
project.Name = "Test";
EnableUpdatesParameter();
RunCmdlet();
var actualProjectName = fakeConsoleHost.ProjectNamePassedToGetProject;
string actualProjectName = fakeConsoleHost.ProjectNamePassedToGetProject;
Assert.AreEqual("Test", actualProjectName);
}
@ -261,8 +262,8 @@ namespace PackageManagement.Cmdlets.Tests @@ -261,8 +262,8 @@ namespace PackageManagement.Cmdlets.Tests
EnableUpdatesParameter();
RunCmdlet();
var actualRepository = fakeConsoleHost.PackageRepositoryPassedToGetProject;
var expectedRepository = fakeRegisteredPackageRepositories.FakeAggregateRepository;
IPackageRepository actualRepository = fakeConsoleHost.PackageRepositoryPassedToGetProject;
FakePackageRepository expectedRepository = fakeRegisteredPackageRepositories.FakeAggregateRepository;
Assert.AreEqual(expectedRepository, actualRepository);
}
@ -271,16 +272,16 @@ namespace PackageManagement.Cmdlets.Tests @@ -271,16 +272,16 @@ namespace PackageManagement.Cmdlets.Tests
public void ProcessRecord_ListAvailablePackagesAndFilterResults_PackagesReturnedMatchFilter()
{
CreateCmdlet();
var repository = fakeRegisteredPackageRepositories.FakePackageRepository;
FakePackageRepository repository = fakeRegisteredPackageRepositories.FakePackageRepository;
repository.AddFakePackage("A");
var package = repository.AddFakePackage("B");
FakePackage package = repository.AddFakePackage("B");
repository.AddFakePackage("C");
EnableListAvailableParameter();
SetFilterParameter("B");
RunCmdlet();
var actualPackages = fakeCommandRuntime.ObjectsPassedToWriteObject;
List<object> actualPackages = fakeCommandRuntime.ObjectsPassedToWriteObject;
var expectedPackages = new FakePackage[] {
package
};
@ -295,12 +296,12 @@ namespace PackageManagement.Cmdlets.Tests @@ -295,12 +296,12 @@ namespace PackageManagement.Cmdlets.Tests
AddPackageSourceToConsoleHost();
fakeSolution.AddPackageToActiveProjectLocalRepository("A");
var package = fakeSolution.AddPackageToActiveProjectLocalRepository("B");
FakePackage package = fakeSolution.AddPackageToActiveProjectLocalRepository("B");
SetFilterParameter("B");
RunCmdlet();
var actualPackages = fakeCommandRuntime.ObjectsPassedToWriteObject;
List<object> actualPackages = fakeCommandRuntime.ObjectsPassedToWriteObject;
var expectedPackages = new FakePackage[] {
package
};
@ -315,13 +316,13 @@ namespace PackageManagement.Cmdlets.Tests @@ -315,13 +316,13 @@ namespace PackageManagement.Cmdlets.Tests
AddPackageToProjectManagerLocalRepository("A", "1.0.0.0");
AddPackageToAggregateRepository("A", "1.1.0.0");
AddPackageToProjectManagerLocalRepository("B", "2.0.0.0");
var updatedPackage = AddPackageToAggregateRepository("B", "2.1.0.0");
FakePackage updatedPackage = AddPackageToAggregateRepository("B", "2.1.0.0");
EnableUpdatesParameter();
SetFilterParameter("B");
RunCmdlet();
var actualPackages = fakeCommandRuntime.ObjectsPassedToWriteObject;
List<object> actualPackages = fakeCommandRuntime.ObjectsPassedToWriteObject;
var expectedPackages = new FakePackage[] {
updatedPackage
};
@ -335,13 +336,13 @@ namespace PackageManagement.Cmdlets.Tests @@ -335,13 +336,13 @@ namespace PackageManagement.Cmdlets.Tests
CreateCmdlet();
var expectedPackageSource = new PackageSource("http://sharpdevelop.com/packages");
fakeConsoleHost.PackageSourceToReturnFromGetActivePackageSource = expectedPackageSource;
var repository = fakeRegisteredPackageRepositories.FakePackageRepository;
FakePackageRepository repository = fakeRegisteredPackageRepositories.FakePackageRepository;
SetSourceParameter("http://sharpdevelop.com/packages");
EnableListAvailableParameter();
RunCmdlet();
var actualPackageSource = fakeRegisteredPackageRepositories.PackageSourcePassedToCreateRepository;
PackageSource actualPackageSource = fakeRegisteredPackageRepositories.PackageSourcePassedToCreateRepository;
Assert.AreEqual(expectedPackageSource, actualPackageSource);
}
@ -355,8 +356,8 @@ namespace PackageManagement.Cmdlets.Tests @@ -355,8 +356,8 @@ namespace PackageManagement.Cmdlets.Tests
RunCmdlet();
var actualPackageSource = fakeConsoleHost.PackageSourcePassedToGetProject;
var expectedPackageSource = "http://test";
string actualPackageSource = fakeConsoleHost.PackageSourcePassedToGetProject;
string expectedPackageSource = "http://test";
Assert.AreEqual(expectedPackageSource, actualPackageSource);
}
@ -370,7 +371,7 @@ namespace PackageManagement.Cmdlets.Tests @@ -370,7 +371,7 @@ namespace PackageManagement.Cmdlets.Tests
RunCmdlet();
var actualProjectName = fakeConsoleHost.ProjectNamePassedToGetProject;
string actualProjectName = fakeConsoleHost.ProjectNamePassedToGetProject;
Assert.AreEqual("MyProject", actualProjectName);
}
@ -380,14 +381,14 @@ namespace PackageManagement.Cmdlets.Tests @@ -380,14 +381,14 @@ namespace PackageManagement.Cmdlets.Tests
{
CreateCmdlet();
var recentPackageRepository = fakeRegisteredPackageRepositories.FakeRecentPackageRepository;
FakePackageRepository recentPackageRepository = fakeRegisteredPackageRepositories.FakeRecentPackageRepository;
recentPackageRepository.AddFakePackage("A");
EnableRecentParameter();
RunCmdlet();
var actualPackages = fakeCommandRuntime.ObjectsPassedToWriteObject;
var expectedPackages = recentPackageRepository.FakePackages;
List<object> actualPackages = fakeCommandRuntime.ObjectsPassedToWriteObject;
List<FakePackage> expectedPackages = recentPackageRepository.FakePackages;
Assert.AreEqual(expectedPackages, actualPackages);
}
@ -397,15 +398,15 @@ namespace PackageManagement.Cmdlets.Tests @@ -397,15 +398,15 @@ namespace PackageManagement.Cmdlets.Tests
{
CreateCmdlet();
var recentPackageRepository = fakeRegisteredPackageRepositories.FakeRecentPackageRepository;
FakePackageRepository recentPackageRepository = fakeRegisteredPackageRepositories.FakeRecentPackageRepository;
recentPackageRepository.AddFakePackage("A");
var packageB = recentPackageRepository.AddFakePackage("B");
FakePackage packageB = recentPackageRepository.AddFakePackage("B");
EnableRecentParameter();
SetFilterParameter("B");
RunCmdlet();
var actualPackages = fakeCommandRuntime.ObjectsPassedToWriteObject;
List<object> actualPackages = fakeCommandRuntime.ObjectsPassedToWriteObject;
var expectedPackages = new FakePackage[] {
packageB
};
@ -418,14 +419,14 @@ namespace PackageManagement.Cmdlets.Tests @@ -418,14 +419,14 @@ namespace PackageManagement.Cmdlets.Tests
{
CreateCmdlet();
AddPackageSourceToConsoleHost();
var packageA = fakeSolution.AddPackageToActiveProjectLocalRepository("A");
var packageB = fakeSolution.AddPackageToActiveProjectLocalRepository("B");
var packageC = fakeSolution.AddPackageToActiveProjectLocalRepository("C");
FakePackage packageA = fakeSolution.AddPackageToActiveProjectLocalRepository("A");
FakePackage packageB = fakeSolution.AddPackageToActiveProjectLocalRepository("B");
FakePackage packageC = fakeSolution.AddPackageToActiveProjectLocalRepository("C");
SetFilterParameter("B C");
RunCmdlet();
var actualPackages = fakeCommandRuntime.ObjectsPassedToWriteObject;
List<object> actualPackages = fakeCommandRuntime.ObjectsPassedToWriteObject;
var expectedPackages = new FakePackage[] {
packageB,
packageC
@ -457,16 +458,16 @@ namespace PackageManagement.Cmdlets.Tests @@ -457,16 +458,16 @@ namespace PackageManagement.Cmdlets.Tests
public void ProcessRecord_ListAvailableAndSkipFirstTwoPackages_ReturnsAllPackagesExceptionFirstTwo()
{
CreateCmdlet();
var repository = fakeRegisteredPackageRepositories.FakePackageRepository;
FakePackageRepository repository = fakeRegisteredPackageRepositories.FakePackageRepository;
repository.AddFakePackage("A");
repository.AddFakePackage("B");
var packageC = repository.AddFakePackage("C");
FakePackage packageC = repository.AddFakePackage("C");
EnableListAvailableParameter();
SetSkipParameter(2);
RunCmdlet();
var actualPackages = fakeCommandRuntime.ObjectsPassedToWriteObject;
List<object> actualPackages = fakeCommandRuntime.ObjectsPassedToWriteObject;
var expectedPackages = new FakePackage[] {
packageC
};
@ -487,16 +488,16 @@ namespace PackageManagement.Cmdlets.Tests @@ -487,16 +488,16 @@ namespace PackageManagement.Cmdlets.Tests
public void ProcessRecord_ListAvailableAndFirstTwo_ReturnsFirstTwoPackages()
{
CreateCmdlet();
var repository = fakeRegisteredPackageRepositories.FakePackageRepository;
var packageA = repository.AddFakePackage("A");
var packageB = repository.AddFakePackage("B");
FakePackageRepository repository = fakeRegisteredPackageRepositories.FakePackageRepository;
FakePackage packageA = repository.AddFakePackage("A");
FakePackage packageB = repository.AddFakePackage("B");
repository.AddFakePackage("C");
EnableListAvailableParameter();
SetFirstParameter(2);
RunCmdlet();
var actualPackages = fakeCommandRuntime.ObjectsPassedToWriteObject;
List<object> actualPackages = fakeCommandRuntime.ObjectsPassedToWriteObject;
var expectedPackages = new FakePackage[] {
packageA,
packageB
@ -513,5 +514,30 @@ namespace PackageManagement.Cmdlets.Tests @@ -513,5 +514,30 @@ namespace PackageManagement.Cmdlets.Tests
Assert.AreEqual(0, first);
}
[Test]
public void ProcessRecord_GetInstalledPackagesWhenProjectNameSpecified_ProjectNameParameterUsedToGetProject()
{
CreateCmdlet();
cmdlet.ProjectName = "Test";
RunCmdlet();
string projectName = fakeConsoleHost.ProjectNamePassedToGetProject;
Assert.AreEqual("Test", projectName);
}
[Test]
public void ProcessRecord_GetUpdatedPackagesWhenProjectNameSpecified_ProjectNameParameterUsedToGetProject()
{
CreateCmdlet();
cmdlet.ProjectName = "Test";
EnableUpdatesParameter();
RunCmdlet();
string projectName = fakeConsoleHost.ProjectNamePassedToGetProject;
Assert.AreEqual("Test", projectName);
}
}
}

Loading…
Cancel
Save