Browse Source

Support AllVersions parameter with Get-Package cmdlet.

pull/53/merge
Matt Ward 13 years ago
parent
commit
3cd88717c3
  1. 16
      src/AddIns/Misc/PackageManagement/Cmdlets/Project/Src/GetPackageCmdlet.cs
  2. 44
      src/AddIns/Misc/PackageManagement/Cmdlets/Test/Src/GetPackageCmdletTests.cs

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

@ -49,6 +49,10 @@ namespace ICSharpCode.PackageManagement.Cmdlets @@ -49,6 +49,10 @@ namespace ICSharpCode.PackageManagement.Cmdlets
[Alias("Prerelease")]
public SwitchParameter IncludePrerelease { get; set; }
[Parameter(ParameterSetName = "Available")]
[Parameter(ParameterSetName = "Updated")]
public SwitchParameter AllVersions { get; set; }
[Parameter(Position = 0)]
public string Filter { get; set; }
@ -91,7 +95,7 @@ namespace ICSharpCode.PackageManagement.Cmdlets @@ -91,7 +95,7 @@ namespace ICSharpCode.PackageManagement.Cmdlets
IEnumerable<IPackage> DistinctPackagesById(IQueryable<IPackage> packages)
{
if (ListAvailable.IsPresent) {
if (ListAvailable && !AllVersions) {
return packages.DistinctLast(PackageEqualityComparer.Id);
}
return packages;
@ -106,7 +110,7 @@ namespace ICSharpCode.PackageManagement.Cmdlets @@ -106,7 +110,7 @@ namespace ICSharpCode.PackageManagement.Cmdlets
bool ParametersRequireProject()
{
if (ListAvailable.IsPresent) {
if (ListAvailable) {
return false;
}
return true;
@ -119,9 +123,9 @@ namespace ICSharpCode.PackageManagement.Cmdlets @@ -119,9 +123,9 @@ namespace ICSharpCode.PackageManagement.Cmdlets
IQueryable<IPackage> GetPackages()
{
if (ListAvailable.IsPresent) {
if (ListAvailable) {
return GetAvailablePackages();
} else if (Updates.IsPresent) {
} else if (Updates) {
return GetUpdatedPackages();
}
return GetInstalledPackages();
@ -159,7 +163,7 @@ namespace ICSharpCode.PackageManagement.Cmdlets @@ -159,7 +163,7 @@ namespace ICSharpCode.PackageManagement.Cmdlets
IQueryable<IPackage> FilterPackages(IQueryable<IPackage> packages)
{
IQueryable<IPackage> filteredPackages = packages.Find(Filter);
if (IncludePrerelease.IsPresent) {
if (IncludePrerelease || AllVersions) {
return filteredPackages;
}
return filteredPackages.Where(package => package.IsLatestVersion);
@ -171,7 +175,7 @@ namespace ICSharpCode.PackageManagement.Cmdlets @@ -171,7 +175,7 @@ namespace ICSharpCode.PackageManagement.Cmdlets
UpdatedPackages updatedPackages = CreateUpdatedPackages(repository);
updatedPackages.SearchTerms = Filter;
return updatedPackages
.GetUpdatedPackages(IncludePrerelease.IsPresent)
.GetUpdatedPackages(IncludePrerelease)
.AsQueryable();
}

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

@ -55,6 +55,11 @@ namespace PackageManagement.Cmdlets.Tests @@ -55,6 +55,11 @@ namespace PackageManagement.Cmdlets.Tests
cmdlet.IncludePrerelease = new SwitchParameter(true);
}
void EnableAllVersionsParameter()
{
cmdlet.AllVersions = new SwitchParameter(true);
}
FakePackage AddPackageToSpecifiedProjectManagerLocalRepository(string id, string version)
{
FakePackage package = FakePackage.CreatePackageWithVersion(id, version);
@ -446,7 +451,7 @@ namespace PackageManagement.Cmdlets.Tests @@ -446,7 +451,7 @@ namespace PackageManagement.Cmdlets.Tests
FakePackageRepository repository = fakeRegisteredPackageRepositories.FakePackageRepository;
repository.AddFakePackage("A");
repository.AddFakePackage("B");
FakePackage packageC = repository.AddFakePackage("C");
FakePackage packageC = repository.AddFakePackage("C");
EnableListAvailableParameter();
SetSkipParameter(2);
@ -658,5 +663,42 @@ namespace PackageManagement.Cmdlets.Tests @@ -658,5 +663,42 @@ namespace PackageManagement.Cmdlets.Tests
CollectionAssert.AreEqual(expectedPackages, actualPackages);
}
[Test]
public void ProcessRecord_ListAvailablePackagesAndTwoVersionsOfSamePackageInOnlineRepository_OutputIsLatestPackageVersion()
{
CreateCmdlet();
AddPackageToSelectedRepositoryInConsoleHost("Test", "1.0");
FakePackage expectedPackage = AddPackageToSelectedRepositoryInConsoleHost("Test", "1.1");
EnableListAvailableParameter();
var expectedPackages = new FakePackage[] {
expectedPackage,
};
RunCmdlet();
List<object> actualPackages = fakeCommandRuntime.ObjectsPassedToWriteObject;
CollectionAssert.AreEqual(expectedPackages, actualPackages);
}
[Test]
public void ProcessRecord_ListAvailablePackagesAndAllVersionsAndTwoVersionsOfSamePackageInOnlineRepository_OutputIsAllPackageVersions()
{
CreateCmdlet();
FakePackage expectedPackage1 = AddPackageToSelectedRepositoryInConsoleHost("Test", "1.0");
expectedPackage1.IsLatestVersion = false;
FakePackage expectedPackage2 = AddPackageToSelectedRepositoryInConsoleHost("Test", "1.1");
EnableListAvailableParameter();
EnableAllVersionsParameter();
var expectedPackages = new FakePackage[] {
expectedPackage1,
expectedPackage2
};
RunCmdlet();
List<object> actualPackages = fakeCommandRuntime.ObjectsPassedToWriteObject;
CollectionAssert.AreEqual(expectedPackages, actualPackages);
}
}
}

Loading…
Cancel
Save