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

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

@ -568,5 +568,26 @@ namespace PackageManagement.Cmdlets.Tests @@ -568,5 +568,26 @@ namespace PackageManagement.Cmdlets.Tests
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