Browse Source

Support pre-release packages in Get-Package cmdlet.

pull/53/merge
Matt Ward 12 years ago
parent
commit
cb8e332ba7
  1. 11
      src/AddIns/Misc/PackageManagement/Cmdlets/Project/Src/GetPackageCmdlet.cs
  2. 45
      src/AddIns/Misc/PackageManagement/Cmdlets/Test/Src/GetPackageCmdletTests.cs
  3. 1
      src/AddIns/Misc/PackageManagement/Project/Src/Design/FakePackageRepository.cs

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

@ -44,6 +44,11 @@ namespace ICSharpCode.PackageManagement.Cmdlets @@ -44,6 +44,11 @@ namespace ICSharpCode.PackageManagement.Cmdlets
[Parameter(ParameterSetName = "Updated")]
public SwitchParameter Updates { get; set; }
[Parameter(ParameterSetName = "Available")]
[Parameter(ParameterSetName = "Updates")]
[Alias("Prerelease")]
public SwitchParameter IncludePrerelease { get; set; }
[Parameter(Position = 0)]
public string Filter { get; set; }
@ -140,7 +145,11 @@ namespace ICSharpCode.PackageManagement.Cmdlets @@ -140,7 +145,11 @@ namespace ICSharpCode.PackageManagement.Cmdlets
IQueryable<IPackage> FilterPackages(IQueryable<IPackage> packages)
{
return packages.Find(Filter);
IQueryable<IPackage> filteredPackages = packages.Find(Filter);
if (IncludePrerelease.IsPresent) {
return filteredPackages;
}
return filteredPackages.Where(package => package.IsLatestVersion);
}
IQueryable<IPackage> GetUpdatedPackages()

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

@ -50,6 +50,11 @@ namespace PackageManagement.Cmdlets.Tests @@ -50,6 +50,11 @@ namespace PackageManagement.Cmdlets.Tests
cmdlet.Updates = new SwitchParameter(true);
}
void EnablePrereleaseParameter()
{
cmdlet.IncludePrerelease = new SwitchParameter(true);
}
FakePackage AddPackageToSpecifiedProjectManagerLocalRepository(string id, string version)
{
FakePackage package = FakePackage.CreatePackageWithVersion(id, version);
@ -523,5 +528,45 @@ namespace PackageManagement.Cmdlets.Tests @@ -523,5 +528,45 @@ namespace PackageManagement.Cmdlets.Tests
Assert.AreEqual("Test", projectName);
}
[Test]
public void ProcessRecord_ListAvailableAndPrereleasePackagesWithFilter_ReturnsFilteredPrereleasePackages()
{
CreateCmdlet();
FakePackageRepository repository = fakeRegisteredPackageRepositories.FakePackageRepository;
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);
}
[Test]
public void ProcessRecord_ListAvailableWithFilterAndOnlineRepositoryHasPrereleasePackages_ReturnsNoPrereleasePackages()
{
CreateCmdlet();
FakePackageRepository repository = fakeRegisteredPackageRepositories.FakePackageRepository;
FakePackage expectedPackage = repository.AddFakePackageWithVersion("B", "2.1.0");
FakePackage package = repository.AddFakePackageWithVersion("B", "2.1.0-beta");
EnableListAvailableParameter();
SetFilterParameter("B");
RunCmdlet();
List<object> actualPackages = fakeCommandRuntime.ObjectsPassedToWriteObject;
var expectedPackages = new FakePackage[] {
expectedPackage
};
CollectionAssert.AreEqual(expectedPackages, actualPackages);
}
}
}

1
src/AddIns/Misc/PackageManagement/Project/Src/Design/FakePackageRepository.cs

@ -46,6 +46,7 @@ namespace ICSharpCode.PackageManagement.Design @@ -46,6 +46,7 @@ namespace ICSharpCode.PackageManagement.Design
public FakePackage AddFakePackageWithVersion(string packageId, string version)
{
var package = FakePackage.CreatePackageWithVersion(packageId, version);
package.IsLatestVersion = package.IsReleaseVersion();
FakePackages.Add(package);
return package;
}

Loading…
Cancel
Save