Browse Source

Display only latest pre-release version from Get-Package cmdlet.

pull/53/merge
Matt Ward 12 years ago
parent
commit
320d8862e8
  1. 13
      src/AddIns/Misc/PackageManagement/Cmdlets/Project/Src/GetPackageCmdlet.cs
  2. 21
      src/AddIns/Misc/PackageManagement/Cmdlets/Test/Src/GetPackageCmdletTests.cs

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

@ -77,11 +77,16 @@ namespace ICSharpCode.PackageManagement.Cmdlets
protected override void ProcessRecord() protected override void ProcessRecord()
{ {
ValidateParameters(); ValidateParameters();
IEnumerable<IPackage> packages = GetFilteredPackages();
WritePackagesToOutputPipeline(packages);
}
IEnumerable<IPackage> GetFilteredPackages()
{
IQueryable<IPackage> packages = GetPackages(); IQueryable<IPackage> packages = GetPackages();
packages = OrderPackages(packages); packages = OrderPackages(packages);
packages = SelectPackageRange(packages); IEnumerable<IPackage> distinctPackages = packages.DistinctLast(PackageEqualityComparer.Id);
WritePackagesToOutputPipeline(packages); return SelectPackageRange(distinctPackages);
} }
void ValidateParameters() void ValidateParameters()
@ -119,7 +124,7 @@ namespace ICSharpCode.PackageManagement.Cmdlets
return packages.OrderBy(package => package.Id); return packages.OrderBy(package => package.Id);
} }
IQueryable<IPackage> SelectPackageRange(IQueryable<IPackage> packages) IEnumerable<IPackage> SelectPackageRange(IEnumerable<IPackage> packages)
{ {
if (skip.HasValue) { if (skip.HasValue) {
packages = packages.Skip(skip.Value); packages = packages.Skip(skip.Value);
@ -210,7 +215,7 @@ namespace ICSharpCode.PackageManagement.Cmdlets
return null; return null;
} }
void WritePackagesToOutputPipeline(IQueryable<IPackage> packages) void WritePackagesToOutputPipeline(IEnumerable<IPackage> packages)
{ {
foreach (IPackage package in packages) { foreach (IPackage package in packages) {
WriteObject(package); WriteObject(package);

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

@ -568,5 +568,26 @@ namespace PackageManagement.Cmdlets.Tests
CollectionAssert.AreEqual(expectedPackages, actualPackages); CollectionAssert.AreEqual(expectedPackages, actualPackages);
} }
[Test]
public void ProcessRecord_ListAvailableAndPrereleasePackagesWithFilterWhenMultiplePackageVersions_ReturnsLatestPrereleasePackages()
{
CreateCmdlet();
FakePackageRepository repository = fakeRegisteredPackageRepositories.FakePackageRepository;
repository.AddFakePackageWithVersion("B", "2.0.1-beta");
FakePackage expectedPackage = repository.AddFakePackageWithVersion("B", "2.1.0-beta");
EnableListAvailableParameter();
EnablePrereleaseParameter();
SetFilterParameter("B");
RunCmdlet();
List<object> actualPackages = fakeCommandRuntime.ObjectsPassedToWriteObject;
var expectedPackages = new FakePackage[] {
expectedPackage
};
CollectionAssert.AreEqual(expectedPackages, actualPackages);
}
} }
} }

Loading…
Cancel
Save